diff --git a/src/main/java/Enigma/model/Hardware.java b/src/main/java/Enigma/model/Hardware.java
index 8b1674a30fab0fa501d21942d83e330619d5f0db..21d6626d16aa06a322975e008f4625ee543dad1a 100644
--- a/src/main/java/Enigma/model/Hardware.java
+++ b/src/main/java/Enigma/model/Hardware.java
@@ -1,10 +1,5 @@
 package Enigma.model;
 
-import org.apache.http.HttpException;
-
-import java.io.IOException;
-import java.util.Random;
-
 /**
  * In dieser Klasse wird die Hardware zusammen gefasst.
  * Alle Komponenter der Enigma laufen hier zusammen.
@@ -59,7 +54,7 @@ public class Hardware {
 	 * @param buchstabe : char : Buchstabe der zugewiesen soll
 	 */
 	public void setzePosition(int walze, char buchstabe) {
-		this.walzen[walze].setBuchstabe(buchstabe);
+		this.walzen[walze].setPosition(buchstabe);
 	}
 
 	/**
@@ -69,17 +64,29 @@ public class Hardware {
 	 * @return char : Der ver/entschlüsselte Buchstabe
 	 */
 	public char codiere(char buchstabe) {
+		System.out.println(this.walzen[2].getPosition());
 		this.dreheWalzen();
+		System.out.println(this.walzen[2].getPosition());
 
+		System.out.print(buchstabe);
 		buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe));
-		buchstabe = this.walzen[0].codiere(buchstabe);
-		buchstabe = this.walzen[1].codiere(buchstabe);
+		System.out.print(" : " + buchstabe);
 		buchstabe = this.walzen[2].codiere(buchstabe);
+		System.out.print(" : " + buchstabe);
+		buchstabe = this.walzen[1].codiere(buchstabe);
+		System.out.print(" : " + buchstabe);
+		buchstabe = this.walzen[0].codiere(buchstabe);
+		System.out.print(" : " + buchstabe);
 		buchstabe = this.reflektor.codiere(buchstabe);
-		buchstabe = this.walzen[2].codiere2(buchstabe);
-		buchstabe = this.walzen[1].codiere2(buchstabe);
+		System.out.print(" : " + buchstabe);
 		buchstabe = this.walzen[0].codiere2(buchstabe);
+		System.out.print(" : " + buchstabe);
+		buchstabe = this.walzen[1].codiere2(buchstabe);
+		System.out.print(" : " + buchstabe);
+		buchstabe = this.walzen[2].codiere2(buchstabe);
+		System.out.print(" : " + buchstabe);
 		buchstabe = this.steckbrett.codiere(buchstabe);
+		System.out.println(" : " + buchstabe);
 
 		return buchstabe;
 	}
@@ -89,9 +96,9 @@ public class Hardware {
 	 * 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[2].dreheWalze()) {
 			if (this.walzen[1].dreheWalze()) {
-				this.walzen[2].dreheWalze();
+				this.walzen[0].dreheWalze();
 			}
 		}
 	}
diff --git a/src/main/java/Enigma/model/Reflektor.java b/src/main/java/Enigma/model/Reflektor.java
index a3069b863341a420aa9e30cd70620d8d043706c6..f1a34870aefeb8b1de5952a4e91e049396c39e75 100644
--- a/src/main/java/Enigma/model/Reflektor.java
+++ b/src/main/java/Enigma/model/Reflektor.java
@@ -44,6 +44,7 @@ public class Reflektor {
                 break;
             }
         }
+
         /*Im Char-Array WALZE_REFLEKTOR wird der Character an der Position iPositionReflektor ausgegeben*/
         return WALZE_REFLEKTOR[iPositionReflektor];
     }
diff --git a/src/main/java/Enigma/model/Steckbrett.java b/src/main/java/Enigma/model/Steckbrett.java
index d4c503af76d16371f4791c3e6cdf2e6552aaa766..5e7652a2ba64dba43d8d799a93fb267157853115 100644
--- a/src/main/java/Enigma/model/Steckbrett.java
+++ b/src/main/java/Enigma/model/Steckbrett.java
@@ -1,18 +1,18 @@
 package Enigma.model;
 
 /**
- *
+ *TODO Dokumentieren
  */
 public class Steckbrett {
     /**
-     *
+     *TODO Dokumentieren
      */
     private int zaehler;
     private Character[] orginalBuchstaben;
     private Character[] getauschteBuchstaben;
 
     /**
-     *
+     *TODO Dokumentieren
      */
     public Steckbrett() {
 
@@ -22,7 +22,7 @@ public class Steckbrett {
 
 
     /**
-     *
+     *TODO Dokumentieren
      * @param buchstabe1
      * @param buchstabe2
      * @return
@@ -40,7 +40,7 @@ public class Steckbrett {
     }
 
     /**
-     *
+     *TODO Dokumentieren
      * @return
      */
     public boolean ueberpruefeVertauschungen() {
@@ -57,7 +57,7 @@ public class Steckbrett {
     }
 
     /**
-     * 
+     * TODO Dokumentieren
      * @param buchstabe
      * @return
      */
diff --git a/src/main/java/Enigma/model/Walze.java b/src/main/java/Enigma/model/Walze.java
index 6be3bde64f424e9489a1ef742b017137d2bed073..b6c1327e4ff335403e46c6d2e35c01b9b4506321 100644
--- a/src/main/java/Enigma/model/Walze.java
+++ b/src/main/java/Enigma/model/Walze.java
@@ -1,7 +1,5 @@
 package Enigma.model;
 
-import java.time.Year;
-
 /**
  * Klasse Walze
  * <p>
@@ -27,13 +25,12 @@ public class Walze {
 	 * 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[] walzeAlpha;
 	private Character buchstabe;
-	private int ringstellung;
+	private char ringstellung;
 	private int walzennr;
 	private int iPositionBuchstabe;
-	private int verschoben;
-	private Character[] walze;
+	private Character[] alphabet;
 
 
 	/**
@@ -43,12 +40,12 @@ public class Walze {
 	 * @param ringstellung : Character : Einstellung des Notch
 	 */
 	public Walze(int walzennr, int ringstellung) {
-		this.walze = new Character[26];
+		this.alphabet = new Character[]{'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'};
 		this.walzennr = walzennr;
 		this.buchstabe = 'A';
 		this.iPositionBuchstabe = 0;
-		this.verschoben = 0;
-		this.ringstellung = ringstellung;
+		this.ringstellung = this.alphabet[ringstellung -  1];
+		this.walzeAlpha = new Character[]{'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'};
 	}
 
 
@@ -58,11 +55,10 @@ public class Walze {
 	 * @return walze : Character[] : gibt die gewaehlte Walze zurueck
 	 */
 	private Character[] walzenNummer() {
-
+		Character[] walze = new Character[26];
 		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'};
 
@@ -88,6 +84,10 @@ public class Walze {
 	}
 
 
+	/**
+	 *  TODO Dokumentieren
+	 * @return
+	 */
 	//walzenPosition() return int => Gibt die aktuelle Position des Buchstabens zurück
 	public char walzenPosition() {
 
@@ -102,9 +102,10 @@ public class Walze {
 	// Setter für Ringstellung
 
 	/**
+	 *  TODO Dokumentieren
 	 * @return ringstellung : Character : gibt die neue Ringstellung zurueck
 	 */
-	public int getRingstellung() {
+	public char getRingstellung() {
 		return ringstellung;
 	}
 
@@ -118,39 +119,48 @@ public class Walze {
 	public void setRingstellung(int ringstellung) {
 
 		if (ringstellung > 0 && ringstellung <= 26) {
-			this.ringstellung = ringstellung;
+			this.ringstellung = this.alphabet[ringstellung - 1];
 		} else {
-			this.ringstellung = 1;
+			this.ringstellung = 'Z';
 		}
 	}
 
-	//dreheWalze() return boolean => Wenn Notch erreicht, gib true zurück, ansonsten false
-	public boolean dreheWalze() {
+	/**
+	 * dreheWalze() return boolean => Wenn Notch erreicht, gib true zurück, ansonsten false
+	 * TODO Doku
+	 */
+	public boolean dreheWalze(int... args) {
 
-		boolean checkRing;
+		boolean checkRing = false;
 
-		if (this.iPositionBuchstabe == 25) {
-			this.iPositionBuchstabe = 0;
+		if (args[0] > 1) {
+			for (int i = 0; i < args[0]; i++) {
+				verschiebung();
+			}
 		} else {
-			this.iPositionBuchstabe += 1;
+			verschiebung();
 		}
 
-		checkRing = this.iPositionBuchstabe == (getRingstellung() - 1);
+		setPosition(walzeAlpha[0]);
 
-		setBuchstabe(walzeAlpha[iPositionBuchstabe]);
+		if(this.getPosition().equals(this.ringstellung)) {
+			checkRing = true;
+		}
 
 		return checkRing;
 	}
 
-	public int verschiebung(int i) {
+	/**
+	 *  TODO Dokumentieren
+	 */
+	public void verschiebung() {
 
-		if((i + iPositionBuchstabe) >= 26) {
-			int verschoben = (i + iPositionBuchstabe) - 26 ;
-		} else {
-			verschoben = i + iPositionBuchstabe;
+		Character[] neueWalze = new Character[26];
+		for (int index = 0; index < 25; index++) {
+			neueWalze[index + 1] = this.walzeAlpha[index];
 		}
-
-		return verschoben;
+		neueWalze[0] = this.walzeAlpha[25];
+		this.walzeAlpha = neueWalze;
 	}
 
 
@@ -164,7 +174,7 @@ public class Walze {
 
 		for (int i = 0; i < walzeAlpha.length; i++) {
 			if (walzeAlpha[i].equals(buchstabe)) {
-				buchstabe = walzenNummer()[verschiebung(i)];
+				buchstabe = walzenNummer()[i];
 				break;
 			}
 		}
@@ -180,10 +190,9 @@ public class Walze {
 	 * @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[verschiebung(i)];
+				buchstabe = walzeAlpha[i];
 				break;
 			}
 		}
@@ -195,6 +204,7 @@ public class Walze {
 
 
 	/**
+	 * TODO Dokumentieren
 	 * @return buchstabe : Character : gibt den neuen Buchstaben zurueck
 	 */
 	public Character getBuchstabe() {
@@ -205,24 +215,41 @@ public class Walze {
 	 * 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.
+	 * TODO Funktionsname hat sich geändert
 	 *
 	 * @param buchstabe : Character : Grundeinstellung der Walze
 	 */
-	public void setBuchstabe(Character buchstabe) {
+	public void setPosition(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;
-				}
-			}
+			System.arraycopy(this.alphabet, 0, this.walzeAlpha, 0, this.alphabet.length);
+			dreheWalze(this.getArrayIndex(buchstabe, this.alphabet) + 1);
 		} else {
 			this.buchstabe = 'A';
 		}
 	}
 
+	/**
+	 * TODO Dokumentieren
+	 * @param buchstabe
+	 * @param array
+	 * @return
+	 */
+	public int getArrayIndex(Character buchstabe, Character[] array) {
+		int result = -1;
+
+		for (int i = 0; i < array.length; i++) {
+			if (array[i].equals(buchstabe)) {
+				result = i;
+			}
+		}
+
+		return result;
+	}
+
 	//TODO: ??? Brauchen wir Setter, wo findet Überprüfung der Walzennr. statt.
+	// Überprüfung sollte in walzenNummer() statt finden.
 
 	/**
 	 * Definiert die Walze. Es stehen fuenf Walze zur Auswahl.
@@ -237,4 +264,12 @@ public class Walze {
 		}
 	}
 
+	/**
+	 * TODO: Dokumentieren
+	 *
+	 * @return
+	 */
+	public Character getPosition() {
+		return walzeAlpha[0];
+	}
 }
diff --git a/src/test/java/Enigma/model/HardwareTest.java b/src/test/java/Enigma/model/HardwareTest.java
index 78bd24110f1742bd715af8f4bcceac50dfc7e243..90a3936f217a4a9c74176ecbe6345070843de251 100644
--- a/src/test/java/Enigma/model/HardwareTest.java
+++ b/src/test/java/Enigma/model/HardwareTest.java
@@ -15,37 +15,35 @@ public class HardwareTest {
 		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 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'};
 		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'};
+		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'};
         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);
+		char result;
+		result = h.codiere('A');
+		Assert.assertEquals("Codiere: A Erwartet P, erhalten "+ result, 'P', result);
+		result = h.codiere('B');
+		Assert.assertEquals("Codiere: B Erwartet R, erhalten "+ result, 'R', result);
 		result = h.codiere('I');
-		Assert.assertEquals("Codiere: Erwartet S, erhalten "+ result, 'S', result);
+		Assert.assertEquals("Codiere: I Erwartet E, erhalten "+ result, 'E', result);
 		result = h.codiere('F');
-		Assert.assertEquals("Codiere: Erwartet P, erhalten "+ result, 'P', result);
+		Assert.assertEquals("Codiere: F Erwartet A, erhalten "+ result, 'A', 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);
+		h.getWalzen()[2].setPosition('A');
 		result = h.codiere('P');
-		Assert.assertEquals("Decodiere: Erwartet F, erhalten "+ result, 'F', result);
+		Assert.assertEquals("Decodiere: P Erwartet A, erhalten "+ result, 'A', result);
+		result = h.codiere('R');
+		Assert.assertEquals("Decodiere: R Erwartet B, erhalten "+ result, 'B', result);
+		result = h.codiere('E');
+		Assert.assertEquals("Decodiere: E Erwartet I, erhalten "+ result, 'I', result);
+		result = h.codiere('A');
+		Assert.assertEquals("Decodiere: A Erwartet F, erhalten "+ result, 'F', result);
 
 		h.getSteckbrett().setzeVertauschung('B', 'G');
 		h.getSteckbrett().setzeVertauschung('D', 'F');