diff --git a/src/main/java/Enigma/model/Codebuch.java b/src/main/java/Enigma/model/Codebuch.java
index 60f699eb693909af145a24a1d2d376a7446807d5..ee7b96e0aa0af4d2e3a48a12f88631c039944a2c 100644
--- a/src/main/java/Enigma/model/Codebuch.java
+++ b/src/main/java/Enigma/model/Codebuch.java
@@ -19,7 +19,7 @@ package Enigma.model;
 public class Codebuch {
 	private int tag;
 	private int[] walzenlage;
-	private char[] ringstellung;
+	private int[] ringstellung;
 	private char[][] steckverbindung;
 
 	/**
@@ -33,10 +33,10 @@ public class Codebuch {
 	 */
 	public Codebuch() {
 		this.walzenlage = new int[3];
-		this.ringstellung = new char[3];
+		this.ringstellung = new int[3];
 		this.steckverbindung = new char[10][];
 
-		for(int i = 0; i < 10; i++) {
+		for (int i = 0; i < 10; i++) {
 			this.steckverbindung[i] = new char[2];
 			this.steckverbindung[i][0] = 'A';
 			this.steckverbindung[i][1] = 'A';
@@ -69,7 +69,7 @@ public class Codebuch {
 		sb.append("\n");
 
 		sb.append("Ringstellung: ");
-		for (char rs : this.getRingstellung()) {
+		for (int rs : this.getRingstellung()) {
 			sb.append(rs).append(",");
 			rsLoop = true;
 		}
@@ -79,11 +79,9 @@ public class Codebuch {
 		sb.append("\n");
 
 		sb.append("Steckverbindung: ");
-		for (char[] s : this.getSteckverbindung()) {
-			if (Character.isLetter(s[0])) {
-				sb.append(s[0]).append(":").append(s[1]).append(",");
-				svLoop = true;
-			}
+		for (char[] verbindung : this.getSteckverbindung()) {
+			sb.append(verbindung[0]).append(":").append(verbindung[1]).append(",");
+			svLoop = true;
 		}
 		if (svLoop) {
 			sb.setLength(sb.length() - 1);
@@ -125,7 +123,7 @@ public class Codebuch {
 	 *
 	 * @return String[] : Ringstellung
 	 */
-	public char[] getRingstellung() {
+	public int[] getRingstellung() {
 		return ringstellung;
 	}
 
@@ -141,15 +139,16 @@ public class Codebuch {
 	/**
 	 * Setzt die Steckverbindung dieser Instanz
 	 *
-	 * @param steckverbindung : String[] :  Die Steckverbindungen die gesteckt werden sollen.
+	 * @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 setSteckverbindung(String[] steckverbindung) {
+	public void setSteckverbindung(String[] kabel) {
 		int counter = 0;
-		char[] verbindung = new char[2];
-		for (String stecker : steckverbindung) {
+
+		for (String stecker : kabel) {
+			char[] verbindung = new char[2];
 			verbindung[0] = stecker.charAt(0);
 			verbindung[1] = stecker.charAt(1);
 			this.steckverbindung[counter++] = verbindung;
@@ -172,7 +171,7 @@ public class Codebuch {
 	 * @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 setRingstellung(int position, char ringstellung) {
+	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 51f34c1bf1c59f343bb5ef7ea9123133995defdb..fd7270d5271320a6d4c7474a8ae796ff8b47023d 100644
--- a/src/main/java/Enigma/model/DatenbankSqlite.java
+++ b/src/main/java/Enigma/model/DatenbankSqlite.java
@@ -57,13 +57,13 @@ public class DatenbankSqlite {
 			cb.setTag(rs.getInt("Tag"));
 
 			walzenlage = rs.getString("Walzenlage").split(",");
-			for(int i = 0; i < 3; i++) {
+			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, ringstellung[i].charAt(0));
+			for (int i = 0; i < 3; i++) {
+				cb.setRingstellung(i, Integer.parseInt(ringstellung[i]));
 			}
 
 			cb.setSteckverbindung(rs.getString("Steckverbindung").split(","));
@@ -136,7 +136,7 @@ public class DatenbankSqlite {
 
 	/**
 	 * Generiert einen String aus 10 * 2 unterschiedlichen Großbuchstaben
-	 * @return  String => 10 Buchstabenkombinationen mit Komma getrennt
+	 * @return String => 10 Buchstabenkombinationen mit Komma getrennt
 	 */
 	/*
 	private static String steckverbindung(){
diff --git a/src/main/java/Enigma/model/Hardware.java b/src/main/java/Enigma/model/Hardware.java
index efb0517db59ec4ed9e56a381b05d623aa4fd6004..e9eebc5f029af7cc8cceeddd9c828a70efee3039 100644
--- a/src/main/java/Enigma/model/Hardware.java
+++ b/src/main/java/Enigma/model/Hardware.java
@@ -31,6 +31,7 @@ public class Hardware {
 	 */
 	public Hardware() {
 		this.walzen = new Walze[3];
+		this.nachricht = "";
 	}
 
 	/**
@@ -39,7 +40,8 @@ public class Hardware {
 	 * @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) {
+	public void setzeWalzenNr(int walze, int walzenNr, int ringstellung) {
+		this.walzen[walze] = new Walze(walzenNr, ringstellung);
 	}
 
 	/**
@@ -49,6 +51,7 @@ public class Hardware {
 	 * @param position : int : Umspringpunkt auf der Walze
 	 */
 	public void setzeRing(int walze, int position) {
+		this.walzen[walze].setRingstellung(position);
 	}
 
 	/**
@@ -58,6 +61,7 @@ public class Hardware {
 	 * @param buchstabe : char : Buchstabe der zugewiesen soll
 	 */
 	public void setzePosition(int walze, char buchstabe) {
+		this.walzen[walze].setBuchstabe(buchstabe);
 	}
 
 	/**
@@ -73,12 +77,29 @@ public class Hardware {
 	/**
 	 * Gibt die letzte empfangene Nachricht zurück
 	 * <p>
-	 * String[0] = Die verschlüsselte Nachricht
-	 * String[1] = Nachricht im Klartext
+	 *     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();
 
-		return new String[2];
+		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;
 	}
 
 	/**
@@ -88,6 +109,8 @@ public class Hardware {
 	 * @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);
@@ -98,8 +121,6 @@ public class Hardware {
 		buchstabe = this.walzen[0].codiere2(buchstabe);
 		buchstabe = this.steckbrett.codiere(buchstabe);
 
-		this.dreheWalzen();
-
 		this.nachricht += buchstabe;
 
 		return buchstabe;