diff --git a/src/main/java/Enigma/App.java b/src/main/java/Enigma/App.java
index 1e8c80902cf8d08f3c1da4ff39b18a55028dac21..d166be1527024b2dbcf6c3d3c7442fd8e6cc3dc4 100644
--- a/src/main/java/Enigma/App.java
+++ b/src/main/java/Enigma/App.java
@@ -1,39 +1,112 @@
 package Enigma;
 
+import Enigma.model.*;
 import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
+import org.apache.http.HttpException;
 
 import java.io.IOException;
+import java.sql.SQLException;
+import java.time.LocalDate;
+import java.time.ZoneId;
 
 /**
  * JavaFX App
  */
 public class App extends Application {
 
-    private static Scene scene;
+	private static Scene scene;
+	private Codebuch cb;
+	private Hardware h;
 
-    @Override
-    public void start(Stage stage) throws IOException {
-        scene = new Scene(loadFXML("gui"));
-        stage.setScene(scene);
-        stage.show();
+	static void setRoot(String fxml) throws IOException {
+		scene.setRoot(loadFXML(fxml));
+	}
 
-    }
+	private static Parent loadFXML(String fxml) throws IOException {
+		FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml"));
+		return fxmlLoader.load();
+	}
 
-    static void setRoot(String fxml) throws IOException {
-        scene.setRoot(loadFXML(fxml));
-    }
+	public static void main(String[] args) {
+		Application.launch();
+	}
 
-    private static Parent loadFXML(String fxml) throws IOException {
-        FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml"));
-        return fxmlLoader.load();
-    }
+	@Override
+	public void start(Stage stage) throws IOException {
+		scene = new Scene(loadFXML("gui"));
+		stage.setScene(scene);
+		stage.show();
 
-    public static void main(String[] args) {
-        Application.launch();
-    }
+		initialisiereHardware();
+
+        /**
+         * TODO: Nur zum Testen muss später wieder gelöscht werden.
+         */
+        //region Test
+		h.setKenngruppe("deisold");
+		String nachricht = "Hello world.";
+
+		for (char buchstabe : nachricht.toCharArray()) {
+			System.out.print(buchstabe + ":");
+			System.out.print(h.codiere(buchstabe));
+			System.out.println(" W1:" + h.getWalzen()[0].getBuchstabe() + " W2:" + h.getWalzen()[1].getBuchstabe() + " W3:" + h.getWalzen()[2].getBuchstabe());
+		}
+		try {
+			System.out.println(h.getNachricht());
+			h.sendeNachricht();
+		} catch (HttpException e) {
+			e.printStackTrace();
+		}
+		//endregion
+	}
+
+	/**
+	 * Hier lesen wir den heutigen Eintrag aus dem Codebuch aus und erstellen ein Codebuch Objekt
+	 * Nach dem Codebuch werden dann die Ringe auf die Walzen gesteckt und die Walzen anschließend
+	 * in die Hardware gebaut.
+	 * <p>
+	 * Ein Reflektor wird definiert, jedoch keine Werte zugewisen, da wir nur einen besitzen und
+	 * deshalb alle Einstellungen hierfür Statisch im Reflektor definiert haben.
+	 * <p>
+	 * Das Steck wird ebenfalls definiert und die notwendigen Kabel eingesteckt laut dem heutigen
+	 * Codebuch Eintrag.
+	 */
+	private void initialisiereHardware() {
+
+		// Hole den heutigen Eintrag aus der SQLite Datenbank und erstelle daraus ein Codebuch Objekt
+		try {
+			this.cb = new DatenbankSqlite().getCodebuch(LocalDate.now(ZoneId.of("Europe/Berlin")).getDayOfMonth());
+		} catch (SQLException ignored) {
+		}
+
+		// TODO: Was zum Henker macht der hier????!?
+        System.out.println(this.cb.toString());
+
+		// Das Steckbrett initialisieren
+		Steckbrett sb = new Steckbrett();
+		char[][] verbinder = cb.getSteckverbindung();
+		// Für jedes Kabel eine Verbindung auf dem Steckbrett setzen
+		for (char[] kabel : verbinder) {
+			sb.setzeVertauschung(kabel[0], kabel[1]);
+		}
+
+		// Die Hardware aus dem Koffer holen (initialisieren)
+		this.h = new Hardware();
+
+		// Den Ring an der Walze anbringen und die Walze dann in die Hardware einsetzen
+		h.setWalzen(0, cb.getWalzenlage()[0], cb.getRingstellung()[0]);
+		h.setWalzen(1, cb.getWalzenlage()[1], cb.getRingstellung()[1]);
+		h.setWalzen(2, cb.getWalzenlage()[2], cb.getRingstellung()[2]);
+
+		// Der Hardware das gesetzte Steckbrett zuweisen
+		h.setSteckbrett(sb);
+
+		// Ein Reflektor Objekt erstellen und der Hardware bekannt geben
+		h.setReflektor(new Reflektor());
+	}
 
 }
\ No newline at end of file
diff --git a/src/main/java/Enigma/model/Codebuch.java b/src/main/java/Enigma/model/Codebuch.java
index 0c6d01da135415010d27909d1a07f604de085f00..ee7b96e0aa0af4d2e3a48a12f88631c039944a2c 100644
--- a/src/main/java/Enigma/model/Codebuch.java
+++ b/src/main/java/Enigma/model/Codebuch.java
@@ -9,23 +9,38 @@ package Enigma.model;
  * vorgenommen.
  * Bei der Enigma um welche es hier geht (Enigma I) gab es zusätzlich ein Steckbrett, welches ebenfalls im Codebuch
  * festgelegt war.
- *
+ * <p>
  * Dieses Codebuch Objekt enthält die Einstellungen eines Tages, welche mittels Getter und Setter
  * verarbeitet werden können.
- *
+ * <p>
  * Zusätzlich gibt es zu Debug Zwecken eine überschriebene toString Funktion welche das Objekt als String zurück
  * geben kann.
  */
 public class Codebuch {
 	private int tag;
-	private String[] Walzenlage;
-	private String[] Ringstellung;
-	private String[] Steckverbindung;
-
-	Codebuch() {
-		this.Walzenlage = new String[3];
-		this.Ringstellung = new String[3];
-		this.Steckverbindung = new String[10];
+	private int[] walzenlage;
+	private int[] ringstellung;
+	private char[][] steckverbindung;
+
+	/**
+	 * Im Konstruktor werden die Standart Werte gesetzt
+	 * <p>
+	 * walzenlage : int[3] :            Hier wird die Position der drei Walzen festgelegt.
+	 * ringstellung : char[3] :         Jede Walze hat einen Ring. Der Index steht für die Walze und der Value für
+	 * die Position des Ringes.
+	 * steckverbindung : char[10][] :   Zehn Kabel können in das Steckbrett gesteckt werden. In diesem Array werden
+	 * die Kabel mit ihren jeweiligen Buchsen hinterlegt.
+	 */
+	public Codebuch() {
+		this.walzenlage = new int[3];
+		this.ringstellung = new int[3];
+		this.steckverbindung = new char[10][];
+
+		for (int i = 0; i < 10; i++) {
+			this.steckverbindung[i] = new char[2];
+			this.steckverbindung[i][0] = 'A';
+			this.steckverbindung[i][1] = 'A';
+		}
 	}
 
 	/**
@@ -44,33 +59,31 @@ public class Codebuch {
 		sb.append("Tag: ").append(this.getTag()).append("\n");
 
 		sb.append("Walzenlage: ");
-		for(String wl : this.getWalzenlage()) {
+		for (int wl : this.getWalzenlage()) {
 			sb.append(wl).append(",");
 			wlLoop = true;
 		}
-		if(wlLoop) {
+		if (wlLoop) {
 			sb.setLength(sb.length() - 1);
 		}
 		sb.append("\n");
 
 		sb.append("Ringstellung: ");
-		for(String rs : this.getRingstellung()) {
+		for (int rs : this.getRingstellung()) {
 			sb.append(rs).append(",");
 			rsLoop = true;
 		}
-		if(rsLoop) {
+		if (rsLoop) {
 			sb.setLength(sb.length() - 1);
 		}
 		sb.append("\n");
 
 		sb.append("Steckverbindung: ");
-		for (String s : this.getSteckverbindung()) {
-			if (!s.isEmpty()) {
-				sb.append(s).append(",");
-				svLoop = true;
-			}
+		for (char[] verbindung : this.getSteckverbindung()) {
+			sb.append(verbindung[0]).append(":").append(verbindung[1]).append(",");
+			svLoop = true;
 		}
-		if(svLoop) {
+		if (svLoop) {
 			sb.setLength(sb.length() - 1);
 		}
 		sb.append("\n");
@@ -80,65 +93,85 @@ public class Codebuch {
 
 	/**
 	 * Gibt den Tag dieser Instanz zurück
+	 *
 	 * @return int : Tag
 	 */
 	public int getTag() {
 		return tag;
 	}
 
+	/**
+	 * Setzt den Tag dieser Instanz
+	 *
+	 * @param tag : int
+	 */
+	public void setTag(int tag) {
+		this.tag = tag;
+	}
+
 	/**
 	 * Gibt die Walzenlage dieser Instanz zurück
+	 *
 	 * @return String[] : Walzenlage
 	 */
-	public String[] getWalzenlage() {
-		return Walzenlage;
+	public int[] getWalzenlage() {
+		return walzenlage;
 	}
 
 	/**
 	 * Gibt die Ringstellung dieser Instanz zurück
+	 *
 	 * @return String[] : Ringstellung
 	 */
-	public String[] getRingstellung() {
-		return Ringstellung;
+	public int[] getRingstellung() {
+		return ringstellung;
 	}
 
 	/**
 	 * Gibt die Steckverbindung dieser Instanz zurück
+	 *
 	 * @return String[] : Steckverbindung
 	 */
-	public String[] getSteckverbindung() {
-		return Steckverbindung;
+	public char[][] getSteckverbindung() {
+		return this.steckverbindung;
 	}
 
 	/**
-	 * Setzt den Tag dieser Instanz
-	 * @param tag : int
+	 * Setzt die Steckverbindung dieser Instanz
+	 *
+	 * @param kabel : String[] :  Die Steckverbindungen die gesteckt werden sollen.
+	 *                        Jeder Eintrag im Array ist ein String mit zwei Zeichen.
+	 *                        Diese werden in zwei char zerlegt und anschließend im globalen
+	 *                        Array gespeichert.
 	 */
-	public void setTag(int tag) {
-		this.tag = tag;
+	public void setSteckverbindung(String[] kabel) {
+		int counter = 0;
+
+		for (String stecker : kabel) {
+			char[] verbindung = new char[2];
+			verbindung[0] = stecker.charAt(0);
+			verbindung[1] = stecker.charAt(1);
+			this.steckverbindung[counter++] = verbindung;
+		}
 	}
 
 	/**
 	 * Setzt die Walzenlage dieser Instanz
-	 * @param walzenlage : String[]
+	 *
+	 * @param position   : int : Position der Walze
+	 * @param walzenlage : int : Welche Walze wurde eingesetzt
 	 */
-	public void setWalzenlage(String[] walzenlage) {
-		Walzenlage = walzenlage;
+	public void setWalzenlage(int position, int walzenlage) {
+		this.walzenlage[position] = walzenlage;
 	}
 
 	/**
 	 * Setzt die Ringstellung dieser Instanz
-	 * @param ringstellung : String[]
-	 */
-	public void setRingstellung(String[] ringstellung) {
-		Ringstellung = ringstellung;
-	}
-
-	/**
-	 * Setzt die Steckverbindung dieser Instanz
-	 * @param steckverbindung : String[]
+	 *
+	 * @param position     : int : Auf welche Walze wird der Ring aufgesetzt?
+	 * @param ringstellung : char : An dieser Position soll die nächste Walze weiter gedreht werden.
 	 */
-	public void setSteckverbindung(String[] steckverbindung) {
-		Steckverbindung = steckverbindung;
+	public void setRingstellung(int position, int ringstellung) {
+		this.ringstellung[position] = ringstellung;
 	}
 }
diff --git a/src/main/java/Enigma/model/DatenbankSqlite.java b/src/main/java/Enigma/model/DatenbankSqlite.java
index 0a96e0654ae04e5c3dc49fa132e3f39b75ddf2ac..236b2bbeb90acf80cf2f127a627c5236e3757867 100644
--- a/src/main/java/Enigma/model/DatenbankSqlite.java
+++ b/src/main/java/Enigma/model/DatenbankSqlite.java
@@ -1,8 +1,6 @@
 package Enigma.model;
 
-import javax.swing.text.html.HTML;
 import java.sql.*;
-import java.util.Random;
 
 /**
  * Dies ist die SQLite Datenbank Klasse
@@ -53,10 +51,21 @@ public class DatenbankSqlite {
 		pstm.setInt(1, tag);
 		ResultSet rs = pstm.executeQuery();
 
+		String[] walzenlage, ringstellung, steckverbindung;
+
 		while (rs.next()) {
 			cb.setTag(rs.getInt("Tag"));
-			cb.setWalzenlage(rs.getString("Walzenlage").split(","));
-			cb.setRingstellung(rs.getString("Ringstellung").split(","));
+
+			walzenlage = rs.getString("Walzenlage").split(",");
+			for (int i = 0; i < 3; i++) {
+				cb.setWalzenlage(i, Integer.parseInt(walzenlage[i]));
+			}
+
+			ringstellung = rs.getString("Ringstellung").split(",");
+			for (int i = 0; i < 3; i++) {
+				cb.setRingstellung(i, Integer.parseInt(ringstellung[i]));
+			}
+
 			cb.setSteckverbindung(rs.getString("Steckverbindung").split(","));
 		}
 
@@ -64,14 +73,14 @@ public class DatenbankSqlite {
 	}
 
 	//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();
@@ -88,11 +97,12 @@ public class DatenbankSqlite {
 		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();
@@ -105,13 +115,14 @@ public class DatenbankSqlite {
 		}
 		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();
@@ -121,9 +132,9 @@ public class DatenbankSqlite {
 		}
 		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
 	 *//*
diff --git a/src/main/java/Enigma/model/Funkraum.java b/src/main/java/Enigma/model/Funkraum.java
index de283e750d219646a8fbca82f81626a4b94dff0d..acb4e632acca7338eebcb5ad1044df34a7570576 100644
--- a/src/main/java/Enigma/model/Funkraum.java
+++ b/src/main/java/Enigma/model/Funkraum.java
@@ -13,7 +13,6 @@ import org.json.JSONObject;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/Enigma/model/Hardware.java b/src/main/java/Enigma/model/Hardware.java
new file mode 100644
index 0000000000000000000000000000000000000000..e9eebc5f029af7cc8cceeddd9c828a70efee3039
--- /dev/null
+++ b/src/main/java/Enigma/model/Hardware.java
@@ -0,0 +1,227 @@
+package Enigma.model;
+
+import org.apache.http.HttpException;
+
+import java.io.IOException;
+
+/**
+ * In dieser Klasse wird die Hardware zusammen gefasst.
+ * Alle Komponenter der Enigma laufen hier zusammen.
+ *
+ * <p>
+ * walzen : Walze[] :           Ist ein Array der drei eingebauten Walzen Objekte
+ * steckbrett : Steckbrett :    Das Steckbrett mit den Verbindungen aus dem Codebuch
+ * reflektor : Reflektor :      Dies ist das Objekt der Reflektors
+ * nachricht : String :         Die verschlüsselte Nachricht wird in diesem String zusammen gesetzt und gespeichert
+ * kenngruppe : String :        Früher definierte die Kennzeichnung die Einheit welche diese Enigma benutzte.
+ * Wir missbrauchen die Kenngruppe für einen Benutzernamen
+ * </p>
+ */
+public class Hardware {
+
+	private Walze[] walzen;
+	private Steckbrett steckbrett;
+	private Reflektor reflektor;
+	private String nachricht;
+	private String kenngruppe;
+
+	/**
+	 * Im Konstruktor legen wir die Anzahl der Walzen fest welche die Hardware aufnehmen kann.
+	 * Die Enigma I welche hier nachgebildet werden soll, konnte drei Walzen aufnehmen.
+	 */
+	public Hardware() {
+		this.walzen = new Walze[3];
+		this.nachricht = "";
+	}
+
+	/**
+	 * Setzt eine Walze ein
+	 *
+	 * @param walze    : int : Setzt die Walze mit der angegebenen Nummer ein
+	 * @param walzenNr : int : Die Nummer der einzusetzenden Walze
+	 */
+	public void setzeWalzenNr(int walze, int walzenNr, int ringstellung) {
+		this.walzen[walze] = new Walze(walzenNr, ringstellung);
+	}
+
+	/**
+	 * Setzt den Notch der Walze
+	 *
+	 * @param walze    : int : Position der Walze
+	 * @param position : int : Umspringpunkt auf der Walze
+	 */
+	public void setzeRing(int walze, int position) {
+		this.walzen[walze].setRingstellung(position);
+	}
+
+	/**
+	 * Setzt den Startwert (position) der Walze (walze)
+	 *
+	 * @param walze     : int : Nummer der Walze
+	 * @param buchstabe : char : Buchstabe der zugewiesen soll
+	 */
+	public void setzePosition(int walze, char buchstabe) {
+		this.walzen[walze].setBuchstabe(buchstabe);
+	}
+
+	/**
+	 * Befehl die Nachricht an den Funker zu übergeben
+	 *
+	 * @throws IOException   : Die Antwort konnte nicht gelesen werden
+	 * @throws HttpException : Die Nachricht konnte nicht abgesendet werden
+	 */
+	public void sendeNachricht() throws IOException, HttpException {
+		new Funkraum().sendeFunkspruch(new Morsecode().convertBuchstabeToMorsecode(this.nachricht), this.kenngruppe);
+	}
+
+	/**
+	 * Gibt die letzte empfangene Nachricht zurück
+	 * <p>
+	 *     String[0} Tag wann die Nachricht gesendet wurde
+	 *     String[1] = Die verschlüsselte Nachricht
+	 *     String[2] = Nachricht im Klartext
+	 */
+	public String[] empfangeNachricht() {
+		String[] codierteNachricht = new String[3];
+		Morsecode mc = new Morsecode();
+
+		try {
+			codierteNachricht = new Funkraum().empfangeFunkspruch(this.kenngruppe);
+			String morsecode = mc.convertMorsecodeToBuchstabe(codierteNachricht[1]);
+			String decodiert = "";
+
+			for (char buchstabe : morsecode.toCharArray()) {
+				decodiert += this.codiere(buchstabe);
+			}
+
+			codierteNachricht[2] = decodiert;
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return codierteNachricht;
+	}
+
+	/**
+	 * Verschlüsselt den übergebenen Buchstaben und fügt ihn der Nachricht hinzu
+	 *
+	 * @param buchstabe char : Der zu ver/entschlüsselnde Buchstabe
+	 * @return char : Der ver/entschlüsselte Buchstabe
+	 */
+	public char codiere(char buchstabe) {
+		this.dreheWalzen();
+
+		buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe));
+		buchstabe = this.walzen[0].codiere(buchstabe);
+		buchstabe = this.walzen[1].codiere(buchstabe);
+		buchstabe = this.walzen[2].codiere(buchstabe);
+		buchstabe = this.reflektor.codiere(buchstabe);
+		buchstabe = this.walzen[2].codiere2(buchstabe);
+		buchstabe = this.walzen[1].codiere2(buchstabe);
+		buchstabe = this.walzen[0].codiere2(buchstabe);
+		buchstabe = this.steckbrett.codiere(buchstabe);
+
+		this.nachricht += buchstabe;
+
+		return buchstabe;
+	}
+
+	/**
+	 * Nach jeder codierung eines Buchstabens müssen die Walzen gedreht werden.
+	 * Hier überprüfen wir welche der Walzen gedreht werden müssen und stoßen die Vorgang an.
+	 */
+	private void dreheWalzen() {
+		if (this.walzen[0].dreheWalze()) {
+			if (this.walzen[1].dreheWalze()) {
+				this.walzen[2].dreheWalze();
+			}
+		}
+	}
+
+	/**
+	 * Gibt die verbauten Walzen Objekte zurück
+	 *
+	 * @return Walze[] : Array mit den Walzen Objekten
+	 */
+	public Walze[] getWalzen() {
+		return this.walzen;
+	}
+
+	/**
+	 * Setzt eine Walze ein und speichert das Objekt im Walzen Array
+	 *
+	 * @param position     : int : Position der Walze
+	 * @param walze        : int : Die Nummer der Walze
+	 * @param ringstellung : int : Umsprung Punkt der Walze
+	 */
+	public void setWalzen(int position, int walze, int ringstellung) {
+		this.walzen[position] = new Walze(walze, ringstellung);
+	}
+
+	/**
+	 * Gibt das Objekt des Steckbretts zurück
+	 *
+	 * @return Steckbrett : Das eingesetzte Steckbrett mit seinen Kabeln wenn eingesteckt
+	 */
+	public Steckbrett getSteckbrett() {
+		return steckbrett;
+	}
+
+	/**
+	 * Setzt das übergebene Steckbrett Objekt in die Hardware ein
+	 *
+	 * @param steckbrett : Steckbrett : Objekt des Steckbretts mit allen verbundenen Kabeln
+	 */
+	public void setSteckbrett(Steckbrett steckbrett) {
+		this.steckbrett = steckbrett;
+	}
+
+	/**
+	 * Liest den Reflektor aus und gibt ihn zurück
+	 *
+	 * @return Reflektor : Objekt des Reflektors
+	 */
+	public Reflektor getReflektor() {
+		return reflektor;
+	}
+
+	/**
+	 * Setzt den Reflektor ein.
+	 * In der Enigma I welche hier nachgebaut wird, gab es nur einen Reflektor.
+	 * Spätere Versionen haten zwei oder mehr, deshalb haben wir hier auch schon ein Objekt dafür erstellt,
+	 * welches ausgetauscht werden kann.
+	 *
+	 * @param reflektor : Reflektor : Das Obejtk des Reflektors
+	 */
+	public void setReflektor(Reflektor reflektor) {
+		this.reflektor = reflektor;
+	}
+
+	/**
+	 * Liest die Kenngruppe aus welche die Maschine gerade besitzt. Früher war dies eine eindeutige Nummer
+	 * die einer Einheit zugewiesen war. Wir hinterlegen hier einen Benutzernamen.
+	 *
+	 * @return String : Kenngruppe
+	 */
+	public String getKenngruppe() {
+		return kenngruppe;
+	}
+
+	/**
+	 * Setzt die Kenngruppe welche die Enigma gerade benutzt.
+	 *
+	 * @param kenngruppe : String : Kenngruppe welche die Enigma gerade benutzt
+	 */
+	public void setKenngruppe(String kenngruppe) {
+		this.kenngruppe = kenngruppe;
+	}
+
+	/**
+	 * Gibt die bisher erstellte Nachricht zurück
+	 *
+	 * @return String : Erstellte Nachricht
+	 */
+	public String getNachricht() {
+		return nachricht;
+	}
+}
diff --git a/src/main/java/Enigma/model/Morsecode.java b/src/main/java/Enigma/model/Morsecode.java
index f8c759cf70fd7d17b2024ce91077b5835c46c618..38e2b1febd8d01994fd91365184f0d6c420ffe2c 100644
--- a/src/main/java/Enigma/model/Morsecode.java
+++ b/src/main/java/Enigma/model/Morsecode.java
@@ -93,7 +93,6 @@ public class Morsecode {
 	 */
 	private String getBuchstabe(String morsecode) {
 		// Initialisieren des Rückgabe Strings
-		// TODO: Darf bei der Initialisierung gleich einen Wert setzten lauf JAVA Konventionen?
 		String result = null;
 
 		// Loopt duch die Codemap und erstellt daraus ein Set
diff --git a/src/main/java/Enigma/model/Walze.java b/src/main/java/Enigma/model/Walze.java
index 86cf8f4e1e8a76861c3aca23ea5dfef415816121..36ac2336bc40ce093bbbc6bb7a9e124c9a4e1539 100644
--- a/src/main/java/Enigma/model/Walze.java
+++ b/src/main/java/Enigma/model/Walze.java
@@ -1,246 +1,239 @@
 package Enigma.model;
 
+import java.time.Year;
+
 /**
  * Klasse Walze
- *
+ * <p>
  * Erzeugt ein Objekt des Typs Walze mit den Eigenschaften:
- *
+ * <p>
  * 1. Walzennummer (Die Walze enthält die 26 Buchstaben des Alphabeths und codiert diese.
  * 5 verschiedene Walzen stehen zur Auswahl, die jeweils verschieden die Buchstaben des Alphabeths
  * paarweise vertauschen)
- *
+ * <p>
  * 2. Ringstellung (Umspringpunkt der Walze wird festgelegt. Der Umspringpunkt bestimmt
  * den Drehzeitpunkt der linken Nachbarwalze)
- *
  */
 public class Walze {
 
-    /**
-     * Konstanten und Variablen der Klasse Walze
-     *
-     * buchstabe : Bestimmt den Buchstaben
-     * ringstellung : Bestimmt den Umspringpunkt der Walze
-     * walzennr : Bestimmt die Walzennr. (also wie der Buchstabe codiert wird)
-     * iPositionBuchstabe : gibt die Position des Buchstabens auf dem Array der Walze wieder.
-     * iPositionBuchstabeRe : gibt die Position des codierten Buchstabens im Alphabet wieder.
-     * private Character[] walze : Character-Array der Walze
-     */
-
-    private Character buchstabe;
-    private Character ringstellung;
-    private int walzennr;
-    private int iPositionBuchstabe;
-    private int iPositionBuchstabeRe;
-    private Character[] walze;
-
-
-
-    /**
-     * Gibt die Parameter der Walze mit
-     *
-     * @param walzennr : int : Nummer der gewaehlten Walze
-     * @param ringstellung : Character : Einstellung des Notch
-     */
-    public Walze(int walzennr, Character ringstellung) {
-        this.walze = new Character[25];
-        this.walzennr = walzennr;
-        this.buchstabe = 'A';
-        this.ringstellung = ringstellung;
-    }
-
-
-    /**
-     * Sortiert den Walzennummern das passenden Character-Array mittels switch zu.
-     *
-     * @return walze : Character[] : gibt die gewaehlte Walze zurueck
-     */
-    private Character[] walzenNummer() {
-
-        /*Walze nach der Chiffrierung*/
-        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 (walzennr) {
-            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;
-    }
-
-
-
-    //walzenPosition() return int => Gibt die aktuelle Position des Buchstabens zurück
-    public int walzenPosition() {
-
-        /*Alphabetswalze*/
-        Character[] walzeAlphabeth = {'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'};
-
-        /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/
-        for(int index = 0; index < walzeAlphabeth.length; index++) {
-            if(getBuchstabe().equals(walzeAlphabeth[index])) {
-                iPositionBuchstabe = index;
-                break;
-            }
-        }
-        return iPositionBuchstabe;
-    }
-
-
-    //setzeNotch(int position) => Setze Startpunkt auf int Position des Buchstabens
-    // Setter für 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
-     */
-    public void setRingstellung(Character ringstellung) {
-
-        if(Character.isDigit(ringstellung) && ringstellung > 0 && ringstellung <= 26) {
-            this.ringstellung = ringstellung;
-        } else {
-            this.ringstellung = '1';
-        }
-    }
-
-    /**
-     * @return ringstellung : Character : gibt die neue Ringstellung zurueck
-     */
-    public Character getRingstellung() {
-        return ringstellung;
-    }
-
-
-
-    //dreheWalze() return boolean => Wenn Notch erreicht, gib true zurück, ansonsten false
-        public boolean dreheWalze(){
-
-        boolean checkRing;
-
-            if(iPositionBuchstabe == 25) {
-
-                iPositionBuchstabe = 0;
-
-            } else {
-
-                iPositionBuchstabe += 1;
-            }
-
-        if (iPositionBuchstabe == getRingstellung()){
-
-            checkRing = true;
-
-        }else{
-
-            checkRing = false;
-        }
-
-        return checkRing;
-    }
-
-
-    //codiere(char buchstabe) return char => Gibt den verschlüsselten Buchstaben zurück
-    /**
-     * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabe()
-     * anhand der gewaehlten Walze.
-     *
-     * @param
-     * @return chiffrierterBuchstabe : Character : chiffrierter Buchstabe
-     */
-    public Character codiere(Character buchstabe) {
-        setBuchstabe(buchstabe);
-        walzenPosition();
-        Character codierterBuchstabe = walzenNummer()[iPositionBuchstabe];
-        return codierterBuchstabe;
-    }
-
-
-    //codiere2(char buchstabe) => Gibt den vertauschten Buchstaben zurück (Reverse)
-    /**
-     * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabeReverse()
-     * anhand der AlphaWalze.
-     *
-     * @param
-     * @return codierterBuchstabeRe : Character : chiffrierter Buchstabe
-     */
-    public Character codiere2(char buchstabe) {
-
-        /*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'};
-
-        setBuchstabe(buchstabe);
-
-        /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/
-        for(int index = 0; index < walzenNummer().length; index++) {
-            if(getBuchstabe().equals(walzenNummer()[index])) {
-                iPositionBuchstabeRe = index;
-                break;
-            }
-        }
-
-        Character codierterBuchstabeRe = walzeAlpha[iPositionBuchstabeRe];
-        return codierterBuchstabeRe;
-
-
-    }
+	/**
+	 * Konstanten und Variablen der Klasse Walze
+	 * <p>
+	 * buchstabe : Bestimmt den Buchstaben
+	 * ringstellung : Bestimmt den Umspringpunkt der Walze
+	 * walzennr : Bestimmt die Walzennr. (also wie der Buchstabe codiert wird)
+	 * iPositionBuchstabe : gibt die Position des Buchstabens auf dem Array der Walze wieder.
+	 * iPositionBuchstabeRe : gibt die Position des codierten Buchstabens im Alphabet wieder.
+	 * private Character[] walze : Character-Array der Walze
+	 */
+	/*Alphawalze*/
+	private final static 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'};
+	private Character buchstabe;
+	private int ringstellung;
+	private int walzennr;
+	private int iPositionBuchstabe;
+	private Character[] walze;
+
+
+	/**
+	 * Gibt die Parameter der Walze mit
+	 *
+	 * @param walzennr     : int : Nummer der gewaehlten Walze
+	 * @param ringstellung : Character : Einstellung des Notch
+	 */
+	public Walze(int walzennr, int ringstellung) {
+		this.walze = new Character[25];
+		this.walzennr = walzennr;
+		this.buchstabe = 'A';
+		this.iPositionBuchstabe = 0;
+		this.ringstellung = ringstellung;
+	}
+
+
+	/**
+	 * Sortiert den Walzennummern das passenden Character-Array mittels switch zu.
+	 *
+	 * @return walze : Character[] : gibt die gewaehlte Walze zurueck
+	 */
+	private Character[] walzenNummer() {
+
+		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 (this.walzennr) {
+			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;
+	}
+
+
+	//walzenPosition() return int => Gibt die aktuelle Position des Buchstabens zurück
+	public char walzenPosition() {
+
+		/*Alphabetswalze*/
+		Character[] walzeAlphabeth = {'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'};
+
+		return walzeAlphabeth[iPositionBuchstabe];
+	}
+
+
+	//setzeNotch(int position) => Setze Startpunkt auf int Position des Buchstabens
+	// Setter für Ringstellung
+
+	/**
+	 * @return ringstellung : Character : gibt die neue Ringstellung zurueck
+	 */
+	public int 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
+	 */
+	public void setRingstellung(int ringstellung) {
+
+		if (ringstellung > 0 && ringstellung <= 26) {
+			this.ringstellung = ringstellung;
+		} else {
+			this.ringstellung = 1;
+		}
+	}
+
+	//dreheWalze() return boolean => Wenn Notch erreicht, gib true zurück, ansonsten false
+	public boolean dreheWalze() {
+
+		boolean checkRing;
+
+		if (this.iPositionBuchstabe == 25) {
+			this.iPositionBuchstabe = 0;
+		} else {
+			this.iPositionBuchstabe += 1;
+		}
+
+		checkRing = this.iPositionBuchstabe == getRingstellung();
+
+		return checkRing;
+	}
+
+
+	//codiere(char buchstabe) return char => Gibt den verschlüsselten Buchstaben zurück
+
+	/**
+	 * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabe()
+	 * anhand der gewaehlten Walze.
+	 *
+	 * @param
+	 * @return chiffrierterBuchstabe : Character : chiffrierter Buchstabe
+	 */
+	public char codiere(char buchstabe) {
+		/**
+		 * TODO: contains fragt ab ob der char im Alphabet enthalten ist. Das sollten wir vielleicht noch in eine
+		 * Hilfsfunktion packen. Vielleicht sogar in der Hardware Klasse.
+		 */
+		boolean contains = false;
+		for (int i = 0; i < walzeAlpha.length; i++) {
+			if (walzeAlpha[i].equals(buchstabe)) {
+				buchstabe = walzenNummer()[i];
+				contains = true;
+				break;
+			}
+		}
+		if(!contains) {
+			buchstabe = 'X';
+		}
+
+		return buchstabe;
+	}
+
+
+	//codiere2(char buchstabe) => Gibt den vertauschten Buchstaben zurück (Reverse)
+
+	/**
+	 * Chiffriert den Buchstaben an der Position aus der Methode positionBuchstabeReverse()
+	 * anhand der AlphaWalze.
+	 *
+	 * @param
+	 * @return codierterBuchstabeRe : Character : chiffrierter Buchstabe
+	 */
+	public char codiere2(char buchstabe) {
+
+		for (int i = 0; i < walzenNummer().length; i++) {
+			if (walzenNummer()[i].equals(buchstabe)) {
+				buchstabe = walzeAlpha[i];
+				break;
+			}
+		}
+
+		return buchstabe;
+	}
 
 //_________________________________________________________________________________________
 
 
-    /**
-     * @return buchstabe : Character : gibt den neuen Buchstaben zurueck
-     */
-    public Character 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
-     */
-    public void setBuchstabe(Character buchstabe) {
-
-        if(Character.isLetter(buchstabe)) {
-            this.buchstabe = Character.toUpperCase(buchstabe);
-        } else {
-            this.buchstabe = 'A';
-        }
-    }
-
-
-    //TODO: ??? Brauchen wir Setter, wo findet Überprüfung der Walzennr. statt.
-    /**
-     * Definiert die Walze. Es stehen fuenf Walze zur Auswahl.
-     *
-     * @param walzennr : int : setzt die Walzennummer
-     */
-    public void setWalzennr(int walzennr) {
-        if(walzennr > 0 && walzennr < 6) {
-            this.walzennr = walzennr;
-        } else {
-            System.err.println("Keine gültige Walzennummer");
-        }
-    }
+	/**
+	 * @return buchstabe : Character : gibt den neuen Buchstaben zurueck
+	 */
+	public Character 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
+	 */
+	public void setBuchstabe(Character buchstabe) {
+
+		if (Character.isLetter(buchstabe)) {
+			this.buchstabe = Character.toUpperCase(buchstabe);
+			for (int i = 0; i < 25; i++) {
+				if (walzeAlpha[i].equals(buchstabe)) {
+					this.iPositionBuchstabe = i;
+				}
+			}
+		} else {
+			this.buchstabe = 'A';
+		}
+	}
+
+	//TODO: ??? Brauchen wir Setter, wo findet Überprüfung der Walzennr. statt.
+
+	/**
+	 * Definiert die Walze. Es stehen fuenf Walze zur Auswahl.
+	 *
+	 * @param walzennr : int : setzt die Walzennummer
+	 */
+	public void setWalzennr(int walzennr) {
+		if (walzennr > 0 && walzennr < 6) {
+			this.walzennr = walzennr;
+		} else {
+			System.err.println("Keine gültige Walzennummer");
+		}
+	}
 
 }
diff --git a/src/test/java/Enigma/model/CodebuchTest.java b/src/test/java/Enigma/model/CodebuchTest.java
index 91e265342537fdf07e92ca735f9e377b48b4e424..aa64deaa3f9c17f57767b284a452cf00149c923d 100644
--- a/src/test/java/Enigma/model/CodebuchTest.java
+++ b/src/test/java/Enigma/model/CodebuchTest.java
@@ -14,11 +14,9 @@ public class CodebuchTest {
 				"Steckverbindung: CO,DI,FR,HU,JW,LS,TX\n";
 
 		try {
-			// Codebuch abrufen
-			Codebuch cb = new DatenbankSqlite().getCodebuch(1);
 			// Ausgabe auf der Konsole
 			String result = new DatenbankSqlite().getCodebuch(1).toString();
-			Assert.assertEquals(expected, result);
+			Assert.assertEquals(result, expected, result);
 		} catch (SQLException e) {
 			e.printStackTrace();
 		}
diff --git a/src/test/java/Enigma/model/HardwareTest.java b/src/test/java/Enigma/model/HardwareTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..78bd24110f1742bd715af8f4bcceac50dfc7e243
--- /dev/null
+++ b/src/test/java/Enigma/model/HardwareTest.java
@@ -0,0 +1,62 @@
+package Enigma.model;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class HardwareTest {
+
+	@Test
+	public void tippeBuchstabe() {
+		Hardware h = new Hardware();
+		h.setReflektor(new Reflektor());
+		h.setSteckbrett(new Steckbrett());
+		h.setWalzen(0, 1, 1);
+		h.setWalzen(1, 2, 1);
+		h.setWalzen(2, 3, 1);
+
+		/*
+	        A = E = S = G = Y = O = Y = O
+            I = V = Y = Q = O = Z = S = S
+            F = G = R = W = K = U = H = P
+
+        In  S   1   2   3   R   3   2   1   S
+        A       E   D   H   X   S   Z   J
+        J       Z   E   J   B   D   K   N
+
+        Walze nach der Chiffrierung
+        Alphabet    {'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'};
+        Steckbrett  {'B', 'G', 'D', 'F'}
+        Steckbrett  {'G', 'B', 'F', 'F'}
+        Walze 1     {'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'};
+		Walze 2     {'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'};
+		Walze 3     {'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'};
+        Reflektor   {'E', 'J', 'M', 'Z', 'A', 'L', 'Y', 'X', 'V', 'B', 'W', 'F', 'C', 'R', 'Q', 'U', 'O', 'N', 'T', 'S', 'P', 'I', 'K', 'H', 'G', 'D'};
+		*/
+
+		char result = h.codiere('A');
+		Assert.assertEquals("Codiere: Erwartet O, erhalten "+ result, 'O', result);
+		result = h.codiere('I');
+		Assert.assertEquals("Codiere: Erwartet S, erhalten "+ result, 'S', result);
+		result = h.codiere('F');
+		Assert.assertEquals("Codiere: Erwartet P, erhalten "+ result, 'P', result);
+
+		result = h.codiere('O');
+		Assert.assertEquals("Decodiere: Erwartet A, erhalten "+ result, 'A', result);
+		result = h.codiere('S');
+		Assert.assertEquals("Decodiere: Erwartet I, erhalten "+ result, 'I', result);
+		result = h.codiere('P');
+		Assert.assertEquals("Decodiere: Erwartet F, erhalten "+ result, 'F', result);
+
+		h.getSteckbrett().setzeVertauschung('B', 'G');
+		h.getSteckbrett().setzeVertauschung('D', 'F');
+		h.getSteckbrett().setzeVertauschung('I', 'L');
+		h.getSteckbrett().setzeVertauschung('M', 'Q');
+		h.getSteckbrett().setzeVertauschung('T', 'X');
+
+		result = h.codiere('I');
+		Assert.assertEquals("Codiere: Erwartet F, erhalten "+ result, 'F', result);
+
+		result = h.codiere('F');
+		Assert.assertEquals("Codiere: Erwartet I, erhalten "+ result, 'I', result);
+	}
+}
\ No newline at end of file
diff --git a/src/test/java/Enigma/model/ReflektorTest.java b/src/test/java/Enigma/model/ReflektorTest.java
index 74ab4f6410b5aa1592c9ed50903372ef774c70f5..255e2ff280713b19c888c0f199ad07420fb2130b 100644
--- a/src/test/java/Enigma/model/ReflektorTest.java
+++ b/src/test/java/Enigma/model/ReflektorTest.java
@@ -7,7 +7,6 @@ public class ReflektorTest {
 
 	@Test
 	public void codiere() {
-		/*
 		Reflektor r = new Reflektor();
 
 		Assert.assertEquals('E', r.codiere('A'));
@@ -15,19 +14,10 @@ public class ReflektorTest {
 		Assert.assertEquals('X', r.codiere('H'));
 		Assert.assertEquals('O', r.codiere('Q'));
 		Assert.assertEquals('I', r.codiere('V'));
-		//Assert.assertNull(null, r.codiere(null));
-		*/
-	}
-
-	@Test
-	public void codiere2() {
-		/*
-		Reflektor r = new Reflektor();
 		Assert.assertEquals('A', r.codiere('E'));
 		Assert.assertEquals('D', r.codiere('Z'));
 		Assert.assertEquals('H', r.codiere('X'));
 		Assert.assertEquals('Q', r.codiere('O'));
 		Assert.assertEquals('V', r.codiere('I'));
-		*/
 	}
 }
\ No newline at end of file
diff --git a/src/test/java/Enigma/model/SteckbrettTest.java b/src/test/java/Enigma/model/SteckbrettTest.java
index df6051df00bcd397568a5e9e88ba5295eba803a0..f56b31eb015e3815d05aa8ff74ca766f9d10ca7c 100644
--- a/src/test/java/Enigma/model/SteckbrettTest.java
+++ b/src/test/java/Enigma/model/SteckbrettTest.java
@@ -3,34 +3,23 @@ package Enigma.model;
 import org.junit.Assert;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 public class SteckbrettTest {
 
 	@Test
 	public void setzeVertauschung() {
-		/*Steckbrett sb = new Steckbrett();
+		Steckbrett sb = new Steckbrett();
 		sb.setzeVertauschung('A', 'G');
 		sb.setzeVertauschung('C', 'H');
 		Assert.assertEquals('H', sb.codiere('C'));
-		Assert.assertEquals('G', sb.codiere('A'));*/
+		Assert.assertEquals('G', sb.codiere('A'));
 	}
 
 	@Test
 	public void codiere() {
-		/*Steckbrett sb = new Steckbrett();
+		Steckbrett sb = new Steckbrett();
 		sb.setzeVertauschung('A', 'G');
 		sb.setzeVertauschung('C', 'H');
 		Assert.assertEquals('H', sb.codiere('C'));
-		Assert.assertEquals('G', sb.codiere('A'));*/
-	}
-
-	@Test
-	public void codiere2() {
-		/*Steckbrett sb = new Steckbrett();
-		sb.setzeVertauschung('A', 'G');
-		sb.setzeVertauschung('C', 'H');
-		Assert.assertEquals('C', sb.codiere2('H'));
-		Assert.assertEquals('A', sb.codiere2('G'));*/
+		Assert.assertEquals('G', sb.codiere('A'));
 	}
 }
\ No newline at end of file
diff --git a/src/test/java/Enigma/model/WalzeTest.java b/src/test/java/Enigma/model/WalzeTest.java
index 1c58136c318dbbdce13c250cbadba805805aa0ad..3379019d7913fee1ba2e072b3cc68a6fdb792045 100644
--- a/src/test/java/Enigma/model/WalzeTest.java
+++ b/src/test/java/Enigma/model/WalzeTest.java
@@ -8,38 +8,36 @@ import static org.junit.Assert.*;
 public class WalzeTest {
 
 	@Test
-	public void setzeNotch() {
-		/*Walze w = new Walze(1);
-		w.setzeNotch('G');
-		Assert.assertEquals('G', w.wlazenPosition());*/
+	public void setRingstellung() {
+		Walze w = new Walze(1, 1);
+		Assert.assertEquals('A', w.walzenPosition());
 	}
 
 	@Test
 	public void dreheWalze() {
-		/*Walze w = new Walze(1);
-		w.setzeNotch('G');
-		w.dreheWalze();
-		Assert.assertEquals('H', w.wlazenPosition());*/
+		Walze w = new Walze(1, 3);
+		assertFalse("false erwartet, true geliefert", w.dreheWalze());
+		char temp = w.walzenPosition();
+		Assert.assertEquals("B erwartet, " + temp + " zurück gegeben", 'B', temp);
 	}
 
 	@Test
 	public void walzenPoition() {
-		/*Walze w = new Walze(1);
-		w.setzeNotch('G');
-		Assert.assertEquals('G', w.wlazenPosition());*/
+		Walze w = new Walze(1, 1);
+		Assert.assertEquals('A', w.walzenPosition());
 	}
 
 	@Test
 	public void codiere() {
-		/*Walze w = new Walze(1);
-		w.setzeNotch('A');
-		Assert.assertEquals('E', w.codiere('A'));*/
+		Walze w = new Walze(1, 1);
+		char result = w.codiere('G');
+		Assert.assertEquals("Erwartet D erhalten " + result, 'D', result);
 	}
 
 	@Test
 	public void codiere2() {
-		/*Walze w = new Walze(1);
-		w.setzeNotch('A');
-		Assert.assertEquals('A', w.codiere('E'));*/
+		Walze w = new Walze(1, 1);
+		char result = w.codiere2('E');
+		Assert.assertEquals("Erwartet A erhalten " + result, 'A', result);
 	}
 }
\ No newline at end of file