diff --git a/src/main/java/Enigma/Main.java b/src/main/java/Enigma/Main.java
index 53b9f3becf1ccb85df23add6b945f89a081ea878..2bfc594ce53b57275c180938447de3ea3a866f17 100644
--- a/src/main/java/Enigma/Main.java
+++ b/src/main/java/Enigma/Main.java
@@ -1,26 +1,14 @@
 package Enigma;
 
-import Enigma.model.Funkraum;
+import Enigma.model.Codebuch;
+import Enigma.model.DatenbankSqlite;
+import Enigma.model.Morsecode;
 
-import java.io.IOException;
+import java.sql.SQLException;
 
 public class Main {
 
-    public static void main(String[] args) {
-        Funkraum fr = new Funkraum();
-        try {
-            fr.sendeFunkspruch("Testen wir doch mal das ganze", "deisold");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        try {
-            String[] funkspruch = fr.empfangeFunkspruch("deisold");
-            System.out.println("Empfangen: " + funkspruch[0]);
-            System.out.println("Nachricht: " + funkspruch[1]);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+    public static void main(String[] args) throws SQLException {
         App.main(args);
     }
-
 }
diff --git a/src/main/java/Enigma/model/Codebuch.java b/src/main/java/Enigma/model/Codebuch.java
index a257417737d8e0d29d3751fcfda8883a0f2e4b07..cf471ec284c4492866f8d9616c0de6adfcc956a1 100644
--- a/src/main/java/Enigma/model/Codebuch.java
+++ b/src/main/java/Enigma/model/Codebuch.java
@@ -5,7 +5,7 @@ package Enigma.model;
  * Jeder Enigma gehörte auch ein Codebuch bei, welches notwenidg war um die Nachrichten zu ver/entschlüsseln.
  * Im Codebuch standen für jeden Tag des Monats die notwendigen Einstellungen welche vorgenommen werden
  * mussten um die Texte zu ver/entschlüsseln.
- * Hiernach wurden die Walzen eingesetzt, die Ringe für den Rücksprung der Walzen gesetzt und deren Grundeinstellung
+ * Hiernach wurden die Walzen eingesetzt, die Ringe für den Rücksprung der Walze gesetzt und deren Grundeinstellung
  * vorgenommen.
  * Bei der Enigma um welche es hier geht (Enigma I) gab es zusätzlich ein Steckbrett, welches ebenfalls im Codebuch
  * festgelegt war.
diff --git a/src/main/java/Enigma/model/DatenbankSqlite.java b/src/main/java/Enigma/model/DatenbankSqlite.java
index d065c5292e92500800aac22f828b6518c2bafb27..891c011a036f01b038400dbb808d65c11a0b8f43 100644
--- a/src/main/java/Enigma/model/DatenbankSqlite.java
+++ b/src/main/java/Enigma/model/DatenbankSqlite.java
@@ -1,6 +1,8 @@
 package Enigma.model;
 
+import javax.swing.text.html.HTML;
 import java.sql.*;
+import java.util.Random;
 
 /**
  * Dies ist die SQLite Datenbank Klasse
@@ -60,4 +62,89 @@ public class DatenbankSqlite {
 
 		return cb;
 	}
+
+	//region Random New Codebuch generieren
+	/*
+	*//**
+	 * Setzt zufällige Codebuch Einträge in die SQLite Datenbank
+	 * Tag => int
+	 * Walzenlage => String w1,w2,w3
+	 * Ringstellung => String r1,r2,r3
+	 * Steckverbindungen => s0,s1,s2,s3,s4,s5,s6,s7,s8,s9
+	 *//*
+	public void autoGenCodebuch() throws SQLException {
+
+		Connection conn = connect();
+		conn.setAutoCommit(false);
+		PreparedStatement pstmtInsert = conn.prepareStatement("INSERT INTO table_codebuch (Tag, Walzenlage, Ringstellung, Steckverbindung) VALUES (?, ?, ?, ?);");
+		for (int i = 3; i < 32; i++) {
+			pstmtInsert.setInt(1, i);
+			pstmtInsert.setString(2, walzenlage());
+			pstmtInsert.setString(3, ringstellung());
+			pstmtInsert.setString(4, steckverbindung());
+			pstmtInsert.executeUpdate();
+		}
+
+		conn.commit();
+	}
+
+	*//**
+	 * Generiert einen String aus 3 Zufalls-Zahlen(zwischen 1 und 5)
+	 * die Zahlen sind durch Komma getrennt
+	 * @return String => walzenlage mit drei Kommaseparierten Zufallszahlen zwischen 1 und 5
+	 *//*
+	private static String walzenlage(){
+		String walzenlage;
+		Random random = new Random();
+		int[] w = new int[3];
+		for (int i = 0; i < 3; i++) {
+
+			w[i] = (random.nextInt(5))+1;
+			if (i==1&&w[0]==w[i])w[i]=(random.nextInt(5))+1;
+			if ((i==2&&w[0]==w[2])||(i==2&&w[1]==w[i]))w[i]=(random.nextInt(5))+1;
+		}
+		walzenlage= w[0]+","+w[1]+","+w[2];
+		return walzenlage;
+	}
+
+	*//**
+	 * Generiert einen String aus 3 Zufalls-Zahlen(zwischen 1 und 26)
+	 * die Zahlen sind durch Komma getrennt
+	 * @return String => ringstellung mit drei Kommaseparierten Zufallszahlen zwischen 1 und 26
+	 *//*
+	private static String ringstellung(){
+		String ringstellung;
+		Random random = new Random();
+		int[] w = new int[3];
+		for (int i = 0; i < 3; i++) {
+			w[i] = (random.nextInt(26))+1;
+		}
+		ringstellung= w[0]+","+w[1]+","+w[2];
+		return ringstellung;
+	}
+
+	*//**
+	 * Generiert einen String aus 10 * 2 unterschiedlichen Großbuchstaben
+	 * @return  String => 10 Buchstabenkombinationen mit Komma getrennt
+	 *//*
+	private static String steckverbindung(){
+		Random rnd = new Random();
+		String steckverbindung="";
+		char[] c = new char[2];
+		for (int i = 0; i < 10; i++) {
+			for (int j = 0; j < 2; j++) {
+				c[j]= (char) (rnd.nextInt(26) + 'A');
+				if (j==1) {
+					while (c[0] == c[j]) {
+						c[j] = (char) (rnd.nextInt(26) + 'A');
+					}
+				}
+			}
+			System.out.println(c[0]+" / "+c[1]);
+			steckverbindung+= ((""+c[0]) + (""+c[1]) +",");
+		}
+		steckverbindung= (String) steckverbindung.subSequence(0,steckverbindung.lastIndexOf(","));
+		return steckverbindung;
+	}*/
+	//endregion
 }
diff --git a/src/main/java/Enigma/model/Walze.java b/src/main/java/Enigma/model/Walze.java
new file mode 100644
index 0000000000000000000000000000000000000000..2d72adc6bf887c4593b4c591b2aaf1c7eba020de
--- /dev/null
+++ b/src/main/java/Enigma/model/Walze.java
@@ -0,0 +1,224 @@
+package Enigma.model;
+
+public class Walze {
+
+    Character buchstabe = null;
+    Character ringstellung = null;
+    int walzennr = 0;
+    int iPositionBuchstabe = 0;
+    int iPositionBuchstabeRe = 0;
+    Character[] walze = new Character[25];
+
+    /**
+     * Gibt die Parameter der Walze mit
+     *
+     * @param walzennr : int : Nummer der gewaehlten Walze
+     * @param buchstabe : Character : Grundeinstellung der Walze
+     * @param ringstellung : Character : Einstellung des Notch
+     */
+    public Walze(int walzennr, Character buchstabe, Character ringstellung) {
+        this.walzennr = walzennr;
+        this.buchstabe = buchstabe;
+        this.ringstellung = ringstellung;
+    }
+
+    /**
+     * @return buchstabe : Character : gibt den neuen Buchstaben zurueck
+     */
+    public char getBuchstabe() {
+        return buchstabe;
+    }
+
+    /**
+     * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen.
+     * Buchstaben werden automatisch in Grossbuchstaben umgewandelt.
+     * Im Fehlerfall wird die Grundeinstellung der Walze standardmaessig auf 'A' gesetzt.
+     *
+     * @param buchstabe : Character : Grundeinstellung der Walze
+     */
+    private void setBuchstabe(Character buchstabe) {
+        this.buchstabe.toUpperCase(buchstabe);
+
+        if(buchstabe.isLetter(buchstabe)) {
+            this.buchstabe = buchstabe;
+        } else {
+            this.buchstabe = 'A';
+        }
+
+    }
+
+    /**
+     * @return ringstellung : Character : gibt die neue Ringstellung zurueck
+     */
+    public char getRingstellung() {
+        return ringstellung;
+    }
+
+
+    /**
+     * Gibt die Initiale Ringstellung der Walze an.
+     * Es sind nur Zahlen von 1 - 26 zugelassen.
+     * Im Fehlerfall wird die Ringstellung standardmaessig auf '1' gesetzt.
+     *
+     * @param ringstellung : Character : Punkt an dem die Walze umspringt
+     */
+    private void setRingstellung(Character ringstellung) {
+
+        if(buchstabe.isDigit(ringstellung) && ringstellung > 0 && ringstellung <= 26) {
+            this.ringstellung = ringstellung;
+        } else {
+            this.ringstellung = '1';
+        }
+    }
+
+    /**
+     * @return walzennr : int : gibt die Walzennummer zurueck
+     */
+    public int getWalzennr() {
+        return walzennr;
+    }
+
+    /**
+     * Definiert die Walze. Es stehen fuenf Walze zur Auswahl.
+     *
+     * @param walzennr : int : setzt die Walzennummer
+     */
+    private void setWalzennr(int walzennr) {
+        if(walzennr > 0 && walzennr < 6) {
+            this.walzennr = walzennr;
+        } else {
+            System.err.println("Keine gültige Walzennummer");
+        }
+    }
+
+    /**
+     * Sortiert den Walzennummern das passenden Character-Array mittels switch zu.
+     *
+     * @return walze : Character[] : gibt die gewaehlte Walze zurueck
+     */
+    private Character[] walzenNummer() {
+
+        //Walze nach der Cheffrierung
+        Character[] walzeEins = {'E','K', 'M', 'F', 'L', 'G', 'D', 'Q', 'V', 'Z', 'N', 'T', 'O', 'W', 'Y', 'H', 'X', 'U', 'S', 'P', 'A', 'I', 'B', 'R', 'C', 'J'};
+        Character[] walzeZwei = {'A', 'J', 'D', 'K', 'S', 'I', 'R', 'U', 'X', 'B', 'L', 'H', 'W', 'T', 'M', 'C', 'Q', 'G', 'Z', 'N', 'P', 'Y', 'F', 'V', 'O', 'E'};
+        Character[] walzeDrei = {'B', 'D', 'F', 'H', 'J', 'L', 'C', 'P', 'R', 'T', 'X', 'V', 'Z', 'N', 'Y', 'E', 'I', 'W', 'G', 'A', 'K', 'M', 'U', 'S', 'Q', 'O'};
+        Character[] walzeVier = {'E', 'S', 'O', 'V', 'P', 'Z', 'J', 'A', 'Y', 'Q', 'U', 'I', 'R', 'H', 'X', 'L', 'N', 'F', 'T', 'G', 'K', 'D', 'C', 'M', 'W', 'B'};
+        Character[] walzeFuenf = {'V', 'Z', 'B', 'R', 'G', 'I', 'T', 'Y', 'U', 'P', 'S', 'D', 'N', 'H', 'L', 'X', 'A', 'W', 'M', 'J', 'Q', 'O', 'F', 'E', 'C', 'K'};
+
+        switch (getWalzennr()) {
+            case 1:
+                walze = walzeEins;
+                break;
+            case 2:
+                walze = walzeZwei;
+                break;
+            case 3:
+                walze = walzeDrei;
+                break;
+            case 4:
+                walze = walzeVier;
+                break;
+            case 5:
+                walze = walzeFuenf;
+                break;
+        }
+
+        return walze;
+    }
+
+    /**
+     * Ermittelt die Position des Buchstaben auf der Alphabetswalze, um die Position mit
+     * der Cheffrierung auf der gewaehlten Walze abgleichen zu koennen.
+     *
+     * @return iPositionBuchstabe : int : Position des Buchstaben im Array
+     */
+    public int positionBuchstabe() {
+
+        //Alphabetswalze
+        Character[] walzeAlpha = {'A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
+
+        int index = 0;
+
+        //Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze
+        for(index = 0; index < walzeAlpha.length; index++) {
+            if(buchstabe.equals(walzeAlpha[index])) {
+                iPositionBuchstabe = index;
+                break;
+            }
+        }
+
+        return iPositionBuchstabe;
+    }
+
+
+    /**
+     * Cheffriert den Buchstaben an der Position aus der Methode positionBuchstabe()
+     * anhand der gewaehlten Walze.
+     *
+     * @param iPositionBuchstabe : int : Position des zu cheffrierenden Buchstabens
+     * @param walze : Character[] : ausgewaehlte Walze
+     * @return cheffrierterBuchstabe : Character : cheffrierter Buchstabe
+     */
+    public Character codierterBuchstabe(int iPositionBuchstabe, Character[] walze) {
+        Character codierterBuchstabe = walze[iPositionBuchstabe];
+        return codierterBuchstabe;
+    }
+
+
+    /**
+     * Nimmt die Startposition, die aus der Walzeneinstellung geholt wird und
+     * erhoeht sie um eins.
+     * Die Variable wird ueberschrieben und zaehlt von nun an die Position mit.
+     * Ab Position 25 wird wieder bei 0 angefangen.
+     *
+     * @param iPositionBuchstabe : int : alte Position der Walze
+     * @return iPositionBuchstabe : int : neue Position der Walze
+     */
+    public int vorstellenDerWalze(int iPositionBuchstabe) {
+
+        if(iPositionBuchstabe == 25) {
+            iPositionBuchstabe = 0;
+        } else {
+            iPositionBuchstabe += 1;
+        }
+
+        return iPositionBuchstabe;
+    }
+
+    /**
+     * Ermittelt die Position des Buchstaben auf der gewaehlten Walze, um die Position mit
+     * der Cheffrierung auf der AlphaWalze abgleichen zu koennen.
+     *
+     * @param walzennr : int : gibt die gewaehlte Walze zurueck
+     * @return iPositionBuchstabeRe : int : Position des Buchstaben im Array
+     */
+    public int positionBuchstabeReverse(int walzennr) {
+
+        int index = 0;
+
+        //Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze
+        for(index = 0; index < walze.length; index++) {
+            if(buchstabe.equals(walze[index])) {
+                iPositionBuchstabeRe = index;
+                break;
+            }
+        }
+        return iPositionBuchstabeRe;
+    }
+
+    /**
+     * Cheffriert den Buchstaben an der Position aus der Methode positionBuchstabeReverse()
+     * anhand der AlphaWalze.
+     *
+     * @param iPositionBuchstabeRe : int : Position des zu cheffrierenden Buchstabens
+     * @return codierterBuchstabeRe : Character : cheffrierter Buchstabe
+     */
+    public Character codierterBuchstabeReverse(int iPositionBuchstabeRe) {
+        //Alphawalze
+        Character[] walzeAlpha = {'A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
+
+        Character codierterBuchstabeRe = walzeAlpha[iPositionBuchstabeRe];
+        return codierterBuchstabeRe;
+    }
+
+}
diff --git a/src/main/resources/Enigma/codebuch.sqlite b/src/main/resources/Enigma/codebuch.sqlite
index 7d4a703b04d15e43146dddaca53c1b8e3ea83877..78be5227db85283c0c20e3719303cb77e48e8cbf 100644
Binary files a/src/main/resources/Enigma/codebuch.sqlite and b/src/main/resources/Enigma/codebuch.sqlite differ