diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java
index 6978536e906d2950485513c82069e97cb0e1f67c..d7fa06f1c82efb98033abaf7d37fcaaa6260d7f0 100644
--- a/src/main/java/projekt/enigma/GuiController.java
+++ b/src/main/java/projekt/enigma/GuiController.java
@@ -14,148 +14,144 @@ import java.util.ArrayList;
 public class GuiController {
 
 	//region Klassenvariablen
-    private final static String[] walzenNr = {"I", "II", "III", "IV", "V"};
-    private final static String[] ringNr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26"};
-    private final static String[] position = {"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 ArrayList<MenuItem> mItem;
-    private String textEingabe;
-    private String textCodiert;
-    private boolean resetDisplay;
-    private Codierer codierer;
-    private char chiffrierterBuchstabe;
-    private enum BUCHSTABE_LEUCHTET {AN, AUS}
+	private final static String[] walzenNr = {"I", "II", "III", "IV", "V"};
+	private final static String[] ringNr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26"};
+	private final static String[] position = {"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 ArrayList<MenuItem> mItem;
+	private String textEingabe;
+	private String textCodiert;
+	private boolean resetDisplay;
+	private Codierer codierer;
+	private char chiffrierterBuchstabe;
+	//deklariert die benötigten Textfelder
+	@FXML
+	private TextField tfStecker1, tfStecker2, tfStecker3, tfStecker4, tfStecker5, tfStecker6, tfStecker7, tfStecker8,
+			tfStecker9, tfStecker10, tfCodiert, tfKlartext;
 //endregion
 
-    //region GUI-Elemente
-
-	//deklariert die benötigten Textfelder
-    @FXML
-    private TextField tfStecker1, tfStecker2, tfStecker3, tfStecker4, tfStecker5, tfStecker6, tfStecker7, tfStecker8,
-            tfStecker9, tfStecker10, tfCodiert, tfKlartext;
+	//region GUI-Elemente
 
 	//deklariert die benötigten Buttons
-    @FXML
-    private Button btnA, btnB, btnC, btnD, btnE, btnF, btnG, btnH, btnI, btnJ, btnK, btnL, btnM, btnN, btnO, btnP, btnQ,
-            btnR, btnS, btnT, btnU, btnV, btnW, btnX, btnY, btnZ, btnSenden, btnEmpfangen, btnDelete, btnReset;
-
+	@FXML
+	private Button btnA, btnB, btnC, btnD, btnE, btnF, btnG, btnH, btnI, btnJ, btnK, btnL, btnM, btnN, btnO, btnP, btnQ,
+			btnR, btnS, btnT, btnU, btnV, btnW, btnX, btnY, btnZ, btnSenden, btnEmpfangen, btnDelete, btnReset;
 	//deklariert die benötigten Kreise
-    @FXML
-    private Circle circA, circB, circC, circD, circE, circF, circG, circH, circI, circJ, circK, circL, circM, circN,
-            circO, circP, circQ, circR, circS, circT, circU, circV, circW, circX, circY, circZ;
-
+	@FXML
+	private Circle circA, circB, circC, circD, circE, circF, circG, circH, circI, circJ, circK, circL, circM, circN,
+			circO, circP, circQ, circR, circS, circT, circU, circV, circW, circX, circY, circZ;
 	//deklariert die benötigten Label
-    @FXML
-    private Label lblA, lblB, lblC, lblD, lblE, lblF, lblG, lblH, lblI, lblJ, lblK, lblL, lblM, lblN, lblO, lblP, lblQ,
-            lblR, lblS, lblT, lblU, lblV, lblW, lblX, lblY, lblZ, lblLadeNachricht, lblTagesschluessel,
-            lblSpruchschluessel;
-
-    //deklariert die ProgressBar
-    @FXML
-    private ProgressBar pbLadeNachricht;
-
-    //deklariert die MenueButtons
-    @FXML
-    private MenuButton mBtnWalzPos1, mBtnWalzPos2, mBtnWalzPos3, mBtnNotchPos1, mBtnNotchPos2, mBtnNotchPos3,
-            mBtnStartPos1, mBtnStartPos2, mBtnStartPos3;
-//endregion
-
-    //region Init
+	@FXML
+	private Label lblA, lblB, lblC, lblD, lblE, lblF, lblG, lblH, lblI, lblJ, lblK, lblL, lblM, lblN, lblO, lblP, lblQ,
+			lblR, lblS, lblT, lblU, lblV, lblW, lblX, lblY, lblZ, lblLadeNachricht, lblTagesschluessel,
+			lblSpruchschluessel;
+	//deklariert die ProgressBar
+	@FXML
+	private ProgressBar pbLadeNachricht;
+	//deklariert die MenueButtons
+	@FXML
+	private MenuButton mBtnWalzPos1, mBtnWalzPos2, mBtnWalzPos3, mBtnNotchPos1, mBtnNotchPos2, mBtnNotchPos3,
+			mBtnStartPos1, mBtnStartPos2, mBtnStartPos3;
 
 	/**
 	 * Initialisiert die Elemente GUI und setzt deren Startwerte
 	 */
-    @FXML
-    void initialize() {
-
-        // Variablen setzen
-        textEingabe = "";
-        textCodiert = "";
-        resetDisplay = true;
-
-        //Einträge für Walzen
-        menu(mBtnWalzPos1, walzenNr);
-        menu(mBtnWalzPos2, walzenNr);
-        menu(mBtnWalzPos3, walzenNr);
-
-        //Einträge für die Ringe
-        menu(mBtnNotchPos1, ringNr);
-        menu(mBtnNotchPos2, ringNr);
-        menu(mBtnNotchPos3, ringNr);
-
-        //Einträge für die Startpositionen
-        menu(mBtnStartPos1, position);
-        menu(mBtnStartPos3, position);
-        menu(mBtnStartPos2, position);
-
-        // Initialisieren des Codierers und setzen der Kenngruppe
-        this.codierer = new Codierer();
-        this.codierer.setKenngruppe("enigma");
-
-        // Beim nächsten Tastendruck erstmal das Display löschen damit falschen Nachrichten geschickt werden.
-        this.resetDisplay = true;
-
-        // Einstellungen aus dem Logbuch auslesen und setzen
-        this.setzeTagesSchluessel();
-        this.setzeSteckverbindungen();
-    }
-
-    /**
-     * init Methode zur Erstellung der Einträge und Action Listener für die einzelnen Menüs
-     *
-     * @param button : Button für die die Einträge erstellt werden sollen
-     */
-    private void menu(MenuButton button, String[] str) {
-        mItem = new ArrayList<>();
-        for (int i = 0; i < str.length; i++) {
-            //Eintrag aus str der Arraylist mi hinzufügen
-            mItem.add(new MenuItem(str[i]));
-            //MenuItem mi dem Button button hinzufügen
-            button.getItems().add(mItem.get(i));
-            int finalI = i;
-            //Listener für die einzelnen Einträge
-            ArrayList<MenuItem> finalMi = mItem;
-            mItem.get(i).setOnAction(e -> setMenuBtnText(button, finalMi.get(finalI)));
-        }
-    }
+	@FXML
+	void initialize() {
+
+		// Variablen setzen
+		textEingabe = "";
+		textCodiert = "";
+		resetDisplay = true;
+
+		//Einträge für Walzen
+		menu(mBtnWalzPos1, walzenNr);
+		menu(mBtnWalzPos2, walzenNr);
+		menu(mBtnWalzPos3, walzenNr);
+
+		//Einträge für die Ringe
+		menu(mBtnNotchPos1, ringNr);
+		menu(mBtnNotchPos2, ringNr);
+		menu(mBtnNotchPos3, ringNr);
+
+		//Einträge für die Startpositionen
+		menu(mBtnStartPos1, position);
+		menu(mBtnStartPos3, position);
+		menu(mBtnStartPos2, position);
+
+		// Initialisieren des Codierers und setzen der Kenngruppe
+		codierer = new Codierer();
+		if(codierer.getKenngruppe().equals(""))codierer.setKenngruppe("enigma");
+		else codierer.getKenngruppe();
+
+		// Beim nächsten Tastendruck erstmal das Display löschen damit falschen Nachrichten geschickt werden.
+		resetDisplay = true;
+
+		// Einstellungen aus dem Logbuch auslesen und setzen
+		setzeTagesSchluessel();
+		setzeSteckverbindungen();
+	}
 //endregion
 
-    //region EventHandler/Listener
+	//region Init
+
+	/**
+	 * init Methode zur Erstellung der Einträge und Action Listener für die einzelnen Menüs
+	 *
+	 * @param button : Button für die die Einträge erstellt werden sollen
+	 */
+	private void menu(MenuButton button, String[] str) {
+		mItem = new ArrayList<>();
+		for (int i = 0; i < str.length; i++) {
+			//Eintrag aus str der Arraylist mi hinzufügen
+			mItem.add(new MenuItem(str[i]));
+			//MenuItem mi dem Button button hinzufügen
+			button.getItems().add(mItem.get(i));
+			int finalI = i;
+			//Listener für die einzelnen Einträge
+			ArrayList<MenuItem> finalMi = mItem;
+			mItem.get(i).setOnAction(e -> setMenuBtnText(button, finalMi.get(finalI)));
+		}
+	}
 
 	/**
 	 * Wird ausgelöst wenn der gedrückte Button losgelassen wird.
 	 * Setzt die Hintergrundfarbe des Kreises mit dem chiffrierten Buchstaben auf grau,
 	 * durch Aufruf der Methode leuchten.
+	 *
 	 * @param e => übergibt den zuletzt losgelassenen Button
 	 */
 	@FXML
 	void tasteRauf(MouseEvent e) {
-    	if (e.getSource() == btnA)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnB)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnC)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnD)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnE)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnF)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnG)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnH)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnI)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnJ)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnK)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnL)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnM)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnN)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnO)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnP)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnQ)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnR)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnS)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnT)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnU)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnV)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnW)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnX)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnY)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
-		if (e.getSource() == btnZ)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnA) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnB) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnC) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnD) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnE) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnF) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnG) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnH) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnI) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnJ) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnK) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnL) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnM) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnN) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnO) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnP) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnQ) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnR) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnS) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnT) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnU) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnV) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnW) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnX) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnY) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
+		if (e.getSource() == btnZ) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS);
 	}
+//endregion
+
+	//region EventHandler/Listener
 
 	/**
 	 * Wird ausgelöst sobald eine Taste gedrückt wird (beim drücken der Taste)
@@ -163,7 +159,8 @@ public class GuiController {
 	 * Übergabe des entspechenden Buchstaben als Parameter der Methode setText welche den chiffrierten Buchstaben
 	 * in der Klassen-Variablen chiffrierterBuchstabe ablegt.
 	 * Setzt die Hintergrundfarbe des Kreises mit dem chiffrierten Buchstaben auf gelb
-	 * @param e	=> übergibt den momentan gedrückten Buttons
+	 *
+	 * @param e => übergibt den momentan gedrückten Buttons
 	 */
 	@FXML
 	void tasteRunter(MouseEvent e) {
@@ -171,147 +168,155 @@ public class GuiController {
 			setText(btnA);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnB){
+		if (e.getSource() == btnB) {
 			setText(btnB);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnC){
+		if (e.getSource() == btnC) {
 			setText(btnC);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnD){
+		if (e.getSource() == btnD) {
 			setText(btnD);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnE){
+		if (e.getSource() == btnE) {
 			setText(btnE);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnF){
+		if (e.getSource() == btnF) {
 			setText(btnF);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnG){
+		if (e.getSource() == btnG) {
 			setText(btnG);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnH){
+		if (e.getSource() == btnH) {
 			setText(btnH);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnI){
+		if (e.getSource() == btnI) {
 			setText(btnI);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnJ){
+		if (e.getSource() == btnJ) {
 			setText(btnJ);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnK){
+		if (e.getSource() == btnK) {
 			setText(btnK);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnL){
+		if (e.getSource() == btnL) {
 			setText(btnL);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnM){
+		if (e.getSource() == btnM) {
 			setText(btnM);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnN){
+		if (e.getSource() == btnN) {
 			setText(btnN);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnO){
+		if (e.getSource() == btnO) {
 			setText(btnO);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnP){
+		if (e.getSource() == btnP) {
 			setText(btnP);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnQ){
+		if (e.getSource() == btnQ) {
 			setText(btnQ);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnR){
+		if (e.getSource() == btnR) {
 			setText(btnR);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnS){
+		if (e.getSource() == btnS) {
 			setText(btnS);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnT){
+		if (e.getSource() == btnT) {
 			setText(btnT);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnU){
+		if (e.getSource() == btnU) {
 			setText(btnU);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnV){
+		if (e.getSource() == btnV) {
 			setText(btnV);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnW){
+		if (e.getSource() == btnW) {
 			setText(btnW);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnX){
+		if (e.getSource() == btnX) {
 			setText(btnX);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnY){
+		if (e.getSource() == btnY) {
 			setText(btnY);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnZ){
+		if (e.getSource() == btnZ) {
 			setText(btnZ);
 			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
 		}
-		if (e.getSource() == btnSenden)sendeFunkspruch();
+/*		if (e.getSource() == btnSenden)sendeFunkspruch();
 		if (e.getSource() == btnEmpfangen) empfangeFunkspruch();
-		if (e.getSource() == btnDelete) loeschen();
+		if (e.getSource() == btnDelete) loeschen();*/
 	}
-    /**
-     * Auswertung welcher Button (senden, empfangen oder löschen) gedrückt wurde.
-     * Funktionsaufruf entsprechend des gedrückten Button
-     * @param e => ActionEvent des auslösenden Button
-     */
-    @FXML
-    private void gedrueckteTaste(ActionEvent e) {
-        if (e.getSource() == btnSenden) sendeFunkspruch();
-        if (e.getSource() == btnEmpfangen) empfangeFunkspruch();
-        if (e.getSource() == btnDelete) loeschen();
-        if (e.getSource() == btnReset) setzeTagesSchluessel();
-    }
-//endregion
 
-    //region Methoden
+	/**
+	 * Auswertung welcher Button (senden, empfangen oder löschen) gedrückt wurde.
+	 * Funktionsaufruf entsprechend des gedrückten Button
+	 *
+	 * @param e => ActionEvent des auslösenden Button
+	 */
+	@FXML
+	private void gedrueckteTaste(ActionEvent e) {
+		if (e.getSource() == btnSenden && tfCodiert.getText() != "") sendeFunkspruch();
+		if (e.getSource() == btnEmpfangen) empfangeFunkspruch();
+		if (e.getSource() == btnDelete) loeschen();
+		if (e.getSource() == btnReset) {
+			codierer.resetHardware();
+			this.resetDisplay = true;
+			this.setzeTagesSchluessel();
+		}
+	}
 
 	/**
 	 * Setzt die Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb bzw. auf grau.
-	 * @param leuchte	=> gibt an welcher Kreis (chiffrierter Buchstabe) den Hintergrund ändern soll
+	 *
+	 * @param leuchte       => gibt an welcher Kreis (chiffrierter Buchstabe) den Hintergrund ändern soll
 	 * @param shiningLetter => "AN"  -> setzt Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb
-	 *                         "AUS" -> setzt Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf grau
+	 *                      "AUS" -> setzt Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf grau
 	 */
 	private void leuchten(Circle leuchte, BUCHSTABE_LEUCHTET shiningLetter) {
-		if (shiningLetter==BUCHSTABE_LEUCHTET.AN)leuchte.setStyle("-fx-fill: #FFA500");
-		else if (shiningLetter==BUCHSTABE_LEUCHTET.AUS){
+		if (shiningLetter == BUCHSTABE_LEUCHTET.AN) leuchte.setStyle("-fx-fill: #FFA500");
+		else if (shiningLetter == BUCHSTABE_LEUCHTET.AUS) {
 			leuchte.setStyle("-fx-background-color: grey");
 			leuchte.setStyle("-fx-border-color:  #000000");
 		}
 	}
+//endregion
+
+	//region Methoden
 
 	/**
 	 * Gibt den Buchstabenkreis entsprechend des chiffrierten Buchstabens zurück
-	 * @param chiffLetter	=> chiffrierter Buchstabe
+	 *
+	 * @param chiffLetter => chiffrierter Buchstabe
 	 * @return => Kreis des chiffrierten Buchstabens (der leuchten soll)
 	 */
-	private Circle chiffCircle(char chiffLetter){
-		switch (chiffLetter){
+	private Circle chiffCircle(char chiffLetter) {
+		switch (chiffLetter) {
 			case 'A':
 				return circA;
 			case 'B':
@@ -368,267 +373,324 @@ public class GuiController {
 		return null;
 	}
 
+	/**
+	 * Methode zum setzen des menuButton Textes auf das ausgewählte MenuItem
+	 *
+	 * @param mBtn : MenuButton der Walze
+	 * @param mItm : MenuItem
+	 */
+	private void setMenuBtnText(MenuButton mBtn, MenuItem mItm) {
+		// mb.setText(mi.getText());
+
+		if (mBtn.getId().equals(mBtnStartPos1.getId())) setzePosition(1, mItm.getText().charAt(0));
+		if (mBtn.getId().equals(mBtnStartPos2.getId())) setzePosition(2, mItm.getText().charAt(0));
+		if (mBtn.getId().equals(mBtnStartPos3.getId())) setzePosition(3, mItm.getText().charAt(0));
+		if (mBtn.getId().equals(mBtnWalzPos1.getId())) setzeWalze(1, mItm.getText());
+		if (mBtn.getId().equals(mBtnWalzPos2.getId())) setzeWalze(2, mItm.getText());
+		if (mBtn.getId().equals(mBtnWalzPos3.getId())) setzeWalze(3, mItm.getText());
+		if (mBtn.getId().equals(mBtnNotchPos1.getId()))
+			setzeRing(1, Integer.parseInt(mItm.getText()) - 1);
+		if (mBtn.getId().equals(mBtnNotchPos2.getId()))
+			setzeRing(2, Integer.parseInt(mItm.getText()) - 1);
+		if (mBtn.getId().equals(mBtnNotchPos3.getId()))
+			setzeRing(3, Integer.parseInt(mItm.getText()) - 1);
+/*		tfCodiert.setText("");
+		tfKlartext.setText("");*/
+	}
+
+	/**
+	 * Hier werden die TextFelder, welche die Steckverbindungen darstellen,
+	 * mit dem Werten die die Klasse Codierer zur Verfügung stellt gefüllt.
+	 */
+	private void setzeSteckverbindungen() {
+		tfStecker1.setText(codierer.fetchSteckverbindungen()[0][0] + "" + codierer.fetchSteckverbindungen()[0][1]);
+		tfStecker2.setText(codierer.fetchSteckverbindungen()[1][0] + "" + codierer.fetchSteckverbindungen()[1][1]);
+		tfStecker3.setText(codierer.fetchSteckverbindungen()[2][0] + "" + codierer.fetchSteckverbindungen()[2][1]);
+		tfStecker4.setText(codierer.fetchSteckverbindungen()[3][0] + "" + codierer.fetchSteckverbindungen()[3][1]);
+		tfStecker5.setText(codierer.fetchSteckverbindungen()[4][0] + "" + codierer.fetchSteckverbindungen()[4][1]);
+		tfStecker6.setText(codierer.fetchSteckverbindungen()[5][0] + "" + codierer.fetchSteckverbindungen()[5][1]);
+		tfStecker7.setText(codierer.fetchSteckverbindungen()[6][0] + "" + codierer.fetchSteckverbindungen()[6][1]);
+		tfStecker8.setText(codierer.fetchSteckverbindungen()[7][0] + "" + codierer.fetchSteckverbindungen()[7][1]);
+		tfStecker9.setText(codierer.fetchSteckverbindungen()[8][0] + "" + codierer.fetchSteckverbindungen()[8][1]);
+		tfStecker10.setText(codierer.fetchSteckverbindungen()[9][0] + "" + codierer.fetchSteckverbindungen()[9][1]);
+	}
 
-    /**
-     * Methode zum setzen des menuButton Textes auf das ausgewählte MenuItem
-     *
-     * @param mBtn : MenuButton der Walze
-     * @param mItm : MenuItem
-     */
-    private void setMenuBtnText(MenuButton mBtn, MenuItem mItm) {
-        // mb.setText(mi.getText());
-
-        if (mBtn.getId().equals(mBtnStartPos1.getId())) setzePosition(1, mItm.getText().charAt(0));
-        if (mBtn.getId().equals(mBtnStartPos2.getId())) setzePosition(2, mItm.getText().charAt(0));
-        if (mBtn.getId().equals(mBtnStartPos3.getId())) setzePosition(3, mItm.getText().charAt(0));
-        if (mBtn.getId().equals(mBtnWalzPos1.getId())) setzeWalze(1, mItm.getText());
-        if (mBtn.getId().equals(mBtnWalzPos2.getId())) setzeWalze(2, mItm.getText());
-        if (mBtn.getId().equals(mBtnWalzPos3.getId())) setzeWalze(3, mItm.getText());
-        if (mBtn.getId().equals(mBtnNotchPos1.getId()))
-            setzeRing(1, Integer.parseInt(mItm.getText()) - 1);
-        if (mBtn.getId().equals(mBtnNotchPos2.getId()))
-            setzeRing(2, Integer.parseInt(mItm.getText()) - 1);
-        if (mBtn.getId().equals(mBtnNotchPos3.getId()))
-            setzeRing(3, Integer.parseInt(mItm.getText()) - 1);
-    }
-
-    /**
-     * Hier werden die TextFelder, welche die Steckverbindungen darstellen,
-     * mit dem Werten die die Klasse Codierer zur Verfügung stellt gefüllt.
-     */
-    private void setzeSteckverbindungen() {
-        tfStecker1.setText(codierer.fetchSteckverbindungen()[0][0] + "" + codierer.fetchSteckverbindungen()[0][1]);
-        tfStecker2.setText(codierer.fetchSteckverbindungen()[1][0] + "" + codierer.fetchSteckverbindungen()[1][1]);
-        tfStecker3.setText(codierer.fetchSteckverbindungen()[2][0] + "" + codierer.fetchSteckverbindungen()[2][1]);
-        tfStecker4.setText(codierer.fetchSteckverbindungen()[3][0] + "" + codierer.fetchSteckverbindungen()[3][1]);
-        tfStecker5.setText(codierer.fetchSteckverbindungen()[4][0] + "" + codierer.fetchSteckverbindungen()[4][1]);
-        tfStecker6.setText(codierer.fetchSteckverbindungen()[5][0] + "" + codierer.fetchSteckverbindungen()[5][1]);
-        tfStecker7.setText(codierer.fetchSteckverbindungen()[6][0] + "" + codierer.fetchSteckverbindungen()[6][1]);
-        tfStecker8.setText(codierer.fetchSteckverbindungen()[7][0] + "" + codierer.fetchSteckverbindungen()[7][1]);
-        tfStecker9.setText(codierer.fetchSteckverbindungen()[8][0] + "" + codierer.fetchSteckverbindungen()[8][1]);
-        tfStecker10.setText(codierer.fetchSteckverbindungen()[9][0] + "" + codierer.fetchSteckverbindungen()[9][1]);
-    }
-
-    /**
-     * Die Löschen Funktion löscht das letzte Zeichen im Klartext sowie im Codiert Feld,
-     * der Codierer wird aufgerufen um ebenfalls das letzte Zeichen zu löschen
-     */
-    private void loeschen() {
-        if (textEingabe.length() == 0) {
-            tfKlartext.setText("");
-            tfCodiert.setText("");
-        } else {
-            textEingabe = textEingabe.substring(0, textEingabe.length() - 1);
-            textCodiert = textCodiert.substring(0, textCodiert.length() - 1);
-            tfKlartext.setText(textEingabe);
-            tfCodiert.setText(textCodiert);
-            codierer.letztesZeichenLoeschen();
-            mBtnStartPos1.setText(String.valueOf(this.codierer.fetchWalzen()[0]));
-            mBtnStartPos2.setText(String.valueOf(this.codierer.fetchWalzen()[1]));
-            mBtnStartPos3.setText(String.valueOf(this.codierer.fetchWalzen()[2]));
-        }
-    }
-
-    /**
-     * Holt Nachricht von Klasse Codierer und setzt den chiffrierten Text in das Textfeld tfCodiert,
-	 * sowie den Klartext in das Textfeld tfKlartext. Setzt den
-     */
-    private void empfangeFunkspruch() {
-        String[] empfangeneNachricht = this.codierer.empfangeNachricht();
-        if (empfangeneNachricht[0] != null) {
-            this.tfKlartext.setText(empfangeneNachricht[2]);
-            this.tfCodiert.setText(empfangeneNachricht[1]);
-            this.resetDisplay = true;
-
-            // Spruchschluessel in das Feld lblSpruchschluessel schreiben
-            lblSpruchschluessel.setText(this.codierer.empfangenerSpruchschluessel(empfangeneNachricht[2]));
-
-            this.setzeTagesSchluessel();
-        }
-    }
-
-    /**
-     * Senden der Nachricht mit Hilfe der Klasse Codierer
-	 * Löscht die Textfelder tfKlartext und tfCodiert
-     */
-    private void sendeFunkspruch() {
-        this.tfKlartext.setText("");
-        this.tfCodiert.setText("");
+	/**
+	 * Die Löschen Funktion löscht das letzte Zeichen im Klartext sowie im Codiert Feld,
+	 * der Codierer wird aufgerufen um ebenfalls das letzte Zeichen zu löschen
+	 */
+	private void loeschen() {
+		if (textEingabe.length() == 0) {
+			tfKlartext.setText("");
+			tfCodiert.setText("");
+		} else {
+			textEingabe = textEingabe.substring(0, textEingabe.length() - 1);
+			textCodiert = textCodiert.substring(0, textCodiert.length() - 1);
+			tfKlartext.setText(textEingabe);
+			tfCodiert.setText(textCodiert);
+			codierer.letztesZeichenLoeschen();
+			mBtnStartPos1.setText(String.valueOf(this.codierer.fetchWalzen()[0]));
+			mBtnStartPos2.setText(String.valueOf(this.codierer.fetchWalzen()[1]));
+			mBtnStartPos3.setText(String.valueOf(this.codierer.fetchWalzen()[2]));
+		}
+	}
 
-        try {
-            this.codierer.sendeNachricht();
-        } catch (HttpException | IOException e) {
-            e.printStackTrace();
-        }
+	/**
+	 * Holt Nachricht von Klasse Codierer und setzt den chiffrierten Text in das Textfeld tfCodiert,
+	 * sowie den Klartext in das Textfeld tfKlartext. Setzt den Spruchschlüssel
+	 */
+	private void empfangeFunkspruch() {
+		String[] empfangeneNachricht = codierer.empfangeNachricht();
+		System.out.println("text: " + empfangeneNachricht[0]);
+		System.out.println("Klartext: " + empfangeneNachricht[2]);
+		System.out.println("codiert: " + empfangeneNachricht[1]);
+		if (empfangeneNachricht[0]!=null) {
+			setzeTagesSchluessel();
+			System.out.println("empfange Nachricht");
+			tfKlartext.setText(empfangeneNachricht[2]);
+			tfCodiert.setText(empfangeneNachricht[1]);
+			resetDisplay = true;
+
+			// Spruchschluessel in das Feld lblSpruchschluessel schreiben
+			lblSpruchschluessel.setText(codierer.empfangenerSpruchschluessel(empfangeneNachricht[2]));
+
+
+		}
+	}
 
-    }
+	/**
+	 * Senden der Nachricht mit Hilfe der Klasse Codierer
+	 * Löscht die Textfelder tfKlartext und tfCodiert
+	 */
+	private void sendeFunkspruch() {
+		this.tfKlartext.setText("");
+		this.tfCodiert.setText("");
+
+		try {
+			this.codierer.sendeNachricht();
+		} catch (HttpException | IOException e) {
+			e.printStackTrace();
+		}
+
+	}
 
-    /**
-     * Schreibt Buchstaben des gedrückten Button in Textfeld tfKlartext.
+	/**
+	 * Schreibt Buchstaben des gedrückten Button in Textfeld tfKlartext.
 	 * Übergabe des Buchstaben vom gedrückten Button an die Klasse Codierer
 	 * Ablegen des chiffrierten Buchstaben in der char Variable chiffrierterBuchstabe
 	 * Hinzufügen des chiffrierten Buchstaben in Textfeld tfCodiert
 	 * Aktualisierung der Walzenstellung
-     *
-     * @param pressedButton : gedrückter Knopf
-     */
-    private void setText(Button pressedButton) {
-        if (textEingabe.length() < 250) {
-            if (this.resetDisplay) {
-                this.tfCodiert.setText("");
-                this.tfKlartext.setText("");
-                this.resetDisplay = false;
-                this.codierer.resetHardware();
-                textCodiert = "";
-                textEingabe = "";
-                // Spruchschlüssel generieren und codieren
-                this.codierer.generateSpruchschluessel();
-                // Spruchschluessel in das Feld lblSpruchschluessel schreiben
-                lblSpruchschluessel.setText(this.codierer.getSpruchschluessel());
-            }
-            textEingabe += pressedButton.getText();
-            chiffrierterBuchstabe = codierer.codiere(pressedButton.getText().charAt(0), true);
-            textCodiert += chiffrierterBuchstabe;
-
-            tfKlartext.setText(textEingabe);
-            tfCodiert.setText(textCodiert);
-
-            // Position der Walzen aktuallisieren
-            mBtnStartPos1.setText(String.valueOf(this.codierer.fetchWalzen()[0]));
-            mBtnStartPos2.setText(String.valueOf(this.codierer.fetchWalzen()[1]));
-            mBtnStartPos3.setText(String.valueOf(this.codierer.fetchWalzen()[2]));
-        }
-    }
-
-    /**
-     * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze
-     * ->d.h. welche Walze sitzt auf welcher Position
-     *
-     * @param walzeRoemischNr => gibt die Walzennummer an
-     * @param walzenPosition  => gibt die Position der Walze
-     */
-    private void setzeWalze(int walzenPosition, String walzeRoemischNr) {
-        int walzeNr = 0;
-        switch (walzeRoemischNr) {
-            case "I":
-                walzeNr = 0;
-                break;
-            case "II":
-                walzeNr = 1;
-                break;
-            case "III":
-                walzeNr = 2;
-                break;
-            case "IV":
-                walzeNr = 4;
-                break;
-            case "V":
-                walzeNr = 4;
-                break;
-            default:
-                break;
-        }
-
-        switch (walzenPosition) {
-            case 1:
-                mBtnWalzPos1.setText(walzenNr[walzeNr]);
-                //codierer.setWalze(walzeNr, walzenPosition)
-                break;
-            case 2:
-                mBtnWalzPos2.setText(walzenNr[walzeNr]);
-                break;
-            case 3:
-                mBtnWalzPos3.setText(walzenNr[walzeNr]);
-                break;
-            default:
-                break;
-        }
-    }
-
-    /**
-     * Setzt den Notch (position)=> die Mitnahmeposition der Walze (walze) fest
-     * Mitnahmeposition meint => die nächste Walze wird bei erreichen dieser Position (notch)
-     * um eine Stelle versetzt
-     *
-     * @param ringStellung   => gibt die walze an
-     * @param walzenPosition => gibt den notch der Walze (walze) an
-     */
-    private void setzeRing(int walzenPosition, int ringStellung) {
-        switch (walzenPosition) {
-            case 1:
-                mBtnNotchPos1.setText(ringNr[ringStellung]);
-                break;
-            case 2:
-                mBtnNotchPos2.setText(ringNr[ringStellung]);
-                break;
-            case 3:
-                mBtnNotchPos3.setText(ringNr[ringStellung]);
-                break;
-            default:
-                break;
-        }
-    }
-
-    /**
-     * Setzt die Startposition/ aktuelle Position der Walze
-     *
-     * @param walze     => gibt die walze an
-     * @param buchstabe gibt den Startwert bzw die aktuelle Position der Walze (walze) an
-     */
-    private void setzePosition(int walze, char buchstabe) {
-        switch (walze) {
-            case 1:
-                mBtnStartPos1.setText(String.valueOf(buchstabe));
-                break;
-            case 2:
-                mBtnStartPos2.setText(buchstabe + "");
-                break;
-            case 3:
-                mBtnStartPos3.setText(buchstabe + "");
-                break;
-            default:
-                break;
-        }
-    }
-
-    /**
-     * Setzt den aktuellen TagesSchluessel und zeigt diesen in der GUI an
-     */
-    private void setzeTagesSchluessel() {
-
-        // Umsprungpunkte anzeigen
-        mBtnNotchPos1.setText(String.valueOf(codierer.fetchRingstellung()[0]));
-        mBtnNotchPos2.setText(String.valueOf(codierer.fetchRingstellung()[1]));
-        mBtnNotchPos3.setText(String.valueOf(codierer.fetchRingstellung()[2]));
-        // Walzennummern anzeigen
-        mBtnWalzPos1.setText(String.valueOf(codierer.fetchWalzenNr()[0]));
-        mBtnWalzPos2.setText(String.valueOf(codierer.fetchWalzenNr()[1]));
-        mBtnWalzPos3.setText(String.valueOf(codierer.fetchWalzenNr()[2]));
-        // Position der Walzen anzeigen
-        mBtnStartPos1.setText(String.valueOf(codierer.fetchWalzen()[0]));
-        mBtnStartPos2.setText(String.valueOf(codierer.fetchWalzen()[1]));
-        mBtnStartPos3.setText(String.valueOf(codierer.fetchWalzen()[2]));
-        // Steckbrett Felder setzen
-        tfStecker1.setText(codierer.fetchSteckverbindungen()[0][0] + "" +
-                codierer.fetchSteckverbindungen()[0][1]);
-        tfStecker2.setText(codierer.fetchSteckverbindungen()[1][0] + "" +
-                codierer.fetchSteckverbindungen()[1][1]);
-        tfStecker3.setText(codierer.fetchSteckverbindungen()[2][0] + "" +
-                codierer.fetchSteckverbindungen()[2][1]);
-        tfStecker4.setText(codierer.fetchSteckverbindungen()[3][0] + "" +
-                codierer.fetchSteckverbindungen()[3][1]);
-        tfStecker5.setText(codierer.fetchSteckverbindungen()[4][0] + "" +
-                codierer.fetchSteckverbindungen()[4][1]);
-        tfStecker6.setText(codierer.fetchSteckverbindungen()[5][0] + "" +
-                codierer.fetchSteckverbindungen()[5][1]);
-        tfStecker7.setText(codierer.fetchSteckverbindungen()[6][0] + "" +
-                codierer.fetchSteckverbindungen()[6][1]);
-        tfStecker8.setText(codierer.fetchSteckverbindungen()[7][0] + "" +
-                codierer.fetchSteckverbindungen()[7][1]);
-        tfStecker9.setText(codierer.fetchSteckverbindungen()[8][0] + "" +
-                codierer.fetchSteckverbindungen()[8][1]);
-        tfStecker10.setText(codierer.fetchSteckverbindungen()[9][0] + "" +
-                codierer.fetchSteckverbindungen()[9][1]);
-    }
-    //endregion
+	 *
+	 * @param pressedButton : gedrückter Knopf
+	 */
+	private void setText(Button pressedButton) {
+		if (textEingabe.length() < 250) {
+			if (this.resetDisplay) {
+				this.tfCodiert.setText("");
+				this.tfKlartext.setText("");
+				this.resetDisplay = false;
+				this.codierer.resetHardware();
+				textCodiert = "";
+				textEingabe = "";
+				// Spruchschlüssel generieren und codieren
+				this.codierer.generateSpruchschluessel();
+				// Spruchschluessel in das Feld lblSpruchschluessel schreiben
+				lblSpruchschluessel.setText(this.codierer.getSpruchschluessel());
+			}
+			textEingabe += pressedButton.getText();
+			chiffrierterBuchstabe = codierer.codiere(pressedButton.getText().charAt(0), true);
+			textCodiert += chiffrierterBuchstabe;
+
+			tfKlartext.setText(textEingabe);
+			tfCodiert.setText(textCodiert);
+
+			// Position der Walzen aktuallisieren
+			mBtnStartPos1.setText(String.valueOf(this.codierer.fetchWalzen()[0]));
+			mBtnStartPos2.setText(String.valueOf(this.codierer.fetchWalzen()[1]));
+			mBtnStartPos3.setText(String.valueOf(this.codierer.fetchWalzen()[2]));
+		}
+	}
+
+	/**
+	 * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze
+	 * ->d.h. welche Walze sitzt auf welcher Position
+	 *
+	 * @param walzeRoemischNr => gibt die Walzennummer an
+	 * @param walzenPosition  => gibt die Position der Walze
+	 */
+	private void setzeWalze(int walzenPosition, String walzeRoemischNr) {
+		int walzeNr = 0;
+		switch (walzeRoemischNr) {
+			case "I":
+				walzeNr = 0;
+				break;
+			case "II":
+				walzeNr = 1;
+				break;
+			case "III":
+				walzeNr = 2;
+				break;
+			case "IV":
+				walzeNr = 4;
+				break;
+			case "V":
+				walzeNr = 4;
+				break;
+			default:
+				break;
+		}
+
+		switch (walzenPosition) {
+			case 1:
+				mBtnWalzPos1.setText(walzenNr[walzeNr]);
+				//codierer.setWalze(walzeNr, walzenPosition)
+				break;
+			case 2:
+				mBtnWalzPos2.setText(walzenNr[walzeNr]);
+				break;
+			case 3:
+				mBtnWalzPos3.setText(walzenNr[walzeNr]);
+				break;
+			default:
+				break;
+		}
+	}
+
+	/**
+	 * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze
+	 * -> d.h. welche Walze sitzt auf welcher Position
+	 *
+	 * @param walzenPosition => gibt die Position der Walze
+	 * @param walzeNr        => gibt die Walzennummer an
+	 */
+	private void setzeWalze(int walzenPosition, int walzeNr) {
+		//int walzeNr = 0;
+		switch (walzeNr) {
+			case 1:
+				walzeNr = 0;
+				break;
+			case 2:
+				walzeNr = 1;
+				break;
+			case 3:
+				walzeNr = 2;
+				break;
+			case 4:
+				walzeNr = 3;
+				break;
+			case 5:
+				walzeNr = 4;
+				break;
+			default:
+				break;
+		}
+
+		switch (walzenPosition) {
+			case 1:
+				mBtnWalzPos1.setText(walzenNr[walzeNr]);
+				//codierer.setWalze(walzeNr, walzenPosition)
+				break;
+			case 2:
+				mBtnWalzPos2.setText(walzenNr[walzeNr]);
+				break;
+			case 3:
+				mBtnWalzPos3.setText(walzenNr[walzeNr]);
+				break;
+			default:
+				break;
+		}
+	}
+
+	/**
+	 * Setzt den Notch (position)=> die Mitnahmeposition der Walze (walze) fest
+	 * Mitnahmeposition meint => die nächste Walze wird bei erreichen dieser Position (notch)
+	 * um eine Stelle versetzt
+	 *
+	 * @param ringStellung   => gibt die walze an
+	 * @param walzenPosition => gibt den notch der Walze (walze) an
+	 */
+	private void setzeRing(int walzenPosition, int ringStellung) {
+		switch (walzenPosition) {
+			case 1:
+				mBtnNotchPos1.setText(ringNr[ringStellung]);
+				break;
+			case 2:
+				mBtnNotchPos2.setText(ringNr[ringStellung]);
+				break;
+			case 3:
+				mBtnNotchPos3.setText(ringNr[ringStellung]);
+				break;
+			default:
+				break;
+		}
+	}
+
+	/**
+	 * Setzt die Startposition/ aktuelle Position der Walze
+	 *
+	 * @param walze     => gibt die walze an
+	 * @param buchstabe gibt den Startwert bzw die aktuelle Position der Walze (walze) an
+	 */
+	private void setzePosition(int walze, char buchstabe) {
+		switch (walze) {
+			case 1:
+				mBtnStartPos1.setText(String.valueOf(buchstabe));
+				break;
+			case 2:
+				mBtnStartPos2.setText(buchstabe + "");
+				break;
+			case 3:
+				mBtnStartPos3.setText(buchstabe + "");
+				break;
+			default:
+				break;
+		}
+	}
+
+	/**
+	 * Setzt den aktuellen TagesSchluessel und zeigt diesen in der GUI an
+	 */
+	private void setzeTagesSchluessel() {
+
+		// Umsprungpunkte anzeigen
+		mBtnNotchPos1.setText(String.valueOf(codierer.fetchRingstellung()[0]));
+		mBtnNotchPos2.setText(String.valueOf(codierer.fetchRingstellung()[1]));
+		mBtnNotchPos3.setText(String.valueOf(codierer.fetchRingstellung()[2]));
+		// Walzennummern anzeigen
+		setzeWalze(1, codierer.fetchWalzenNr()[0]);
+		setzeWalze(2, codierer.fetchWalzenNr()[1]);
+		setzeWalze(3, codierer.fetchWalzenNr()[2]);
+		// Position der Walzen anzeigen
+		mBtnStartPos1.setText(String.valueOf(codierer.fetchWalzen()[0]));
+		mBtnStartPos2.setText(String.valueOf(codierer.fetchWalzen()[1]));
+		mBtnStartPos3.setText(String.valueOf(codierer.fetchWalzen()[2]));
+		// Steckbrett Felder setzen
+		tfStecker1.setText(codierer.fetchSteckverbindungen()[0][0] + "" +
+				codierer.fetchSteckverbindungen()[0][1]);
+		tfStecker2.setText(codierer.fetchSteckverbindungen()[1][0] + "" +
+				codierer.fetchSteckverbindungen()[1][1]);
+		tfStecker3.setText(codierer.fetchSteckverbindungen()[2][0] + "" +
+				codierer.fetchSteckverbindungen()[2][1]);
+		tfStecker4.setText(codierer.fetchSteckverbindungen()[3][0] + "" +
+				codierer.fetchSteckverbindungen()[3][1]);
+		tfStecker5.setText(codierer.fetchSteckverbindungen()[4][0] + "" +
+				codierer.fetchSteckverbindungen()[4][1]);
+		tfStecker6.setText(codierer.fetchSteckverbindungen()[5][0] + "" +
+				codierer.fetchSteckverbindungen()[5][1]);
+		tfStecker7.setText(codierer.fetchSteckverbindungen()[6][0] + "" +
+				codierer.fetchSteckverbindungen()[6][1]);
+		tfStecker8.setText(codierer.fetchSteckverbindungen()[7][0] + "" +
+				codierer.fetchSteckverbindungen()[7][1]);
+		tfStecker9.setText(codierer.fetchSteckverbindungen()[8][0] + "" +
+				codierer.fetchSteckverbindungen()[8][1]);
+		tfStecker10.setText(codierer.fetchSteckverbindungen()[9][0] + "" +
+				codierer.fetchSteckverbindungen()[9][1]);
+		this.textCodiert = "";
+		this.textEingabe = "";
+		this.tfKlartext.setText("");
+		this.tfCodiert.setText("");
+	}
+
+	private enum BUCHSTABE_LEUCHTET {AN, AUS}
+	//endregion
 }
diff --git a/src/main/java/projekt/enigma/Main.java b/src/main/java/projekt/enigma/Main.java
index f016016d5dd3ebc14cae30918487a14eec35ac8e..31b558dfa26a54f59783aff516c906719313387d 100644
--- a/src/main/java/projekt/enigma/Main.java
+++ b/src/main/java/projekt/enigma/Main.java
@@ -1,11 +1,18 @@
 package projekt.enigma;
 
 
+import projekt.enigma.threads.ThreadApp;
+import projekt.enigma.threads.ThreadFunkraum;
+
 import java.sql.SQLException;
 
 public class Main {
 
     public static void main(String[] args) throws SQLException {
-        App.main(args);
+        Thread app = new Thread(new ThreadApp());
+//        Thread funk = new Thread(new ThreadFunkraum());
+
+        app.start();
+//        funk.start();
     }
 }
diff --git a/src/main/java/projekt/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java
index 71b2a93ae8e66e475d348c96c254fe16580fc2d0..33789a373f29fab20960043f7890ea8551040ad2 100644
--- a/src/main/java/projekt/enigma/model/Codierer.java
+++ b/src/main/java/projekt/enigma/model/Codierer.java
@@ -48,6 +48,7 @@ public class Codierer {
     //endregion
 
     //region Konstruktor
+
     /**
      * Der Konstruktor des Codierers
      * Hier werden die globalen Variablen auf ihre Standart Werte gesetzt sowie die Objekte Initialisiert.
@@ -66,6 +67,7 @@ public class Codierer {
     //region Funktionen & Methoden
 
     //region Reset & Initialisieren
+
     /**
      * 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
@@ -79,6 +81,8 @@ public class Codierer {
      */
     private void initialisiereHardware() {
 
+        this.nachricht = "";
+
         // Das Steckbrett initialisieren
         Steckbrett sb = new Steckbrett();
         char[][] verbinder = this.codebuch.getSteckverbindung();
@@ -110,15 +114,16 @@ public class Codierer {
         this.initialisiereHardware();
     }
 
-	/**
-	 * Leer das Nachrichten Objekt um eine neue Nachricht aufnehmen zu können
-	 */
-	public void resetNachricht() {
-    	this.nachricht = "";
+    /**
+     * Leer das Nachrichten Objekt um eine neue Nachricht aufnehmen zu können
+     */
+    public void resetNachricht() {
+        this.nachricht = "";
     }
     //endregion
 
     //region Nachrichten handler
+
     /**
      * Befehl die Nachricht an den Funker zu übergeben
      *
@@ -183,6 +188,7 @@ public class Codierer {
     //endregion
 
     //region Generatoren
+
     /**
      * Hier wird ein neuer Spruchschlüssel generiert.
      * <p>
@@ -247,6 +253,7 @@ public class Codierer {
     //endregion
 
     //region setzte Funktionen
+
     /**
      * Setzt den anzuzeigenden Buchstaben (buchstabe) auf der Walze (walzenPosition) und resetet anschließen das
      * Nachrichten Objekt
@@ -255,7 +262,7 @@ public class Codierer {
      * @param buchstabe      : char : Buchstabe der zugewiesen soll
      */
     public void setzeWalze(int walzenPosition, char buchstabe) {
-    	this.resetNachricht();
+        this.resetNachricht();
         this.hardware.setzePosition(walzenPosition, buchstabe);
     }
 
@@ -338,6 +345,7 @@ public class Codierer {
     //endregion
 
     //region codierer
+
     /**
      * Hier wird ein einzelner Buchstabe verschlüsselt.
      * Man muss hier ebenfalls mitgeben ob der codierte String in Codierer.nachricht gespeichert werden soll oder nicht.
@@ -390,8 +398,8 @@ public class Codierer {
     private String decodiere(String codierteNachricht, int tag) {
 
         // Hardware reseten und Tageseinstellungen aus dem Codebuch laden
-	    this.codebuch.fetchTagesschluessel(tag);
-	    this.initialisiereHardware();
+        this.codebuch.fetchTagesschluessel(tag);
+        this.initialisiereHardware();
 
         // Nachricht splitten mit whitespace als delimiter
         String[] nachricht = codierteNachricht.split(" ");
@@ -472,27 +480,13 @@ public class Codierer {
      */
     public void letztesZeichenLoeschen() {
         this.hardware.dreheWalzen(-1);
+        this.nachricht = this.nachricht.substring(0, this.nachricht.length() - 1);
     }
     //endregion
     //endregion
 
     //region Setter
 
-    /**
-     * 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;
-        this.initialisiereHardware();
-
-    }
-    //endregion
-
-    //region Getter
-
     /**
      * Gibt die bisher erstellte Nachricht zurück
      *
@@ -501,6 +495,9 @@ public class Codierer {
     public String getNachricht() {
         return nachricht;
     }
+    //endregion
+
+    //region Getter
 
     /**
      * Liest die Kenngruppe aus welche die Maschine gerade besitzt. Früher war dies eine eindeutige Nummer
@@ -512,6 +509,18 @@ public class Codierer {
         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;
+        this.initialisiereHardware();
+
+    }
+
     /**
      * Der Spruchschlüssel wird, zur internen Verwendung, auch im Klartext gespeichert.
      * Wir brauchen diesen dann zum codieren der eigentlichen Nachricht.
diff --git a/src/main/java/projekt/enigma/model/Funkraum.java b/src/main/java/projekt/enigma/model/Funkraum.java
index 96a3a35b3fa9391afad8d5193ff4923bb368c391..f596cfad8ef16c6e1479e798fb1123afc5cb8da6 100644
--- a/src/main/java/projekt/enigma/model/Funkraum.java
+++ b/src/main/java/projekt/enigma/model/Funkraum.java
@@ -19,24 +19,25 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * Hier sitzt der Funker
- * Der Funkraum kann Funksprüche empfangen und senden.
- * Hierfür wird eine Verbindung zu einem externen Service aufgebaut.
+ * Hier sitzt der Funker.
+ * Der Funkraum kann Funksprueche empfangen und senden.
+ * Hierfuer wird eine Verbindung zu einem externen Service aufgebaut.
  * Dieser Servive erwartet die Nachrichten im JSON Format. Dazu wird ein k als Kenngruppe
- * (Benutzername) übergeben und falls eine Nachricht gesendet werden soll, zusätzlich ein m mit der Nachricht.
+ * (Benutzername) uebergeben und falls eine Nachricht gesendet werden soll, zusätzlich ein m mit der Nachricht.
  * Beides wird als String gesendet.
  */
-class Funkraum {
+public class Funkraum {
+
 	/**
-	 * Zum Empfangen liefert der Server, anstatt der Kenngruppe (k) den Empfangstag der Nachricht mit damit man
+	 * Zum Empfangen liefert der Server, anstatt der Kenngruppe (k), den Empfangstag (t) der Nachricht mit, damit man
 	 * die Grundeinstellungen aus dem Codebuch, für diesen Tag, raussuchen kann.
 	 * {'m': 'Hello world', 't': '26'}
 	 *
-	 * @param kenngruppe : String : Kenngruppe dieser Engiam
-	 * @return String[] : String Array wobei Index 0 dem Empfangstag entspricht und index 1 der empfangenen Nachricht
+	 * @param kenngruppe : String : Kenngruppe dieser Enigma
+	 * @return funkspruch : String[] : String Array wobei Index 0 dem Empfangstag entspricht und Index 1
+	 * der empfangenen Nachricht
 	 */
-	String[] empfangeFunkspruch(String kenngruppe) {
-
+	public String[] empfangeFunkspruch(String kenngruppe) {
 		String[] funkspruch = new String[2];
 
 		HttpClient httpclient = HttpClients.createDefault();
@@ -73,22 +74,21 @@ class Funkraum {
 
 	/**
 	 * Dem Service senden wir unsere Nachricht als POST Parameter (m) und unsere Kenngruppe (k).
-	 * Dieser nimmt die Daten entgegeb und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten
-	 * irgendwann, auf Anfrage, wieder abgerufen werden können.
+	 * Dieser nimmt die Daten entgegen und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten
+	 * irgendwann, auf Anfrage, wieder abgerufen werden koennen.
 	 * <p>
-	 * Darauf antworter der Server dann mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist.
+	 * Darauf antwortet der Server mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist.
 	 * {'result': 200}
 	 * <p>
-	 * Die 200 heißt hier das alles erfolgreich durchgeführt werden konnte. Steht hier etwas anderes, ist ein Fehler
+	 * Die 200 heißt hier, dass alles erfolgreich durchgefuehrt werden konnte. Steht hier etwas anderes, ist ein Fehler
 	 * aufgetreten und die Anfrage war nicht erfolgreich.
-	 * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggF später erneut versucht.
+	 * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggf spaeter erneut versucht werden.
 	 *
-	 * @param funkspruch : String : Der zu sendede Funkspruch
+	 * @param funkspruch : String : Der zu sendende Funkspruch
 	 * @param kenngruppe : String : Die Kenngruppe dieser Engima
 	 * @throws IOException : Exception : Funkspruch konnte nicht gesendet werden
 	 */
-	void sendeFunkspruch(String funkspruch, String kenngruppe) throws HttpException, IOException {
-
+	public void sendeFunkspruch(String funkspruch, String kenngruppe) throws HttpException, IOException {
 		HttpClient httpclient = HttpClients.createDefault();
 		HttpPost httppost = new HttpPost("https://enigma.itstall.de/");
 
@@ -106,9 +106,9 @@ class Funkraum {
 			BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
 			JSONObject result = new JSONObject(reader.readLine());
 			if (result.getInt("result") != 200) {
-				throw new HttpException("Der andere Funker mag deine Nachricht nicht. Rüge ihn wenn du ihn wieder siehst...");
+				throw new HttpException("Der andere Funker mag deine Nachricht nicht. " +
+										"Rüge ihn wenn du ihn wieder siehst...");
 			}
 		}
-
 	}
 }
diff --git a/src/main/java/projekt/enigma/model/Hardware.java b/src/main/java/projekt/enigma/model/Hardware.java
index 4fc0c5ba2b22eac34592a1ea65f32105ff53dec9..290f8c4951774533d1a7db8c0ed8fb603ad2ae79 100644
--- a/src/main/java/projekt/enigma/model/Hardware.java
+++ b/src/main/java/projekt/enigma/model/Hardware.java
@@ -96,14 +96,18 @@ public class Hardware {
     public void dreheWalzen(int richtung) {
         if (richtung > 0) {
             for (int i = 0; i < richtung; i++) {
-                if (this.walzen[2].dreheWalze(1) && this.walzen[1].dreheWalze(1)) {
-                    this.walzen[0].dreheWalze(1);
+                if (this.walzen[2].dreheWalze(1)) {
+                    if(this.walzen[1].dreheWalze(1)) {
+                        this.walzen[0].dreheWalze(1);
+                    }
                 }
             }
         } else {
             for (int i = 0; i > richtung; richtung++) {
-                if (this.walzen[2].dreheWalze(-1) && this.walzen[1].dreheWalze(-1)) {
-                    this.walzen[0].dreheWalze(-1);
+                if (this.walzen[2].dreheWalze(-1)) {
+                    if(this.walzen[1].dreheWalze(-1)) {
+                        this.walzen[0].dreheWalze(-1);
+                    }
                 }
             }
         }
@@ -156,7 +160,6 @@ public class Hardware {
     //endregion
 
     //region Getter
-
     /**
      * Gibt das Objekt des Steckbretts zurück
      *
diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java
index e477e35fb6c22a22abf5dbbfe7a0b19616bc2413..92b244d0fa631620e50e297c1964eb0c51951a24 100644
--- a/src/main/java/projekt/enigma/model/Walze.java
+++ b/src/main/java/projekt/enigma/model/Walze.java
@@ -16,169 +16,168 @@ package projekt.enigma.model;
  */
 public class Walze {
 
-    //region Variablen
-    /**
-     * Das String Array aller bekannter aktuellen Walzen
-     */
-    private String[] walzen;
-
-    /**
-     * alphabet : String dass die Buchstaben des Alphabets enthaelt
-     */
-    private String alphabet;
-
-    /**
-     * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt
-     */
-    private char ringstellung;
-
-    /**
-     * walzennr : int : Bestimmt, welche Walze genutzt wird
-     */
-    private int walzenNr;
-
-    /**
-     * Die Anzahl der getätigten Walzen Drehungen
-     */
-    private int turns;
-    //endregion
-
-    //region Konstruktor
-    /**
-     * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt
-     *
-     * @param walzenNr     : int : Nummer der gewaehlten Walze
-     * @param ringstellung : int : Einstellung des Umsprungpunktes
-     */
-    public Walze(int walzenNr, int ringstellung) {
-
-        this.walzen = new String[5];
-        this.walzen[0] = "EKMFLGDQVZNTOWYHXUSPAIBRCJ";
-        this.walzen[1] = "AJDKSIRUXBLHWTMCQGZNPYFVOE";
-        this.walzen[2] = "BDFHJLCPRTXVZNYEIWGAKMUSQO";
-        this.walzen[3] = "ESOVPZJAYQUIRHXLNFTGKDCMWB";
-        this.walzen[4] = "VZBRGITYUPSDNHLXAWMJQOFECK";
-        this.alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-        this.turns = 0;
-
-        this.setWalzenNr(walzenNr);
-        this.setRingstellung(ringstellung);
-    }
-    //endregion
-
-    //region Funktionen & Methoden
-    /**
-     * Dreht die Walze: Zählt die Umdrehungen (Turns) um eines hoch oder runter, je nach Drehrichtung.
-     * <p>
-     * Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde.
-     *
-     * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurück
-     * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde
-     * TODO: Doku
-     */
-    public boolean dreheWalze(int richtung) {
-
-        boolean checkRing = false;
-
-        if (richtung == -1 || richtung == 1) {
-            if (richtung == 1) {
-                this.turns++;
-            } else if (richtung == -1) {
-                this.turns--;
-            }
-
-            // gleicht die Ringstellung mit der aktuellen Position ab
-            if (this.getPosition() + richtung == this.ringstellung) {
-                checkRing = true;
-            }
-        }
-
-        return checkRing;
-    }
-
-    /**
-     * Codiert den mitgegebenen Buchstaben anhand der gewaehlten Walze.
-     *
-     * @param buchstabe : char : Buchstabe, der verschluesselt werden soll
-     * @return buchstabe : char : verschluesselter Buchstabe
-     */
-    public char codiere(char buchstabe) {
-        return this.fetchWalze().charAt((this.alphabet.indexOf(buchstabe) + this.turns) % 26);
-    }
-
-    /**
-     * Decodiert den mitgegebenen Buchstaben mit Hilfe der (verschobenen) Walze
-     *
-     * @param buchstabe : char : Buchstabe, der decodiert werden soll
-     * @return buchstabe : char : decodierter Buchstabe
-     */
-    public char codiere2(char buchstabe) {
-        return this.alphabet.charAt((this.fetchWalze().indexOf(buchstabe) - this.turns + 260) % 26);
-    }
-
-    /**
-     * Holt den korrekten String zu der Walze
-     *
-     * @return walze : Character[] : gibt die gewaehlte Walze zurueck
-     */
-    private String fetchWalze() {
-
-        return walzen[walzenNr];
-    }
-    //endregion
-
-    //region Setter
-    /**
-     * * TODO: Funktionsname hat sich geändert
-     * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen.
-     * Buchstaben werden automatisch in Grossbuchstaben umgewandelt.
-     * Ist die Grundeinstellung nicht 'A', wird die Methode dreheWalze() aufgerufen.
-     *
-     * @param buchstabe : Character : Einstellung der Walze
-     */
-    public void setPosition(Character buchstabe) {
-        this.turns = alphabet.indexOf(buchstabe);
-    }
-
-    /**
-     * Setzt die Walzennummer. Es stehen fuenf Walze zur Auswahl.
-     *
-     * @param walzenNr : int : Walzennummer
-     */
-    public void setWalzenNr(int walzenNr) {
-        if ((walzenNr > 0) && (walzenNr < 6)) {
-            this.walzenNr = walzenNr - 1;
-        } else {
-            System.err.println("Keine gültige Walzennummer");
-        }
-    }
-
-    /**
-     * Setzt die Initiale Ringstellung der Walze.
-     * Es sind nur Zahlen von 1 - 26 zugelassen.
-     * <p>
-     * Die Ringstellung wird zum char umgewandelt.
-     * Im Fehlerfall wird die Ringstellung standardmaessig auf 'Z' gesetzt.
-     *
-     * @param ringstellung : int : Punkt an dem die Walze umspringt
-     */
-    public void setRingstellung(int ringstellung) {
-        if ((ringstellung > 0) && (ringstellung <= 26)) {
-            this.ringstellung = this.alphabet.charAt(ringstellung - 1);
-        } else {
-            this.ringstellung = 'Z';
-        }
-    }
-    //endregion
-
-    //region Getter
-    /**
-     * Gibt den Character zurueck, der aktuell in der Walze eingestellt ist
-     *
-     * @return Character am Index 0 des (verschobenen) Alphabets zurueck
-     */
-    public Character getPosition() {
-        return this.alphabet.charAt(turns % 26);
-    }
-    //endregion
+	//region Variablen
+	/**
+	 * Die Anzahl der getätigten Walzen Drehungen
+	 * TODO: Wieder auf private setzen
+	 */
+	public int turns;
+	/**
+	 * Das String Array aller bekannter aktuellen Walzen
+	 */
+	private String[] walzen;
+	/**
+	 * alphabet : String dass die Buchstaben des Alphabets enthaelt
+	 */
+	private String alphabet;
+	/**
+	 * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt
+	 */
+	private char ringstellung;
+	/**
+	 * walzennr : int : Bestimmt, welche Walze genutzt wird
+	 */
+	private int walzenNr;
+	//endregion
+
+	//region Konstruktor
+	/**
+	 * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt
+	 *
+	 * @param walzenNr     : int : Nummer der gewaehlten Walze
+	 * @param ringstellung : int : Einstellung des Umsprungpunktes
+	 */
+	public Walze(int walzenNr, int ringstellung) {
+
+		this.walzen = new String[5];
+		this.walzen[0] = "EKMFLGDQVZNTOWYHXUSPAIBRCJ";
+		this.walzen[1] = "AJDKSIRUXBLHWTMCQGZNPYFVOE";
+		this.walzen[2] = "BDFHJLCPRTXVZNYEIWGAKMUSQO";
+		this.walzen[3] = "ESOVPZJAYQUIRHXLNFTGKDCMWB";
+		this.walzen[4] = "VZBRGITYUPSDNHLXAWMJQOFECK";
+		this.alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+		this.turns = 0;
+
+		this.setWalzenNr(walzenNr);
+		this.setRingstellung(ringstellung);
+	}
+	//endregion
+
+	//region Funktionen & Methoden
+	/**
+	 * Dreht die Walze: Zählt die Umdrehungen (Turns) um eines hoch oder runter, je nach Drehrichtung.
+	 * <p>
+	 * Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde.
+	 *
+	 * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurück
+	 * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde
+	 * TODO: Doku
+	 */
+	public boolean dreheWalze(int richtung) {
+
+		boolean checkRing = false;
+		int korrektorFaktor = 0;
+
+		if (richtung == -1 || richtung == 1) {
+			if (richtung == 1) {
+				this.turns++;
+			} else if (richtung == -1) {
+				korrektorFaktor = 1;
+				this.turns--;
+			}
+
+			// gleicht die Ringstellung mit der aktuellen Position ab
+			if ((this.alphabet.indexOf(this.getPosition()) + korrektorFaktor) % 26 == this.alphabet.indexOf(this.ringstellung)) {
+				checkRing = true;
+			}
+		}
+
+		return checkRing;
+	}
+
+	/**
+	 * Codiert den mitgegebenen Buchstaben anhand der gewaehlten Walze.
+	 *
+	 * @param buchstabe : char : Buchstabe, der verschluesselt werden soll
+	 * @return buchstabe : char : verschluesselter Buchstabe
+	 */
+	public char codiere(char buchstabe) {
+		return this.fetchWalze().charAt((this.alphabet.indexOf(buchstabe) + this.turns) % 26);
+	}
+
+	/**
+	 * Decodiert den mitgegebenen Buchstaben mit Hilfe der (verschobenen) Walze
+	 *
+	 * @param buchstabe : char : Buchstabe, der decodiert werden soll
+	 * @return buchstabe : char : decodierter Buchstabe
+	 */
+	public char codiere2(char buchstabe) {
+		return this.alphabet.charAt((this.fetchWalze().indexOf(buchstabe) - this.turns + 260) % 26);
+	}
+
+	/**
+	 * Holt den korrekten String zu der Walze
+	 *
+	 * @return walze : Character[] : gibt die gewaehlte Walze zurueck
+	 */
+	private String fetchWalze() {
+
+		return walzen[walzenNr];
+	}
+	//endregion
+
+	//region Setter
+	/**
+	 * Setzt die Walzennummer. Es stehen fuenf Walze zur Auswahl.
+	 *
+	 * @param walzenNr : int : Walzennummer
+	 */
+	public void setWalzenNr(int walzenNr) {
+		if ((walzenNr > 0) && (walzenNr < 6)) {
+			this.walzenNr = walzenNr - 1;
+		} else {
+			System.err.println("Keine gültige Walzennummer");
+		}
+	}
+
+	/**
+	 * Setzt die Initiale Ringstellung der Walze.
+	 * Es sind nur Zahlen von 1 - 26 zugelassen.
+	 * <p>
+	 * Die Ringstellung wird zum char umgewandelt.
+	 * Im Fehlerfall wird die Ringstellung standardmaessig auf 'Z' gesetzt.
+	 *
+	 * @param ringstellung : int : Punkt an dem die Walze umspringt
+	 */
+	public void setRingstellung(int ringstellung) {
+		if ((ringstellung > 0) && (ringstellung <= 26)) {
+			this.ringstellung = this.alphabet.charAt(ringstellung - 1);
+		} else {
+			this.ringstellung = 'Z';
+		}
+	}
+
+	/**
+	 * * TODO: Funktionsname hat sich geändert
+	 * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen.
+	 * Buchstaben werden automatisch in Grossbuchstaben umgewandelt.
+	 * Ist die Grundeinstellung nicht 'A', wird die Methode dreheWalze() aufgerufen.
+	 *
+	 * @param buchstabe : Character : Einstellung der Walze
+	 */
+	public void setPosition(Character buchstabe) {
+		this.turns = alphabet.indexOf(buchstabe);
+	}
+	//endregion
+
+	//region Getter
+	/**
+	 * Gibt den Character zurueck, der aktuell in der Walze eingestellt ist
+	 *
+	 * @return Character am Index 0 des (verschobenen) Alphabets zurueck
+	 */
+	public Character getPosition() {
+		return this.alphabet.charAt(turns % 26);
+	}
+	//endregion
 }
\ No newline at end of file
diff --git a/src/main/java/projekt/enigma/threads/ThreadApp.java b/src/main/java/projekt/enigma/threads/ThreadApp.java
new file mode 100644
index 0000000000000000000000000000000000000000..47cbfb2de183fb7925ccc60722add7f58f48f166
--- /dev/null
+++ b/src/main/java/projekt/enigma/threads/ThreadApp.java
@@ -0,0 +1,17 @@
+package projekt.enigma.threads;
+
+import projekt.enigma.App;
+
+import java.sql.SQLException;
+
+public class ThreadApp implements Runnable {
+    private String[] args;
+
+    @Override
+    public void run() {
+        System.out.println("ThreadApp" + Thread.currentThread());
+        App app = new App();
+        app.main(args);
+
+    }
+}
diff --git a/src/main/java/projekt/enigma/threads/ThreadFunkraum.java b/src/main/java/projekt/enigma/threads/ThreadFunkraum.java
new file mode 100644
index 0000000000000000000000000000000000000000..b4a978dd87fce4095e9471294eeabace75ca8029
--- /dev/null
+++ b/src/main/java/projekt/enigma/threads/ThreadFunkraum.java
@@ -0,0 +1,26 @@
+package projekt.enigma.threads;
+
+import org.apache.http.HttpException;
+import projekt.enigma.model.Codierer;
+import projekt.enigma.model.Funkraum;
+
+import java.io.IOException;
+
+public class ThreadFunkraum implements Runnable {
+    String kenngruppe = new Codierer().getKenngruppe();
+//    String funkspruch;
+    @Override
+    public void run() {
+        Funkraum funkraum = new Funkraum();
+        System.out.println("Threadfunkraum"  + Thread.currentThread());
+        funkraum.empfangeFunkspruch(kenngruppe);
+
+//        try {
+//            funkraum.sendeFunkspruch(funkspruch, kenngruppe);
+//        } catch (HttpException he) {
+//            System.err.println("Error");
+//        } catch (IOException io) {
+//            System.err.println("Error");
+//        }
+    }
+}