diff --git a/src/main/java/projekt/enigma/App.java b/src/main/java/projekt/enigma/App.java
index 43b97bd83a4696a0bab8fc00d5a656aaeeb97b55..eff5d686c3144f8f32d639b336b25cc855998093 100644
--- a/src/main/java/projekt/enigma/App.java
+++ b/src/main/java/projekt/enigma/App.java
@@ -1,11 +1,11 @@
 package projekt.enigma;
 
-import projekt.enigma.model.Codierer;
 import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
+
 import java.io.IOException;
 
 /**
@@ -65,7 +65,7 @@ public class App extends Application {
 	 */
 	@Override
 	public void start(Stage stage) throws IOException {
-		scene = new Scene(loadFXML("gui"));
+		scene = new Scene(loadFXML("kenngruppe"));
 		stage.setScene(scene);
 		stage.setResizable(true);
 		stage.show();
diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java
index 6978536e906d2950485513c82069e97cb0e1f67c..ec02f099bec2a5a13a98206a6513eaa2f08bebef 100644
--- a/src/main/java/projekt/enigma/GuiController.java
+++ b/src/main/java/projekt/enigma/GuiController.java
@@ -14,148 +14,142 @@ 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}
-//endregion
-
-    //region GUI-Elemente
-
+	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;
+	@FXML
+	private TextField tfStecker1, tfStecker2, tfStecker3, tfStecker4, tfStecker5, tfStecker6, tfStecker7, tfStecker8,
+			tfStecker9, tfStecker10, tfCodiert, tfKlartext;
+//endregion
 
+	//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
+		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();
+	}
 //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 +157,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 +166,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 +371,319 @@ 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]);
+	}
+
+	/**
+	 * 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]));
+		}
+	}
 
-    /**
-     * 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,
+	/**
+	 * 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("");
+	 */
+	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();
+		}
+	}
 
-        try {
-            this.codierer.sendeNachricht();
-        } catch (HttpException | IOException e) {
-            e.printStackTrace();
-        }
+	/**
+	 * 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/KenngruppeController.java b/src/main/java/projekt/enigma/KenngruppeController.java
index 3371b0f647ea6f27a72082ae0f18a44b79faf489..57d0be7a5a771caed15905594803cff20cb2d973 100644
--- a/src/main/java/projekt/enigma/KenngruppeController.java
+++ b/src/main/java/projekt/enigma/KenngruppeController.java
@@ -1,12 +1,39 @@
 package projekt.enigma;
 
 import java.io.IOException;
+
 import javafx.fxml.FXML;
+import javafx.scene.control.TextField;
+import projekt.enigma.model.Codierer;
 
 public class KenngruppeController {
+    private Codierer cod = new Codierer();
+
+    @FXML
+    private TextField tfKenngruppe;
 
+    //TODO: Doku
+
+    /**
+     * Beim drücken der Taste wird überprüft ob die eingegebene Kenngruppe weniger als 9 Zeichen hat und ob die
+     * eingegebenen Zeichen nur Buchstaben sind.
+     * Bei einer gültigen Eingabe wird die eingegebene Kenngruppe gespeichert und die Enigma-Anwendung gestartet
+     * @throws IOException :
+     */
     @FXML
-    private void switchToPrimary() throws IOException {
-        App.setRoot("gui");
+    private void btnGui() throws IOException {
+        if (tfKenngruppe.getText().length() <9) {
+            for (char c : tfKenngruppe.getText().toCharArray()) {
+                if (c == 'a' || c == 'b' || c == 'c' || c == 'd' || c == 'e' || c == 'f' || c == 'g' || c == 'h' || c == 'i' || c == 'j' || c == 'k' || c == 'l' || c == 'm' || c == 'n' || c == 'o' || c == 'p' || c == 'q' || c == 'r' || c == 's' || c == 't' || c == 'u' || c == 'v' || c == 'w' || c == 'x' || c == 'y' || c == 'z'||c == 'A' || c == 'B' || c == 'C' || c == 'D' || c == 'E' || c == 'F' || c == 'G' || c == 'H' || c == 'I' || c == 'J' || c == 'K' || c == 'L' || c == 'M' || c == 'N' || c == 'O' || c == 'P' || c == 'Q' || c == 'R' || c == 'S' || c == 'T' || c == 'U' || c == 'V' || c == 'W' || c == 'X' || c == 'Y' || c == 'Z') {
+                    cod.setKenngruppe(tfKenngruppe.getText());
+
+                    //setzt
+                    App.setRoot("gui");
+                }
+            }
+        } else {
+            tfKenngruppe.setStyle("-fx-background-color:#FF0000");
+            tfKenngruppe.setText("Fehlerhafte Kenngruppe!");
+        }
+    }
     }
-}
\ No newline at end of file
diff --git a/src/main/java/projekt/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java
index 71b2a93ae8e66e475d348c96c254fe16580fc2d0..20f6a0041f6bf6176d136f370f645352c8f15dfb 100644
--- a/src/main/java/projekt/enigma/model/Codierer.java
+++ b/src/main/java/projekt/enigma/model/Codierer.java
@@ -14,512 +14,520 @@ import java.util.Random;
  */
 public class Codierer {
 
-    //region Variablen
-    /**
-     * Der Klartext Spruchschlüssel zur codierung der Nachricht
-     */
-    private String spruchschluessel;
-
-    /**
-     * Der Spruchschlüssel, mit den Tageswerten aus dem Codebuch, codiert
-     */
-    private String spruchschluesselCodiert;
-
-    /**
-     * Die Kenngruppe für die versendeten Nachrichten gedacht sind. Diese ist relevant für den Webservice (Funkraum)
-     */
-    private String kenngruppe;
-
-    /**
-     * Die Nachricht, welche der Benutzer eingibt, wird als String nachricht gespeichert
-     * und im laufe der Benutzung ergänzt
-     */
-    private String nachricht;
-
-    /**
-     * Das Hardware Objekt. Hier werden alle Hardware relevanten Baugruppen gespeichert und verarbeitet.
-     */
-    private Hardware hardware;
-
-    /**
-     * Im Codebuch sind die Tageswerte zu finden. Über dieses Objekt kann darauf zugegriffen werden.
-     */
-    private Codebuch codebuch;
-    //endregion
-
-    //region Konstruktor
-    /**
-     * Der Konstruktor des Codierers
-     * Hier werden die globalen Variablen auf ihre Standart Werte gesetzt sowie die Objekte Initialisiert.
-     */
-    public Codierer() {
-
-        this.nachricht = "";
-        this.spruchschluessel = "";
-        this.spruchschluesselCodiert = "";
-        this.kenngruppe = "";
-        this.codebuch = new Codebuch();
-        this.codebuch.fetchTagesschluessel();
-    }
-    //endregion
-
-    //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
-     * in die Hardware gebaut.
-     * <br>
-     * Ein Reflektor wird definiert, jedoch keine Werte zugewisen, da wir nur einen besitzen und
-     * deshalb alle Einstellungen hierfür Statisch im Reflektor definiert haben.
-     * <br>
-     * Das Steck wird ebenfalls definiert und die notwendigen Kabel eingesteckt laut dem heutigen
-     * Codebuch Eintrag.
-     */
-    private void initialisiereHardware() {
-
-        // Das Steckbrett initialisieren
-        Steckbrett sb = new Steckbrett();
-        char[][] verbinder = this.codebuch.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.hardware = new Hardware();
-
-        // Den Ring an der Walze anbringen und die Walze dann in die Hardware einsetzen
-        this.hardware.setWalzen(0, this.codebuch.getWalzenlage()[0], this.codebuch.getRingstellung()[0]);
-        this.hardware.setWalzen(1, this.codebuch.getWalzenlage()[1], this.codebuch.getRingstellung()[1]);
-        this.hardware.setWalzen(2, this.codebuch.getWalzenlage()[2], this.codebuch.getRingstellung()[2]);
-
-        // Der Hardware das gesetzte Steckbrett zuweisen
-        this.hardware.setSteckbrett(sb);
-
-        // Ein Reflektor Objekt erstellen und der Hardware bekannt geben
-        this.hardware.setReflektor(new Reflektor());
-    }
-
-    /**
-     * Setzt die Enigma auf die Einstellungen des aktuellen Tages, aus dem Codebuch zurück.
-     */
-    public void resetHardware() {
-        this.initialisiereHardware();
-    }
+	//region Variablen
+	/**
+	 * Der Klartext Spruchschlüssel zur codierung der Nachricht
+	 */
+	private String spruchschluessel;
+
+	/**
+	 * Der Spruchschlüssel, mit den Tageswerten aus dem Codebuch, codiert
+	 */
+	private String spruchschluesselCodiert;
+
+	/**
+	 * Die Kenngruppe für die versendeten Nachrichten gedacht sind. Diese ist relevant für den Webservice (Funkraum)
+	 */
+	private String kenngruppe;
+
+	/**
+	 * Die Nachricht, welche der Benutzer eingibt, wird als String nachricht gespeichert
+	 * und im laufe der Benutzung ergänzt
+	 */
+	private String nachricht;
+
+	/**
+	 * Das Hardware Objekt. Hier werden alle Hardware relevanten Baugruppen gespeichert und verarbeitet.
+	 */
+	private Hardware hardware;
+
+	/**
+	 * Im Codebuch sind die Tageswerte zu finden. Über dieses Objekt kann darauf zugegriffen werden.
+	 */
+	private Codebuch codebuch;
+	//endregion
+
+	//region Konstruktor
+
+	/**
+	 * Der Konstruktor des Codierers
+	 * Hier werden die globalen Variablen auf ihre Standart Werte gesetzt sowie die Objekte Initialisiert.
+	 */
+	public Codierer() {
+
+		this.nachricht = "";
+		this.spruchschluessel = "";
+		this.spruchschluesselCodiert = "";
+		this.kenngruppe = "";
+		this.codebuch = new Codebuch();
+		this.codebuch.fetchTagesschluessel();
+	}
+	//endregion
+
+	//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
+	 * in die Hardware gebaut.
+	 * <br>
+	 * Ein Reflektor wird definiert, jedoch keine Werte zugewisen, da wir nur einen besitzen und
+	 * deshalb alle Einstellungen hierfür Statisch im Reflektor definiert haben.
+	 * <br>
+	 * Das Steck wird ebenfalls definiert und die notwendigen Kabel eingesteckt laut dem heutigen
+	 * Codebuch Eintrag.
+	 */
+	private void initialisiereHardware() {
+
+		this.nachricht = "";
+
+		// Das Steckbrett initialisieren
+		Steckbrett sb = new Steckbrett();
+		char[][] verbinder = this.codebuch.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.hardware = new Hardware();
+
+		// Den Ring an der Walze anbringen und die Walze dann in die Hardware einsetzen
+		this.hardware.setWalzen(0, this.codebuch.getWalzenlage()[0], this.codebuch.getRingstellung()[0]);
+		this.hardware.setWalzen(1, this.codebuch.getWalzenlage()[1], this.codebuch.getRingstellung()[1]);
+		this.hardware.setWalzen(2, this.codebuch.getWalzenlage()[2], this.codebuch.getRingstellung()[2]);
+
+		// Der Hardware das gesetzte Steckbrett zuweisen
+		this.hardware.setSteckbrett(sb);
+
+		// Ein Reflektor Objekt erstellen und der Hardware bekannt geben
+		this.hardware.setReflektor(new Reflektor());
+	}
+
+	/**
+	 * Setzt die Enigma auf die Einstellungen des aktuellen Tages, aus dem Codebuch zurück.
+	 */
+	public void resetHardware() {
+		this.initialisiereHardware();
+	}
 
 	/**
 	 * 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
-     *
-     * @throws IOException   : Die Antwort konnte nicht gelesen werden
-     * @throws HttpException : Die Nachricht konnte nicht abgesendet werden
-     */
-    public void sendeNachricht() throws IOException, HttpException {
-        String kopf = this.generateKopf();
-        new Funkraum().sendeFunkspruch(new Morsecode().convertBuchstabeToMorsecode(kopf + this.nachricht), this.kenngruppe);
-        this.nachricht = "";
-        this.resetHardware();
-    }
-
-    /**
-     * Gibt die letzte empfangene Nachricht zurück
-     * <br>
-     * String[0] Tag wann die Nachricht gesendet wurde
-     * String[1] = Die verschlüsselte Nachricht
-     * String[2] = Nachricht im Klartext
-     */
-    public String[] empfangeNachricht() {
-
-        // Alte Nachrichten Variable erstmal leeren
-        this.nachricht = "";
-        // Morsecode Objekt initialisieren
-        Morsecode mc = new Morsecode();
-        // Unser Nachrichten Array soll drei Einträge erhalten
-        String[] nachricht = new String[4];
-        // Abrufen der letzten Nachricht, für unsere Kenngruppe, aus dem Funkraum
-        String[] codierteNachricht = new Funkraum().empfangeFunkspruch(this.kenngruppe);
-
-        // Prüfen ob Nachrichtenlänge > 1 und die codierte Nachricht mehr als drei Felder (" ") hat
-        if (codierteNachricht.length > 1 && codierteNachricht[1].split(" ").length > 3) {
-            // Den Tag der Nachricht speichern
-            nachricht[0] = codierteNachricht[0];
-            // Die Nachricht von Morsecode in Buchstaben konvertieren
-            nachricht[1] = mc.convertMorsecodeToBuchstabe(codierteNachricht[1]);
-            // Die Enigma Nachricht (nachricht[1]) mittels der Tageseinstellungen (nachricht[0]) decodieren
-            nachricht[2] = this.decodiere(nachricht[1], Integer.parseInt(nachricht[0]));
-            // StringBuilder initialisieren
-            StringBuilder sb = new StringBuilder();
-
-            sb.append(nachricht[1], 0, 16);
-            for (int i = 17; i <= nachricht[1].length(); ) {
-                if ((i + 5) < nachricht[1].length()) {
-                    sb.append(nachricht[1], i, i + 5).append(" ");
-                    i += 5;
-                } else {
-                    sb.append(nachricht[1].substring(i));
-                    break;
-                }
-            }
-            nachricht[1] = sb.toString();
-        } else {
-            nachricht[0] = "";
-            nachricht[1] = "";
-            nachricht[2] = "Es liegen keine neuen Nachrichten im Funkraum für Sie vor.";
-        }
-
-        return nachricht;
-    }
-    //endregion
-
-    //region Generatoren
-    /**
-     * Hier wird ein neuer Spruchschlüssel generiert.
-     * <p>
-     * Mit diesem werden die Walzen auf eine neue Startposition gestellt und dem Kopf, mit dem
-     * Tagesschlüssel codiert, hinzugefügt.
-     * <br>
-     * Hierfür wird mittels der Funktion "randomBuchstabe" ein zufälliger Buchstabe generiert,
-     * und geschaut ob dieser bereits in der globalen Variable (this.spruchschluessel) vorhanden ist.
-     * Wenn nicht, wird der Buchstabe dem Spruchschlüssel hinzugefügt.
-     * <br>
-     * Dies wir nun so lange gemacht bis der Spruchschlüssel eine länge von drei Zeichen hat.
-     */
-    public void generateSpruchschluessel() {
-
-        String klartext = "";
-
-        while (klartext.length() < 3) {
-            String temp = this.randomBuchstabe();
-            if (!klartext.contains(temp)) {
-                klartext += temp;
-            }
-        }
-
-        this.spruchschluessel = klartext;
-        this.spruchschluesselCodiert = this.codiere(klartext + klartext, false);
-
-        // Walzen auf den Spruchschlüssel stellen
-        this.hardware.setzePosition(0, this.spruchschluessel.charAt(0));
-        this.hardware.setzePosition(1, this.spruchschluessel.charAt(1));
-        this.hardware.setzePosition(2, this.spruchschluessel.charAt(2));
-
-        // Die Kenngruppe codieren und in der Nachricht speichern
-        this.codiere(this.kenngruppe, true);
-    }
-
-    /**
-     * Erstellen des Nachrichten Kopfes.
-     * Hierfür wird die aktuelle Uhrzeit ausgelesen, die Länge der Nachricht sowie der, mit den
-     * Tagescodes codierte, Spruchschlüssel.
-     */
-    private String generateKopf() {
-        Calendar cal = Calendar.getInstance();
-
-        // Uhrzeit an den Kopf hängen
-        return String.format("%02d%02d", cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE)) + " " +
-                // Zeichen Anzahl der Nachricht
-                this.nachricht.length() + " " +
-                // Spruchschlüssel anhängen
-                this.spruchschluesselCodiert.substring(0, 3) + " " + this.spruchschluesselCodiert.substring(3, 6) + " ";
-    }
-
-    /**
-     * Einen zufälligen Buchstaben aus dem Alphabet generieren.
-     * In der Funktion gibt es den String Alphabet, in welchem alle zulässigen Zeichen eingetragen sind.
-     * Aus diesem String wird nun zufällig ein Zeichen ausgewählt und zurück gegeben.
-     *
-     * @return String : ein zufällig generierter Buchstabe
-     */
-    private String randomBuchstabe() {
-        return String.valueOf((char) ('A' + new Random().nextInt(26)));
-    }
-    //endregion
-
-    //region setzte Funktionen
-    /**
-     * Setzt den anzuzeigenden Buchstaben (buchstabe) auf der Walze (walzenPosition) und resetet anschließen das
-     * Nachrichten Objekt
-     *
-     * @param walzenPosition : int : Nummer der Walze
-     * @param buchstabe      : char : Buchstabe der zugewiesen soll
-     */
-    public void setzeWalze(int walzenPosition, char buchstabe) {
-    	this.resetNachricht();
-        this.hardware.setzePosition(walzenPosition, buchstabe);
-    }
-
-    /**
-     * Setzt den Ring auf der Walze auf einen neuen Umstprungwert.
-     *
-     * @param walzenPosition : int : Walze auf die der Ring gesteckt wird
-     * @param umsprungPunkt  : int : Buchstabe auf dem der Notch sitzt
-     */
-    public void setzeRing(int walzenPosition, int umsprungPunkt) {
-        this.hardware.setzeRing(walzenPosition, umsprungPunkt);
-    }
-
-    /**
-     * Setzt die Walze (walzeNr) in die Position (walzenPosition) der Enigma ein.
-     * Mit (ringstellung) gibt man die Position des Umsprungpunktes an.
-     *
-     * @param walzenPosition : int : Position der Walze in der Enigma (1-2-3)
-     * @param walzeNr        : int : Nummer der Walze die eingesetzt wird
-     * @param ringstellung   : int : Stellung des Ringes
-     */
-    public void setzeWalzeNr(int walzenPosition, int walzeNr, int ringstellung) {
-        this.hardware.setzeWalzenNr(walzenPosition, walzeNr, ringstellung);
-    }
-
-    /**
-     * Setzt das Kabel in beide Ports ein und fügt es dem Steckbrett Array hinzu.
-     *
-     * @param port       : int : Kabel Nummer welches am Steckbrett eingesteckt wird
-     * @param verbindung : String : Verbindung welche die vertauschten Buchstaben angibt
-     * @return boolean : Wenn true, darf das Kabel gesteckt werden, wenn nicht, steckt da bereits schon eines
-     */
-    public boolean setzeSteckbrett(int port, String verbindung) {
-        return this.hardware.getSteckbrett().setzeVertauschung(port, verbindung.charAt(0), verbindung.charAt(1));
-    }
-    //endregion
-
-    //region fetch Funktionen
-
-    /**
-     * Gibt die Ringstellungen aus dem Codebuch zurück
-     *
-     * @return int[] : Array mit den Ringstellungen der drei eingesetzten Walzen
-     */
-    public int[] fetchRingstellung() {
-        return this.codebuch.getRingstellung();
-    }
-
-    /**
-     * Gibt die Walzennummer aus dem Codebuch zurück
-     *
-     * @return int[] : Array mit den Nummern der drei eingesetzten Walzen
-     */
-    public int[] fetchWalzenNr() {
-        return this.codebuch.getWalzenlage();
-    }
-
-    /**
-     * Gibt die Steckverbindungen aus dem Codebuch zurück
-     *
-     * @return char[][] : Array mit den gesteckten Verbindungen im Steckbrett
-     */
-    public char[][] fetchSteckverbindungen() {
-        return this.codebuch.getSteckverbindung();
-    }
-
-    /**
-     * Gibt die aktuellen Buchstaben auf den Walzen zurück
-     *
-     * @return char[] : Walzen Array mit der aktuellen Position
-     */
-    public char[] fetchWalzen() {
-        char[] walzen = new char[3];
-        walzen[0] = this.hardware.getWalzen()[0].getPosition();
-        walzen[1] = this.hardware.getWalzen()[1].getPosition();
-        walzen[2] = this.hardware.getWalzen()[2].getPosition();
-
-        return walzen;
-    }
-    //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.
-     * In der Regel ist dies der Fall.
-     *
-     * @param buchstabe : char : Der zu codierende Buchstabe
-     * @param save      : boolean : Nachricht speichern oder nicht
-     * @return char     : Der codierte Buchstabe
-     */
-    public char codiere(char buchstabe, boolean save) {
-
-        char codiert = this.hardware.codiere(buchstabe);
-
-        if (save) {
-            this.nachricht += codiert;
-        }
-
-        return codiert;
-    }
-
-    /**
-     * Codiert den Übergebenen String.
-     * Man muss hier ebenfalls mitgeben ob der codierte String in Codierer.nachricht gespeichert werden soll oder nicht.
-     * In der Regel ist dies der Fall.
-     *
-     * @param klartext : String : Der zu codierende Text
-     * @param save     : boolean : Nachricht speichern oder nicht
-     * @return String : Der codierte Text zusätzlich als Rückgabe
-     */
-    public String codiere(String klartext, boolean save) {
-
-        StringBuilder sb = new StringBuilder();
-
-        for (char buchstabe : klartext.toCharArray()) {
-            sb.append(this.codiere(buchstabe, save));
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * Diese Funktion erwartet als (codierteNachricht) eine korrekte Enigma Nachricht.
-     * Ihr muss auch der Tag der codierung mitgegeben werden. Dieser weiß dein Funker im Funkraum.
-     * In der Regel ist dies der Tag des Nachrichten empfangs.
-     *
-     * @param codierteNachricht : String : Enigma codierte Nachricht
-     * @param tag               : int : Tag der Nachricht
-     * @return String : decodierte Nachricht
-     */
-    private String decodiere(String codierteNachricht, int tag) {
-
-        // Hardware reseten und Tageseinstellungen aus dem Codebuch laden
-	    this.codebuch.fetchTagesschluessel(tag);
-	    this.initialisiereHardware();
-
-        // Nachricht splitten mit whitespace als delimiter
-        String[] nachricht = codierteNachricht.split(" ");
-        StringBuilder sb = new StringBuilder();
-
-        // Uhrzeit
-        sb.append(nachricht[0]).append(" ");
-
-        // Zeichen Anzahl der Nachricht
-        sb.append(nachricht[1]).append(" ");
-
-        // Spruchschlüssel
-        String spruchschluessel = this.decodiereString(nachricht[2]);
-
-        sb.append(spruchschluessel).append(" ");
-        sb.append(this.decodiereString(nachricht[3])).append(" ");
-
-        // Walzen neu einstellen mit dem Spruchschlüssel
-        this.hardware.setzePosition(0, spruchschluessel.charAt(0));
-        this.hardware.setzePosition(1, spruchschluessel.charAt(1));
-        this.hardware.setzePosition(2, spruchschluessel.charAt(2));
-
-        // Nachricht decodieren
-        sb.append(this.decodiereString(nachricht[4]));
-
-        return sb.toString();
-    }
-
-    /**
-     * Zerlegt den übergebenen String in einen char Array und decodiert jedes Zeichen.
-     * Der String wird dann decodiert zurück gegeben.
-     *
-     * @param nachricht : String : Der zu decodierende Text
-     * @return String : Der decodierte Text
-     */
-    private String decodiereString(String nachricht) {
-
-        StringBuilder sb = new StringBuilder();
-
-        for (char buchstabe : nachricht.toCharArray()) {
-            if (buchstabe > 0) {
-                sb.append(this.hardware.codiere(buchstabe));
-            }
-        }
-
-        return sb.toString();
-    }
-    //endregion
-
-    //region Sonstige
-
-    /**
-     * Prüft ob der Port auf den das Kabel gesteckt werden soll, noch frei ist.
-     * <p>
-     * setSteckbrett ausführen mit beiden Buchstaben als String
-     *
-     * @param buchstabe : char : Der zuletzt eingegebene Buchstabe
-     * @return boolean : Wenn der Buchstabe nicht vorhanden ist, wird true zurückgegeben, ansonsten false
-     */
-    public boolean pruefeSteckbrettPort(char buchstabe) {
-        return this.hardware.getSteckbrett().ueberpruefeVertauschungen(buchstabe);
-    }
-
-    /**
-     * Ließt aus der empfangenen Nachricht den Spruchschlüssel aus und gibt ihn zurück.
-     *
-     * @param empfangeneNachricht : String : Die empfangene Nachricht als String
-     * @return String : Der Spruchschlüssel mit welcher die Nachricht codiert wurde.
-     */
-    public String empfangenerSpruchschluessel(String empfangeneNachricht) {
-        String[] nachricht = empfangeneNachricht.split(" ");
-
-        return nachricht[2];
-    }
-
-    /**
-     * Löscht das letzte Zeichen aus der Nachricht und dreht die Walzen eine Position zurück.
-     */
-    public void letztesZeichenLoeschen() {
-        this.hardware.dreheWalzen(-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
-     *
-     * @return String : Erstellte Nachricht
-     */
-    public String getNachricht() {
-        return nachricht;
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * Der Spruchschlüssel wird, zur internen Verwendung, auch im Klartext gespeichert.
-     * Wir brauchen diesen dann zum codieren der eigentlichen Nachricht.
-     *
-     * @return String : Der klartext Spruchschlüssel
-     */
-    public String getSpruchschluessel() {
-        return this.spruchschluessel;
-    }
-    //endregion
+		this.nachricht = "";
+	}
+	//endregion
+
+	//region Nachrichten handler
+
+	/**
+	 * 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 {
+		String kopf = this.generateKopf();
+		new Funkraum().sendeFunkspruch(new Morsecode().convertBuchstabeToMorsecode(kopf + this.nachricht), this.kenngruppe);
+		this.nachricht = "";
+		this.resetHardware();
+	}
+
+	/**
+	 * Gibt die letzte empfangene Nachricht zurück
+	 * <br>
+	 * String[0] Tag wann die Nachricht gesendet wurde
+	 * String[1] = Die verschlüsselte Nachricht
+	 * String[2] = Nachricht im Klartext
+	 */
+	public String[] empfangeNachricht() {
+
+		// Alte Nachrichten Variable erstmal leeren
+		this.nachricht = "";
+		// Morsecode Objekt initialisieren
+		Morsecode mc = new Morsecode();
+		// Unser Nachrichten Array soll drei Einträge erhalten
+		String[] nachricht = new String[4];
+		// Abrufen der letzten Nachricht, für unsere Kenngruppe, aus dem Funkraum
+		String[] codierteNachricht = new Funkraum().empfangeFunkspruch(this.kenngruppe);
+
+		// Prüfen ob Nachrichtenlänge > 1 und die codierte Nachricht mehr als drei Felder (" ") hat
+		if (codierteNachricht.length > 1 && codierteNachricht[1].split(" ").length > 3) {
+			// Den Tag der Nachricht speichern
+			nachricht[0] = codierteNachricht[0];
+			// Die Nachricht von Morsecode in Buchstaben konvertieren
+			nachricht[1] = mc.convertMorsecodeToBuchstabe(codierteNachricht[1]);
+			// Die Enigma Nachricht (nachricht[1]) mittels der Tageseinstellungen (nachricht[0]) decodieren
+			nachricht[2] = this.decodiere(nachricht[1], Integer.parseInt(nachricht[0]));
+			// StringBuilder initialisieren
+			StringBuilder sb = new StringBuilder();
+
+			sb.append(nachricht[1], 0, 16);
+			for (int i = 17; i <= nachricht[1].length(); ) {
+				if ((i + 5) < nachricht[1].length()) {
+					sb.append(nachricht[1], i, i + 5).append(" ");
+					i += 5;
+				} else {
+					sb.append(nachricht[1].substring(i));
+					break;
+				}
+			}
+			nachricht[1] = sb.toString();
+		} else {
+			nachricht[0] = "";
+			nachricht[1] = "";
+			nachricht[2] = "Es liegen keine neuen Nachrichten im Funkraum für Sie vor.";
+		}
+
+		return nachricht;
+	}
+	//endregion
+
+	//region Generatoren
+
+	/**
+	 * Hier wird ein neuer Spruchschlüssel generiert.
+	 * <p>
+	 * Mit diesem werden die Walzen auf eine neue Startposition gestellt und dem Kopf, mit dem
+	 * Tagesschlüssel codiert, hinzugefügt.
+	 * <br>
+	 * Hierfür wird mittels der Funktion "randomBuchstabe" ein zufälliger Buchstabe generiert,
+	 * und geschaut ob dieser bereits in der globalen Variable (this.spruchschluessel) vorhanden ist.
+	 * Wenn nicht, wird der Buchstabe dem Spruchschlüssel hinzugefügt.
+	 * <br>
+	 * Dies wir nun so lange gemacht bis der Spruchschlüssel eine länge von drei Zeichen hat.
+	 */
+	public void generateSpruchschluessel() {
+
+		String klartext = "";
+
+		while (klartext.length() < 3) {
+			String temp = this.randomBuchstabe();
+			if (!klartext.contains(temp)) {
+				klartext += temp;
+			}
+		}
+
+		this.spruchschluessel = klartext;
+		this.spruchschluesselCodiert = this.codiere(klartext + klartext, false);
+
+		// Walzen auf den Spruchschlüssel stellen
+		this.hardware.setzePosition(0, this.spruchschluessel.charAt(0));
+		this.hardware.setzePosition(1, this.spruchschluessel.charAt(1));
+		this.hardware.setzePosition(2, this.spruchschluessel.charAt(2));
+
+		// Die Kenngruppe codieren und in der Nachricht speichern
+		this.codiere(this.kenngruppe, true);
+	}
+
+	/**
+	 * Erstellen des Nachrichten Kopfes.
+	 * Hierfür wird die aktuelle Uhrzeit ausgelesen, die Länge der Nachricht sowie der, mit den
+	 * Tagescodes codierte, Spruchschlüssel.
+	 */
+	private String generateKopf() {
+		Calendar cal = Calendar.getInstance();
+
+		// Uhrzeit an den Kopf hängen
+		return String.format("%02d%02d", cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE)) + " " +
+				// Zeichen Anzahl der Nachricht
+				this.nachricht.length() + " " +
+				// Spruchschlüssel anhängen
+				this.spruchschluesselCodiert.substring(0, 3) + " " + this.spruchschluesselCodiert.substring(3, 6) + " ";
+	}
+
+	/**
+	 * Einen zufälligen Buchstaben aus dem Alphabet generieren.
+	 * In der Funktion gibt es den String Alphabet, in welchem alle zulässigen Zeichen eingetragen sind.
+	 * Aus diesem String wird nun zufällig ein Zeichen ausgewählt und zurück gegeben.
+	 *
+	 * @return String : ein zufällig generierter Buchstabe
+	 */
+	private String randomBuchstabe() {
+		return String.valueOf((char) ('A' + new Random().nextInt(26)));
+	}
+	//endregion
+
+	//region setzte Funktionen
+
+	/**
+	 * Setzt den anzuzeigenden Buchstaben (buchstabe) auf der Walze (walzenPosition) und resetet anschließen das
+	 * Nachrichten Objekt
+	 *
+	 * @param walzenPosition : int : Nummer der Walze
+	 * @param buchstabe      : char : Buchstabe der zugewiesen soll
+	 */
+	public void setzeWalze(int walzenPosition, char buchstabe) {
+		this.resetNachricht();
+		this.hardware.setzePosition(walzenPosition, buchstabe);
+	}
+
+	/**
+	 * Setzt den Ring auf der Walze auf einen neuen Umstprungwert.
+	 *
+	 * @param walzenPosition : int : Walze auf die der Ring gesteckt wird
+	 * @param umsprungPunkt  : int : Buchstabe auf dem der Notch sitzt
+	 */
+	public void setzeRing(int walzenPosition, int umsprungPunkt) {
+		this.hardware.setzeRing(walzenPosition, umsprungPunkt);
+	}
+
+	/**
+	 * Setzt die Walze (walzeNr) in die Position (walzenPosition) der Enigma ein.
+	 * Mit (ringstellung) gibt man die Position des Umsprungpunktes an.
+	 *
+	 * @param walzenPosition : int : Position der Walze in der Enigma (1-2-3)
+	 * @param walzeNr        : int : Nummer der Walze die eingesetzt wird
+	 * @param ringstellung   : int : Stellung des Ringes
+	 */
+	public void setzeWalzeNr(int walzenPosition, int walzeNr, int ringstellung) {
+		this.hardware.setzeWalzenNr(walzenPosition, walzeNr, ringstellung);
+	}
+
+	/**
+	 * Setzt das Kabel in beide Ports ein und fügt es dem Steckbrett Array hinzu.
+	 *
+	 * @param port       : int : Kabel Nummer welches am Steckbrett eingesteckt wird
+	 * @param verbindung : String : Verbindung welche die vertauschten Buchstaben angibt
+	 * @return boolean : Wenn true, darf das Kabel gesteckt werden, wenn nicht, steckt da bereits schon eines
+	 */
+	public boolean setzeSteckbrett(int port, String verbindung) {
+		return this.hardware.getSteckbrett().setzeVertauschung(port, verbindung.charAt(0), verbindung.charAt(1));
+	}
+	//endregion
+
+	//region fetch Funktionen
+
+	/**
+	 * Gibt die Ringstellungen aus dem Codebuch zurück
+	 *
+	 * @return int[] : Array mit den Ringstellungen der drei eingesetzten Walzen
+	 */
+	public int[] fetchRingstellung() {
+		return this.codebuch.getRingstellung();
+	}
+
+	/**
+	 * Gibt die Walzennummer aus dem Codebuch zurück
+	 *
+	 * @return int[] : Array mit den Nummern der drei eingesetzten Walzen
+	 */
+	public int[] fetchWalzenNr() {
+		return this.codebuch.getWalzenlage();
+	}
+
+	/**
+	 * Gibt die Steckverbindungen aus dem Codebuch zurück
+	 *
+	 * @return char[][] : Array mit den gesteckten Verbindungen im Steckbrett
+	 */
+	public char[][] fetchSteckverbindungen() {
+		return this.codebuch.getSteckverbindung();
+	}
+
+	/**
+	 * Gibt die aktuellen Buchstaben auf den Walzen zurück
+	 *
+	 * @return char[] : Walzen Array mit der aktuellen Position
+	 */
+	public char[] fetchWalzen() {
+		char[] walzen = new char[3];
+		walzen[0] = this.hardware.getWalzen()[0].getPosition();
+		walzen[1] = this.hardware.getWalzen()[1].getPosition();
+		walzen[2] = this.hardware.getWalzen()[2].getPosition();
+
+		return walzen;
+	}
+	//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.
+	 * In der Regel ist dies der Fall.
+	 *
+	 * @param buchstabe : char : Der zu codierende Buchstabe
+	 * @param save      : boolean : Nachricht speichern oder nicht
+	 * @return char     : Der codierte Buchstabe
+	 */
+	public char codiere(char buchstabe, boolean save) {
+
+		char codiert = this.hardware.codiere(buchstabe);
+
+		if (save) {
+			this.nachricht += codiert;
+		}
+
+		return codiert;
+	}
+
+	/**
+	 * Codiert den Übergebenen String.
+	 * Man muss hier ebenfalls mitgeben ob der codierte String in Codierer.nachricht gespeichert werden soll oder nicht.
+	 * In der Regel ist dies der Fall.
+	 *
+	 * @param klartext : String : Der zu codierende Text
+	 * @param save     : boolean : Nachricht speichern oder nicht
+	 * @return String : Der codierte Text zusätzlich als Rückgabe
+	 */
+	public String codiere(String klartext, boolean save) {
+
+		StringBuilder sb = new StringBuilder();
+
+		for (char buchstabe : klartext.toCharArray()) {
+			sb.append(this.codiere(buchstabe, save));
+		}
+
+		return sb.toString();
+	}
+
+	/**
+	 * Diese Funktion erwartet als (codierteNachricht) eine korrekte Enigma Nachricht.
+	 * Ihr muss auch der Tag der codierung mitgegeben werden. Dieser weiß dein Funker im Funkraum.
+	 * In der Regel ist dies der Tag des Nachrichten empfangs.
+	 *
+	 * @param codierteNachricht : String : Enigma codierte Nachricht
+	 * @param tag               : int : Tag der Nachricht
+	 * @return String : decodierte Nachricht
+	 */
+	private String decodiere(String codierteNachricht, int tag) {
+
+		// Hardware reseten und Tageseinstellungen aus dem Codebuch laden
+		this.codebuch.fetchTagesschluessel(tag);
+		this.initialisiereHardware();
+
+		// Nachricht splitten mit whitespace als delimiter
+		String[] nachricht = codierteNachricht.split(" ");
+		StringBuilder sb = new StringBuilder();
+
+		// Uhrzeit
+		sb.append(nachricht[0]).append(" ");
+
+		// Zeichen Anzahl der Nachricht
+		sb.append(nachricht[1]).append(" ");
+
+		// Spruchschlüssel
+		String spruchschluessel = this.decodiereString(nachricht[2]);
+
+		sb.append(spruchschluessel).append(" ");
+		sb.append(this.decodiereString(nachricht[3])).append(" ");
+
+		// Walzen neu einstellen mit dem Spruchschlüssel
+		this.hardware.setzePosition(0, spruchschluessel.charAt(0));
+		this.hardware.setzePosition(1, spruchschluessel.charAt(1));
+		this.hardware.setzePosition(2, spruchschluessel.charAt(2));
+
+		// Nachricht decodieren
+		sb.append(this.decodiereString(nachricht[4]));
+
+		return sb.toString();
+	}
+
+	/**
+	 * Zerlegt den übergebenen String in einen char Array und decodiert jedes Zeichen.
+	 * Der String wird dann decodiert zurück gegeben.
+	 *
+	 * @param nachricht : String : Der zu decodierende Text
+	 * @return String : Der decodierte Text
+	 */
+	private String decodiereString(String nachricht) {
+
+		StringBuilder sb = new StringBuilder();
+
+		for (char buchstabe : nachricht.toCharArray()) {
+			if (buchstabe > 0) {
+				sb.append(this.hardware.codiere(buchstabe));
+			}
+		}
+
+		return sb.toString();
+	}
+	//endregion
+
+	//region Sonstige
+
+	/**
+	 * Prüft ob der Port auf den das Kabel gesteckt werden soll, noch frei ist.
+	 * <p>
+	 * setSteckbrett ausführen mit beiden Buchstaben als String
+	 *
+	 * @param buchstabe : char : Der zuletzt eingegebene Buchstabe
+	 * @return boolean : Wenn der Buchstabe nicht vorhanden ist, wird true zurückgegeben, ansonsten false
+	 */
+	public boolean pruefeSteckbrettPort(char buchstabe) {
+		return this.hardware.getSteckbrett().ueberpruefeVertauschungen(buchstabe);
+	}
+
+	/**
+	 * Ließt aus der empfangenen Nachricht den Spruchschlüssel aus und gibt ihn zurück.
+	 *
+	 * @param empfangeneNachricht : String : Die empfangene Nachricht als String
+	 * @return String : Der Spruchschlüssel mit welcher die Nachricht codiert wurde.
+	 */
+	public String empfangenerSpruchschluessel(String empfangeneNachricht) {
+		String[] nachricht = empfangeneNachricht.split(" ");
+
+		return nachricht[2];
+	}
+
+	/**
+	 * Löscht das letzte Zeichen aus der Nachricht und dreht die Walzen eine Position zurück.
+	 */
+	public void letztesZeichenLoeschen() {
+		this.hardware.dreheWalzen(-1);
+	}
+	//endregion
+	//endregion
+
+	//region Setter
+
+	/**
+	 * Gibt die bisher erstellte Nachricht zurück
+	 *
+	 * @return String : Erstellte Nachricht
+	 */
+	public String getNachricht() {
+		return nachricht;
+	}
+	//endregion
+
+	//region Getter
+
+	/**
+	 * 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;
+		this.initialisiereHardware();
+
+	}
+
+	/**
+	 * Der Spruchschlüssel wird, zur internen Verwendung, auch im Klartext gespeichert.
+	 * Wir brauchen diesen dann zum codieren der eigentlichen Nachricht.
+	 *
+	 * @return String : Der klartext Spruchschlüssel
+	 */
+	public String getSpruchschluessel() {
+		return this.spruchschluessel;
+	}
+	//endregion
 }
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/resources/projekt/enigma/gui.fxml b/src/main/resources/projekt/enigma/gui.fxml
index 62178e6b6b32b6e84bb4d38f9930314eec347eca..541232d5cffb09e2bcd7a2c7d5a910faed867ba6 100644
--- a/src/main/resources/projekt/enigma/gui.fxml
+++ b/src/main/resources/projekt/enigma/gui.fxml
@@ -7,26 +7,14 @@
 <?import javafx.scene.control.TextField?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.ColumnConstraints?>
-<?import javafx.scene.layout.FlowPane?>
 <?import javafx.scene.layout.GridPane?>
 <?import javafx.scene.layout.RowConstraints?>
-<?import javafx.scene.layout.VBox?>
 <?import javafx.scene.shape.Circle?>
 <?import javafx.scene.text.Font?>
 
 <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="677.0" prefWidth="962.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.GuiController">
    <children>
-      <AnchorPane layoutX="241.0" layoutY="130.0" prefHeight="111.0" prefWidth="487.0" AnchorPane.leftAnchor="241.0" AnchorPane.rightAnchor="240.0">
-         <children>
-            <VBox layoutX="72.0" layoutY="-89.0" prefHeight="210.0" prefWidth="377.0" AnchorPane.bottomAnchor="-10.0" AnchorPane.leftAnchor="72.0" AnchorPane.rightAnchor="37.0" AnchorPane.topAnchor="-89.0">
-               <children>
-                  <TextField fx:id="tfKlartext" editable="false" prefHeight="80.0" prefWidth="377.0" />
-                  <Label prefHeight="17.0" prefWidth="385.0" />
-                  <TextField fx:id="tfCodiert" editable="false" prefHeight="79.0" prefWidth="377.0" />
-                  <Label prefHeight="17.0" prefWidth="385.0" />
-               </children>
-            </VBox>
-         </children></AnchorPane>
+      <AnchorPane layoutX="207.0" layoutY="-111.0" prefHeight="111.0" prefWidth="487.0" AnchorPane.leftAnchor="207.0" AnchorPane.rightAnchor="274.0" />
       <GridPane layoutX="23.0" layoutY="60.0" prefHeight="158.0" prefWidth="237.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="60.0">
         <columnConstraints>
             <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
@@ -92,13 +80,6 @@
       </MenuButton>
          </children>
       </GridPane>
-      <FlowPane layoutX="736.0" layoutY="51.0" prefHeight="173.0" prefWidth="195.0" AnchorPane.rightAnchor="36.0" AnchorPane.topAnchor="51.0">
-         <children>
-            <Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="80.0" prefWidth="195.0" text="Funkspruch empfangen" />
-            <Label prefHeight="17.0" prefWidth="195.0" />
-            <Button fx:id="btnSenden" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="80.0" prefWidth="195.0" text="An Funker senden" />
-         </children>
-      </FlowPane>
       <GridPane layoutX="23.0" layoutY="222.0" prefHeight="60.0" prefWidth="270.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="222.0">
         <columnConstraints>
           <ColumnConstraints hgrow="SOMETIMES" maxWidth="206.0" minWidth="10.0" prefWidth="102.0" />
@@ -193,7 +174,7 @@
                   <Insets left="10.0" right="10.0" />
                </GridPane.margin>
             </TextField>
-            <Button fx:id="btnA" minHeight="35.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="A" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="5">
+            <Button fx:id="btnA" minHeight="35.0" mnemonicParsing="false" onMousePressed="#tasteRunter" onMouseReleased="#tasteRauf" prefHeight="43.0" prefWidth="45.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="A" textFill="#fffdfd" GridPane.columnIndex="2" GridPane.rowIndex="5">
                <font>
                   <Font name="System Bold" size="18.0" />
                </font>
@@ -690,5 +671,34 @@
             </Label>
          </children>
       </GridPane>
+      <Label layoutX="684.0" layoutY="-164.0" prefHeight="17.0" prefWidth="195.0" />
+      <GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0">
+        <columnConstraints>
+          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+        </columnConstraints>
+        <rowConstraints>
+          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+        </rowConstraints>
+         <children>
+            <TextField fx:id="tfKlartext" editable="false" prefHeight="70.0" prefWidth="293.0">
+               <GridPane.margin>
+                  <Insets />
+               </GridPane.margin>
+            </TextField>
+            <TextField fx:id="tfCodiert" editable="false" prefHeight="70.0" prefWidth="293.0" GridPane.rowIndex="1" />
+            <Button fx:id="btnSenden" alignment="CENTER" contentDisplay="RIGHT" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="An Funker senden" textAlignment="CENTER" GridPane.columnIndex="1">
+               <GridPane.margin>
+                  <Insets left="80.0" />
+               </GridPane.margin>
+            </Button>
+            <Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="70.0" prefWidth="195.0" text="Funkspruch empfangen" GridPane.columnIndex="1" GridPane.rowIndex="1">
+               <GridPane.margin>
+                  <Insets left="80.0" />
+               </GridPane.margin>
+            </Button>
+         </children>
+      </GridPane>
    </children>
 </AnchorPane>
diff --git a/src/main/resources/projekt/enigma/kenngruppe.fxml b/src/main/resources/projekt/enigma/kenngruppe.fxml
index 2cedf3644a5b65ea0c8f53751137ac55e051acd3..019c9c177e31b671dfd904d3396474510999c159 100644
--- a/src/main/resources/projekt/enigma/kenngruppe.fxml
+++ b/src/main/resources/projekt/enigma/kenngruppe.fxml
@@ -2,21 +2,20 @@
 
 <?import javafx.scene.control.Button?>
 <?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
 <?import javafx.scene.layout.AnchorPane?>
-<?import javafx.scene.layout.HBox?>
-<?import javafx.scene.shape.Circle?>
+<?import javafx.scene.layout.VBox?>
 
-<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="411.0" prefWidth="512.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.KenngruppeController">
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="137.0" prefWidth="234.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.KenngruppeController">
    <children>
-      <Label layoutX="81.0" layoutY="29.0" text="Bitte Kenngruppe eingeben!" AnchorPane.leftAnchor="81.0" AnchorPane.rightAnchor="70.0" AnchorPane.topAnchor="29.0" />
-      <HBox layoutX="107.0" layoutY="141.0" prefHeight="26.0" prefWidth="276.0" AnchorPane.leftAnchor="107.0" AnchorPane.rightAnchor="129.0" AnchorPane.topAnchor="141.0">
+      <VBox layoutX="13.0" layoutY="20.0" prefHeight="107.0" prefWidth="209.0" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="13.0" AnchorPane.rightAnchor="12.0" AnchorPane.topAnchor="20.0">
          <children>
-            <Button fx:id="secondaryButton" onAction="#switchToPrimary" prefHeight="25.0" prefWidth="142.0" text="Kenngruppe bestätigen!" />
-            <Label prefHeight="17.0" prefWidth="159.0" text="Label" />
-            <Button mnemonicParsing="false" prefHeight="25.0" prefWidth="150.0" text="Button" />
+            <Label alignment="CENTER" contentDisplay="CENTER" prefHeight="17.0" prefWidth="208.0" text="Bitte Kenngruppe eingeben!" />
+            <Label prefHeight="62.0" prefWidth="209.0" />
+            <TextField fx:id="tfKenngruppe" />
+            <Label prefHeight="39.0" prefWidth="209.0" />
+            <Button maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" onAction="#btnGui" prefHeight="25.0" prefWidth="212.0" text="Kenngruppe setzen!" />
          </children>
-      </HBox>
-      <Circle fill="DODGERBLUE" layoutX="226.0" layoutY="267.0" radius="100.0" stroke="BLACK" strokeType="INSIDE" AnchorPane.leftAnchor="126.0" AnchorPane.rightAnchor="186.0" AnchorPane.topAnchor="167.0" />
-      <Button fx:id="secondaryButton" layoutX="40.0" layoutY="85.0" onAction="#switchToPrimary" prefHeight="25.0" prefWidth="241.0" text="Kenngruppe bestätigen!" />
+      </VBox>
    </children>
 </AnchorPane>