diff --git a/Praktikum/VINF_MaerklinControl/.classpath b/Praktikum/VINF_MaerklinControl/.classpath
index 423fc1c028e9c1fd9775f261ca668d3c11307374..ef0f0db4af6180ed5196999f319a0c944249c726 100644
--- a/Praktikum/VINF_MaerklinControl/.classpath
+++ b/Praktikum/VINF_MaerklinControl/.classpath
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-	<classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/>
-	<classpathentry kind="lib" path="D:/Users/Philipp/gitlab/VInf/Praktikum/VINF_MaerklinControl/controlsfx-8.40.12.jar"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/>
+	<classpathentry kind="lib" path="/home/lukas/VInf/Praktikum/VINF_MaerklinControl/controlsfx-8.40.12.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/Praktikum/VINF_MaerklinControl/bin/.gitignore b/Praktikum/VINF_MaerklinControl/bin/.gitignore
deleted file mode 100644
index ad3d6b1e1acb320d8e6c9ac6f380dfd4976b76e7..0000000000000000000000000000000000000000
--- a/Praktikum/VINF_MaerklinControl/bin/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/common/
-/gui/
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..5f7bff039ae9e9fac94654d9731e78941721921f
Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$2.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..52b295989212a8cf50796042d80b93876beca142
Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$2.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$3.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..721229655a516e2f583e8c4aff4315024b473f99
Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$3.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection.class
new file mode 100644
index 0000000000000000000000000000000000000000..abf9f4e0db7a71c616c8c917f97ef954f63fca27
Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality$1.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..a2c6505b1683e102526d9713d3f2609712a1f5b5
Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality$1.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality.class
new file mode 100644
index 0000000000000000000000000000000000000000..9ae81e7efe023ff6ee577cdadb8e82860609ef83
Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp.class
index 58bed3efc17a1abc3ea3c7b715371bce1fcc873c..b376dcc578cdbfe55b17ae8790c028983d407496 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp.class and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/view/ControlTabs.fxml b/Praktikum/VINF_MaerklinControl/bin/gui/view/ControlTabs.fxml
deleted file mode 100644
index 8ef2406765ab10f9f70a3a222e8b1b2b89eca728..0000000000000000000000000000000000000000
--- a/Praktikum/VINF_MaerklinControl/bin/gui/view/ControlTabs.fxml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import javafx.scene.control.Tab?>
-<?import javafx.scene.control.TabPane?>
-<?import javafx.scene.layout.AnchorPane?>
-
-<AnchorPane prefHeight="600.0" prefWidth="340.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
-   <children>
-      <TabPane layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-         <tabs>
-            <Tab text="Loks">
-               <content>
-                  <fx:include source="Engine.fxml" />
-               </content>
-            </Tab>
-            <Tab text="Weichen">
-               <content>
-                  <fx:include source="SwitchList.fxml" />
-               </content>
-            </Tab>
-            <Tab text="Drehscheibe">
-               <content>
-                  <fx:include source="Turntable.fxml" />
-               </content>
-            </Tab>
-            <Tab text="Verbindung">
-               <content>
-                  <fx:include source="Settings.fxml" />
-               </content>
-            </Tab>
-         </tabs>
-      </TabPane>
-   </children>
-</AnchorPane>
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class b/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class
index 06031cbb88424aba6ae1302ab7dd6d0f0982b52e..0923efc00374208b57eb94f6414e4750bfeda6a7 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class and b/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/server/MaerklinServer.class b/Praktikum/VINF_MaerklinControl/bin/server/MaerklinServer.class
index afe7a4d2062fca83c9266f25ce3c80bae44dadef..a30f632a905c4237764ac5b3635bcbf7cf9d406b 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/server/MaerklinServer.class and b/Praktikum/VINF_MaerklinControl/bin/server/MaerklinServer.class differ
diff --git a/Praktikum/VINF_MaerklinControl/bin/server/UDPListener.class b/Praktikum/VINF_MaerklinControl/bin/server/UDPListener.class
index e6135278ddd85b2a8729ae560a1c96bef8076e53..739f64cfde4ac5c302dcba68ba9caab5cf5df178 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/server/UDPListener.class and b/Praktikum/VINF_MaerklinControl/bin/server/UDPListener.class differ
diff --git a/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java b/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java
index fc13d4868095e42e0f3b2e05a0c12f5a6cbb7165..e90aec90510bff1d8f13e7d069ad6f0dc474013a 100644
--- a/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java
+++ b/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java
@@ -306,7 +306,7 @@ public class MainApp extends Application {
 				settingsController.updateSettingsStatus();
 				
 			} catch (Exception e) {
-				setStatus("Error at: establishConnection (shutting down connection");
+				setStatus("Error at: establishConnection (shutting down connection)");
 				e.printStackTrace();
 			}
 		}
@@ -323,16 +323,22 @@ public class MainApp extends Application {
 			CONTROLLER_INSTANCE = controller;
 		}
 		
+		public void updateGUI () {
+			engineController.updateEngineStatus();
+			for (Switch sw : switches){
+				sw.getController().get().updateSwitchStatus();
+			}
+		}
+		
 		@Override
 		public void run() {
-			Thread.yield();
 			if (!connectionEstablished) {
-				try (Socket socket = new Socket(configuration.getSocketAddress().get().getHostName(), configuration.getSocketAddress().get().getPort())) {
+				try (Socket socket = new Socket(configuration.getSocketAddress().get().getHostName(), configuration.getSocketAddress().get().getPort()); InputStream inStream = socket.getInputStream(); OutputStream outStream = socket.getOutputStream();) {
 					client = socket;
 					client.setKeepAlive(true);
 					client.setReuseAddress(true);
-					in = client.getInputStream();
-					out = client.getOutputStream();
+					in = inStream;
+					out = outStream;
 					connectionEstablished = true;
 					running = true;
 					UTILITY_THREAD_EXECUTOR.submit((new UpdateFunctionality(CONTROLLER_INSTANCE, in)));
@@ -346,23 +352,31 @@ public class MainApp extends Application {
 						
 					});
 					while (connectionEstablished) {
-						Thread.sleep(100);
+						Platform.runLater(new Runnable() {
+
+							@Override
+							public void run() {
+								updateGUI();					
+							}
+						
+						});
+						Thread.sleep(50);
 					}
 				}
 				catch (Exception e) {
+					connectionEstablished = false;
+					running = false;
 					Platform.runLater(new Runnable() {
 
 						@Override
 						public void run() {
-							CONTROLLER_INSTANCE.setStatus("Error at: establishConnection (establishing connection");					
+							CONTROLLER_INSTANCE.setStatus("Error at: establishConnection (establishing connection)");
+							CONTROLLER_INSTANCE.settingsController.updateSettingsStatus();
 						}
 						
 					});
 					e.printStackTrace();
 				}
-				finally {
-					CONTROLLER_INSTANCE.UTILITY_THREAD_EXECUTOR.shutdownNow();
-				}
 			}
 		}
 	}
@@ -409,13 +423,6 @@ public class MainApp extends Application {
 			}
 		}
 		
-		public void updateGUI () {
-			engineController.updateEngineStatus();
-			for (Switch sw : switches){
-				sw.getController().get().updateSwitchStatus();
-			}
-		}
-		
 		@Override
 		public void run() {
 			int stopCounter, dataCounter, counter;
@@ -457,14 +464,6 @@ public class MainApp extends Application {
 					while (INPUT_STREAM.available() != 0) {
 						INPUT_STREAM.read();
 					}
-					Platform.runLater(new Runnable() {
-
-						@Override
-						public void run() {
-							updateGUI();					
-						}
-					
-					});
 					Thread.sleep(50);
 				}
 			}
diff --git a/Praktikum/VINF_MaerklinControl/src/server/MaerklinServer.java b/Praktikum/VINF_MaerklinControl/src/server/MaerklinServer.java
index c2774bd217d4ce717b1fc7c705dc880e43323880..a716f55e8c741cf5cd31a9f76ee7e70bbac52b10 100644
--- a/Praktikum/VINF_MaerklinControl/src/server/MaerklinServer.java
+++ b/Praktikum/VINF_MaerklinControl/src/server/MaerklinServer.java
@@ -151,9 +151,9 @@ public class MaerklinServer{
 	// Starts the thread to broadcast the current status
 	public void statusUpdate(){
 		for (Socket clientSocket : clients) {
-			try {
+			try (OutputStream outStream = clientSocket.getOutputStream()){
 				//System.out.println("Updating client: "+clientSocket.getRemoteSocketAddress());
-				UTILITY_THREAD_EXECUTOR.submit(new UpdateThread(clientSocket.getOutputStream()));
+				UTILITY_THREAD_EXECUTOR.submit(new UpdateThread(outStream));
 			} 
 			catch (IOException e) {
 				System.out.println("Failed to receive output-stream of one of the clients!");
diff --git a/Praktikum/VINF_MaerklinControl/src/server/UDPListener.java b/Praktikum/VINF_MaerklinControl/src/server/UDPListener.java
index 0563ea5fa357bd093b18b96b28b25408bf8b7f23..127e4df5452c25e30587e4b3ecbc9a42080efab5 100644
--- a/Praktikum/VINF_MaerklinControl/src/server/UDPListener.java
+++ b/Praktikum/VINF_MaerklinControl/src/server/UDPListener.java
@@ -7,12 +7,16 @@ import javax.xml.bind.DatatypeConverter;
 
 public class UDPListener implements Runnable{
 	
+	// Defining the size of the datagrams received from the Maerklin-control-station
+	public final static int MAERKLIN_DATAGRAM_SIZE = 13;
+	
+	// Listener-port
 	private final static int port = 15730;
 	
-	private byte[] in = new byte[13];
+	private byte[] in;
 	
 	public UDPListener(){
-		// Nothing to do...
+		in = new byte[MAERKLIN_DATAGRAM_SIZE];
 	}
 	
 	public void listen(){
@@ -97,7 +101,7 @@ public class UDPListener implements Runnable{
 						for (Engine train : Engine.engines){
 							if (train.getEngineID() == getAddress()){
 								train.engineSpeed = getEngineSpeed();
-								//System.out.println("Speed of Engine "+train.getEngineID()+" changed to "+train.getEngineSpeed());
+								System.out.println("Speed of Engine "+train.getEngineID()+" changed to "+train.getEngineSpeed());
 								break;
 							}
 						}
@@ -106,7 +110,7 @@ public class UDPListener implements Runnable{
 						for (Engine train : Engine.engines){
 							if (train.getEngineID() == getAddress()){
 								train.engineDirection = getEngineDirection();
-								//System.out.println("Direction of Engine "+train.getEngineID()+" changed to "+train.getEngineDirection());
+								System.out.println("Direction of Engine "+train.getEngineID()+" changed to "+train.getEngineDirection());
 								break;
 							}
 						}
@@ -115,7 +119,7 @@ public class UDPListener implements Runnable{
 						for (Switch sw : Switch.switches){
 							if (sw.getSwitchID() == getAddress()){
 								sw.switchDirection = getEngineDirection();
-								//System.out.println("Direction of Switch "+sw.getSwitchID()+" changed to "+sw.getSwitchDirection());
+								System.out.println("Direction of Switch "+sw.getSwitchID()+" changed to "+sw.getSwitchDirection());
 								break;
 							}
 						}