diff --git a/Praktikum/VINF_MaerklinControl/.classpath b/Praktikum/VINF_MaerklinControl/.classpath
index ef0f0db4af6180ed5196999f319a0c944249c726..423fc1c028e9c1fd9775f261ca668d3c11307374 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="/home/lukas/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="D:/Users/Philipp/gitlab/VInf/Praktikum/VINF_MaerklinControl/controlsfx-8.40.12.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/Praktikum/VINF_MaerklinControl/.gitignore b/Praktikum/VINF_MaerklinControl/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..84c048a73cc2e5dd24f807669eb99b0ce3123195
--- /dev/null
+++ b/Praktikum/VINF_MaerklinControl/.gitignore
@@ -0,0 +1 @@
+/build/
diff --git a/Praktikum/VINF_MaerklinControl/bin/.gitignore b/Praktikum/VINF_MaerklinControl/bin/.gitignore
index d0380dd1b383afcf938027633d2902f4e14690f3..c14b100539d33e27c566ee63e8f25be8379cf169 100644
--- a/Praktikum/VINF_MaerklinControl/bin/.gitignore
+++ b/Praktikum/VINF_MaerklinControl/bin/.gitignore
@@ -1,2 +1 @@
 /gui/
-/server/
diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class
index 8c7406566956bc80f1591fbdb997baa29832d085..91a92d0511ba80da321a112ff9c9f46348ff5281 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class 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
index 52b295989212a8cf50796042d80b93876beca142..824dae680925b6eeb32b9d0a9c62a3b97b954c79 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$2.class 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
index cc66112a4c85e7c1f47ce261361bbb793688f443..744366b7f03a08ef18d230db577a5c1456acb36d 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$3.class 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
index 0339784c9952b60e7239ff861176ccc43b5e1439..7e71f251611ed0d532eefdea856567f20da664fb 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection.class 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
index 8c037974b5e8340892e397a3122f397e185e4519..86accba0c001ecc868558a047b7eb9c9133b916b 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality$1.class 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
index 524bad0156be456637d6d9385a366b90d6275a41..d4dd5a8184f3066f63fae0511990b93ae30dab75 100644
Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality.class 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 36a9f37d398b91874658fe206feaf3874f7f2eab..9c912940a43206d9b74ab2466c61498d4886fb68 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/EngineController.class b/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class
index 0923efc00374208b57eb94f6414e4750bfeda6a7..06031cbb88424aba6ae1302ab7dd6d0f0982b52e 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/build/build.xml b/Praktikum/VINF_MaerklinControl/build/build.xml
index e4b798a61000ce54533f3758edbefaa37c2af86e..2c02d90adb7e02148433f939c391a2ed488f76c9 100644
--- a/Praktikum/VINF_MaerklinControl/build/build.xml
+++ b/Praktikum/VINF_MaerklinControl/build/build.xml
@@ -97,15 +97,14 @@
 		<fx:application id="fxApplication"
 			name="Märklin Control"
 			mainClass="gui.MainApp"
-			toolkit="fx"
-			version="0.9"
+			version="1.0"
 		/>
 	
 		<mkdir dir="build/classes/META-INF" />
 	
 	
 	
-		<fx:jar destfile="dist/VINF_MaerklinControl.jar">
+		<fx:jar destfile="dist/Märklin Control.jar">
 			<fx:application refid="fxApplication"/>
 			<fileset dir="build/classes">
 			</fileset>
@@ -114,7 +113,7 @@
 			<manifest>
 				<attribute name="Implementation-Vendor" value="lf.ps"/>
 				<attribute name="Implementation-Title" value="Märklin Control"/>
-				<attribute name="Implementation-Version" value="0.9"/>
+				<attribute name="Implementation-Version" value="1.0"/>
 				<attribute name="JavaFX-Feature-Proxy" value="None"/>
 			</manifest>
 		</fx:jar>
@@ -128,11 +127,11 @@
 			includeDT="false"
 			offlineAllowed="true"
 			outdir="${basedir}/deploy"
-			outfile="VINF_MaerklinControl" nativeBundles="exe"
+			outfile="Märklin Control" nativeBundles="exe"
 			updatemode="background" >
 	
 			<fx:platform basedir="${java.home}"/>
-			<fx:info title="VINF_MaerklinControl" vendor="lf.ps"/>
+			<fx:info title="Märklin Control" vendor="lf.ps"/>
 	
 			<fx:application refId="fxApplication"/>
 			<fx:resources refid="appRes"/>
diff --git a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection$1.class b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection$1.class
index d5f15fd46ccfafc40f45e68790d96cb914a6c91e..4bdd9299a33754aa78397bd9350beed669ed07de 100644
Binary files a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection$1.class and b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection$1.class differ
diff --git a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection$2.class b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection$2.class
index 73188c27211a468413b13f48a6c4394abb4fdf44..86c5410b96076e97a3ba66e2076558655813ac58 100644
Binary files a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection$2.class and b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection$2.class differ
diff --git a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection.class b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection.class
index f4bcce177a7078ab7d667f3ceacd3a1da9de7f11..086baa0b446bdc09440de9a050bfb689e2073252 100644
Binary files a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection.class and b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$EstablishConnection.class differ
diff --git a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$UpdateFunctionality$1.class b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$UpdateFunctionality$1.class
index 9dbbd302f47463dc5e2587663acdc501cfd03a96..2580206f497ac06291616d292ca66724f7225505 100644
Binary files a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$UpdateFunctionality$1.class and b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$UpdateFunctionality$1.class differ
diff --git a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$UpdateFunctionality.class b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$UpdateFunctionality.class
index 0e7045bc2524fa77577947ea1ddfe0f4fe972f02..3b79ecac1f50f073cd6befa07ce1f718a6bfa060 100644
Binary files a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$UpdateFunctionality.class and b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp$UpdateFunctionality.class differ
diff --git a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp.class b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp.class
index 0d6c40cfaae235aca37aa634eda26d2ad458c620..fc73e783f3fcd5cb1f3668aadaa5e01949446949 100644
Binary files a/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp.class and b/Praktikum/VINF_MaerklinControl/build/build/classes/gui/MainApp.class differ
diff --git a/Praktikum/VINF_MaerklinControl/build/build/classes/server/UDPListener.class b/Praktikum/VINF_MaerklinControl/build/build/classes/server/UDPListener.class
index e989840483d3c4ae8c9a473e1b70aafbd203f084..98171f3ab58a3d3188d2cb9f6f0ee98cd1b8db25 100644
Binary files a/Praktikum/VINF_MaerklinControl/build/build/classes/server/UDPListener.class and b/Praktikum/VINF_MaerklinControl/build/build/classes/server/UDPListener.class differ
diff --git a/Praktikum/VINF_MaerklinControl/build/build/src/gui/MainApp.java b/Praktikum/VINF_MaerklinControl/build/build/src/gui/MainApp.java
index fc13d4868095e42e0f3b2e05a0c12f5a6cbb7165..992fdaa14ed01b5a760bdea09dded681eb701b61 100644
--- a/Praktikum/VINF_MaerklinControl/build/build/src/gui/MainApp.java
+++ b/Praktikum/VINF_MaerklinControl/build/build/src/gui/MainApp.java
@@ -7,8 +7,6 @@ import java.net.Socket;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import javax.xml.bind.DatatypeConverter;
-
 import gui.model.Engine;
 import gui.model.Switch;
 import gui.model.Settings;
@@ -306,7 +304,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,9 +321,15 @@ 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())) {
 					client = socket;
@@ -346,22 +350,44 @@ 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();
+					try {
+						byte[] datagram = {Properties.SEPERATOR, (byte) 0x00, (byte) 0x00, (byte) Properties.SESSION_ABORT, (byte) 0x00, (byte) 0x00};
+						out.write(datagram);
+						client.close();
+						connectionEstablished = false;
+						running = false;
+						settingsController.updateSettingsStatus();
+						
+					} catch (Exception e) {
+						setStatus("Error at: establishConnection (shutting down connection)");
+						e.printStackTrace();
+					}
 				}
 			}
 		}
@@ -378,7 +404,7 @@ public class MainApp extends Application {
 		}
 
 		public void parseDatagram (byte[] datagram) {
-			System.out.println("2:     "+DatatypeConverter.printHexBinary(datagram));
+			//System.out.println("2:     "+DatatypeConverter.printHexBinary(datagram));
 			if (datagram.length < 5) {
 				setStatus("Error while updating!");
 				return;
@@ -409,13 +435,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;
@@ -445,7 +464,7 @@ public class MainApp extends Application {
 								for (int i = 0; i < Properties.IN_BUFFER_SIZE; i++) {
 									datagram[i] = buffer[counter-Properties.IN_BUFFER_SIZE+i+1];
 								}
-								System.out.println("1:     "+DatatypeConverter.printHexBinary(datagram));
+								//System.out.println("1:     "+DatatypeConverter.printHexBinary(datagram));
 								parseDatagram(datagram);
 							}
 							else if (dataCounter > 5 && startByte) {
@@ -457,14 +476,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/build/build/src/server/UDPListener.java b/Praktikum/VINF_MaerklinControl/build/build/src/server/UDPListener.java
index 0563ea5fa357bd093b18b96b28b25408bf8b7f23..e2d66c56b28c07eef70e15d8cbf8849c352cc792 100644
--- a/Praktikum/VINF_MaerklinControl/build/build/src/server/UDPListener.java
+++ b/Praktikum/VINF_MaerklinControl/build/build/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,8 @@ 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());
+								train.engineSpeed = 0;
+								System.out.println("Direction of Engine "+train.getEngineID()+" changed to "+train.getEngineDirection());
 								break;
 							}
 						}
@@ -115,7 +120,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;
 							}
 						}
diff --git a/Praktikum/VINF_MaerklinControl/build/deploy/VINF_MaerklinControl.jar b/Praktikum/VINF_MaerklinControl/build/deploy/VINF_MaerklinControl.jar
index eef9eff31d7e45750a5e98aa91e50f3936ac93ab..df341d1d5d2c2d6a752541e6866a6a224d47f1d0 100644
Binary files a/Praktikum/VINF_MaerklinControl/build/deploy/VINF_MaerklinControl.jar and b/Praktikum/VINF_MaerklinControl/build/deploy/VINF_MaerklinControl.jar differ
diff --git a/Praktikum/VINF_MaerklinControl/build/deploy/VINF_MaerklinControl.jnlp b/Praktikum/VINF_MaerklinControl/build/deploy/VINF_MaerklinControl.jnlp
index 3ab857f01d6515f467880fcb681e6964f935ab30..2b4c625462731d61ec9bff0888d3abecc554cdd1 100644
--- a/Praktikum/VINF_MaerklinControl/build/deploy/VINF_MaerklinControl.jnlp
+++ b/Praktikum/VINF_MaerklinControl/build/deploy/VINF_MaerklinControl.jnlp
@@ -8,7 +8,7 @@
   </information>
   <resources>
     <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
-    <jar href="VINF_MaerklinControl.jar" size="38833" download="eager" />
+    <jar href="VINF_MaerklinControl.jar" size="39342" download="eager" />
     <jar href="libs\controlsfx-8.40.12.jar" size="996389" download="eager" />
   </resources>
   <jfx:javafx-desc  width="0" height="0" main-class="gui.MainApp"  name="M�rklin Control" />
diff --git a/Praktikum/VINF_MaerklinControl/build/project/src/gui/MainApp.java b/Praktikum/VINF_MaerklinControl/build/project/src/gui/MainApp.java
index fc13d4868095e42e0f3b2e05a0c12f5a6cbb7165..992fdaa14ed01b5a760bdea09dded681eb701b61 100644
--- a/Praktikum/VINF_MaerklinControl/build/project/src/gui/MainApp.java
+++ b/Praktikum/VINF_MaerklinControl/build/project/src/gui/MainApp.java
@@ -7,8 +7,6 @@ import java.net.Socket;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import javax.xml.bind.DatatypeConverter;
-
 import gui.model.Engine;
 import gui.model.Switch;
 import gui.model.Settings;
@@ -306,7 +304,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,9 +321,15 @@ 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())) {
 					client = socket;
@@ -346,22 +350,44 @@ 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();
+					try {
+						byte[] datagram = {Properties.SEPERATOR, (byte) 0x00, (byte) 0x00, (byte) Properties.SESSION_ABORT, (byte) 0x00, (byte) 0x00};
+						out.write(datagram);
+						client.close();
+						connectionEstablished = false;
+						running = false;
+						settingsController.updateSettingsStatus();
+						
+					} catch (Exception e) {
+						setStatus("Error at: establishConnection (shutting down connection)");
+						e.printStackTrace();
+					}
 				}
 			}
 		}
@@ -378,7 +404,7 @@ public class MainApp extends Application {
 		}
 
 		public void parseDatagram (byte[] datagram) {
-			System.out.println("2:     "+DatatypeConverter.printHexBinary(datagram));
+			//System.out.println("2:     "+DatatypeConverter.printHexBinary(datagram));
 			if (datagram.length < 5) {
 				setStatus("Error while updating!");
 				return;
@@ -409,13 +435,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;
@@ -445,7 +464,7 @@ public class MainApp extends Application {
 								for (int i = 0; i < Properties.IN_BUFFER_SIZE; i++) {
 									datagram[i] = buffer[counter-Properties.IN_BUFFER_SIZE+i+1];
 								}
-								System.out.println("1:     "+DatatypeConverter.printHexBinary(datagram));
+								//System.out.println("1:     "+DatatypeConverter.printHexBinary(datagram));
 								parseDatagram(datagram);
 							}
 							else if (dataCounter > 5 && startByte) {
@@ -457,14 +476,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/build/project/src/server/UDPListener.java b/Praktikum/VINF_MaerklinControl/build/project/src/server/UDPListener.java
index 0563ea5fa357bd093b18b96b28b25408bf8b7f23..0a5c2456a5a7162a3a3c2f9d7faa3968fbcaa613 100644
--- a/Praktikum/VINF_MaerklinControl/build/project/src/server/UDPListener.java
+++ b/Praktikum/VINF_MaerklinControl/build/project/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,8 @@ 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());
+								train.engineSpeed = 0;
+								// System.out.println("Direction of Engine "+train.getEngineID()+" changed to "+train.getEngineDirection());
 								break;
 							}
 						}
@@ -115,7 +120,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;
 							}
 						}
diff --git a/Praktikum/VINF_MaerklinControl/doc/documentation/Benutzerhandbuch.docx b/Praktikum/VINF_MaerklinControl/doc/documentation/Benutzerhandbuch.docx
new file mode 100644
index 0000000000000000000000000000000000000000..759ba2fc9a073fcb9c24d32c09209182c02384e1
Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/doc/documentation/Benutzerhandbuch.docx differ
diff --git a/Praktikum/VINF_MaerklinControl/doc/documentation/Benutzerhandbuch.pdf b/Praktikum/VINF_MaerklinControl/doc/documentation/Benutzerhandbuch.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..94e77a2bc56c5d8ef4fc6e5aa3d00363003e2c56
Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/doc/documentation/Benutzerhandbuch.pdf differ
diff --git "a/Praktikum/VINF_MaerklinControl/doc/presentation/~$Pr\303\244sentation M\303\244rklin Control.pptx" "b/Praktikum/VINF_MaerklinControl/doc/presentation/~$Pr\303\244sentation M\303\244rklin Control.pptx"
new file mode 100644
index 0000000000000000000000000000000000000000..b8926b8a9ba43cc60737e9485137739c72879b2d
Binary files /dev/null and "b/Praktikum/VINF_MaerklinControl/doc/presentation/~$Pr\303\244sentation M\303\244rklin Control.pptx" differ
diff --git a/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java b/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java
index c826dfc5cfcdae44199cda06a011cda31dc34af7..992fdaa14ed01b5a760bdea09dded681eb701b61 100644
--- a/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java
+++ b/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java
@@ -7,8 +7,6 @@ import java.net.Socket;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import javax.xml.bind.DatatypeConverter;
-
 import gui.model.Engine;
 import gui.model.Switch;
 import gui.model.Settings;
@@ -102,7 +100,7 @@ public class MainApp extends Application {
     @Override
     public void start(Stage primaryStage) {
         this.primaryStage = primaryStage;
-        this.primaryStage.setTitle("M�rklin Control Client");
+        this.primaryStage.setTitle("M�rklin Control Client");
         this.primaryStage.getIcons().add(new Image("file:res/BO.png"));
         initRootLayout();
         initTabs();