diff --git a/UML.dia b/UML.dia
index 7a11e1ecf0c9287e9854cc1d325ab5c52bb427f0..f9f2622288ad09c5e631c423b1693e4af6b500fd 100644
Binary files a/UML.dia and b/UML.dia differ
diff --git a/UML.dia~ b/UML.dia~
deleted file mode 100644
index 32d01b2ddb4a62250cd899166e84d080a9c9ead4..0000000000000000000000000000000000000000
Binary files a/UML.dia~ and /dev/null differ
diff --git a/src/tec/letsgoing/ardublock/simulator/Simulator.java b/src/tec/letsgoing/ardublock/simulator/Simulator.java
index 93d9ecadc32906d32b3462cb8afe55932ca73499..cab02ba405acfa251eeb922c8876721bf53cddc5 100644
--- a/src/tec/letsgoing/ardublock/simulator/Simulator.java
+++ b/src/tec/letsgoing/ardublock/simulator/Simulator.java
@@ -9,7 +9,6 @@ import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
-import tec.letsgoing.ardublock.simulator.simcode.comm.CodeConnectString;
 import tec.letsgoing.ardublock.simulator.simcode.comm.CodeSerialPrint;
 import tec.letsgoing.ardublock.simulator.simcode.control.CodeDelay;
 import tec.letsgoing.ardublock.simulator.simcode.control.CodeFor;
@@ -27,6 +26,7 @@ import tec.letsgoing.ardublock.simulator.view.GUI;
 /**
  * @author Lucas
  */
+
 public class Simulator implements Runnable, ActionListener {
 	private static Simulator instance;
 	private Arduino arduino;
@@ -112,7 +112,6 @@ public class Simulator implements Runnable, ActionListener {
 		gui.dispose();
 
 		createSubClasses();
-		// FIXME Delete Old Functions on Reload?
 		for (SimCodeFunction function : functionsCode) {
 			arduino.addFunction(function);
 		}
@@ -140,7 +139,17 @@ public class Simulator implements Runnable, ActionListener {
 		return true;
 	}
 
-	// TODO Function to Reset the saved Functions
+	/**
+	 * Function to Clear the Storage of saved Functions in Simulator-Class. After
+	 * this a reload is needed to clear the Arduino.
+	 * 
+	 * @return boolean=true if the functions where correctly reset
+	 */
+	public boolean resetFunctions() {
+		functionsCode.clear();
+		arduino.reset();
+		return true;
+	}
 
 	public void actionPerformed(ActionEvent arg0) {
 		String command = arg0.getActionCommand();
diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
index ac9ab5dcddbe5c061fd5337e9dda00f1b72040f7..1970fe8693137086ca87c67e858896cecdf7d63d 100644
--- a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
+++ b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
@@ -3,12 +3,10 @@
  */
 package tec.letsgoing.ardublock.simulator.arduino;
 
-import java.util.Arrays;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
-import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 import tec.letsgoing.ardublock.simulator.view.GUI;
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
index 22b8de4caeb0460de2d5eaca6d4b551f433aba42..c3064373464074f132ed78fad44e5b1f9627b241 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
@@ -3,8 +3,6 @@
  */
 package tec.letsgoing.ardublock.simulator.simcode;
 
-import java.util.Vector;
-
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
index ad9ef6591acbba61d91449fc34982e811094dff9..200f52eebbdbfcc64b7dce28340e1bdd4f5eb015 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
@@ -14,14 +14,12 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
  *
  */
 public class CodeElse extends CodeTypeIf {
-	private CodeTypeIf follow;
 	private Vector<SimCode> codeBlocks;
 
 	public CodeElse(Vector<SimCode> _vec) {
 		codeBlocks = _vec;
 	}
 
-	// TODO If kann erweitert werden durch else/elseif
 	@Override
 	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
index 0937d3413fffea228756156979b489f09847bab6..d441b28353426a5229910f7aeabf097f6e0e7d62 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
@@ -18,24 +18,30 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 public class CodeForCount extends SimCode {
 	private SimTypeInt count;
 	private SimTypeString varname;
-	private Vector<SimCode> blocks;
+	private Vector<SimCode> codeblocks;
 
 	public CodeForCount(SimTypeInt _count, SimTypeString _varname, Vector<SimCode> _blocks) {
 		count = _count;
 		varname = _varname;
-		blocks = _blocks;
+		codeblocks = _blocks;
 	}
 
 	@Override
 	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
-		// TODO Auto-generated method stub
+		functionHead.createVariable(varname.toString(), new SimTypeInt(0));
+		for (int i = 0; i < count.run(_arduino, functionHead).getValue(); i++) {
+			functionHead.setVariable(varname.toString(), new SimTypeInt(i));
+			for (SimCode block : codeblocks) {
+				block.run(_arduino, functionHead);
+			}
+		}
 		return null;
 	}
 
 	@Override
 	public String toString() {
-		// TODO Auto-generated method stub
-		return null;
+
+		return "";
 	}
 
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
index 3d7a909ab9b6c7c51adfe7a441b8a8da48c39227..6ca271762ced1e5d0e453d78c3fdca1f86f3447f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
@@ -3,8 +3,12 @@
  */
 package tec.letsgoing.ardublock.simulator.simcode.control;
 
+import java.util.Vector;
+
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
+import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
@@ -12,17 +16,32 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
  *
  */
 public class CodeWhileMillis extends SimCode {
+	private SimTypeInt duration;
+	private SimTypeString varname;
+	private Vector<SimCode> blocks;
+
+	public CodeWhileMillis(SimTypeInt _duration, SimTypeString _varname, Vector<SimCode> _blocks) {
+		duration = _duration;
+		varname = _varname;
+		blocks = _blocks;
+	}
 
 	@Override
 	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
-		// TODO Auto-generated method stub
+		functionHead.createVariable(varname.toString(), new SimTypeInt(_arduino.getMillis()));
+		int startTime = _arduino.getMillis();
+		int dura = duration.run(_arduino, functionHead).getValue();
+		while (startTime + dura < _arduino.getMillis()) {
+			for (SimCode block : blocks) {
+				block.run(_arduino, functionHead);
+			}
+		}
 		return null;
 	}
 
 	@Override
 	public String toString() {
-		// TODO Auto-generated method stub
-		return null;
+		return "";
 	}
 
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
index 32430289642ed3a314e42ac7bb9ec50273e4f5b2..8a29e0f8f3639e139c3f91dc7b6ecf0d4f4b6eda 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
@@ -5,7 +5,6 @@ package tec.letsgoing.ardublock.simulator.simcode.vars;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
-import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
index 4186814d0b3632d1478900b13445ce904b00b7ac..4c21be5545f33e1d743bd6a7198381d6698bdd7e 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
@@ -5,7 +5,6 @@ package tec.letsgoing.ardublock.simulator.simcode.vars;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
-import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
index b5e1cc6fb0d107b8b0ecadb6203f6c171569ff9e..e5194e8ad6357b61b394bf92ccf139798d9e6efb 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
@@ -15,7 +15,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 public class CodeMillis extends SimCode {
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
 		return new SimTypeInt(_arduino.getMillis());
 	}