diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
index 18c7105e74cc4f4085247b8b539118eb849e8d4e..5c903077a3326fe64c44869e1630e26c3d60dab7 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
@@ -3,7 +3,10 @@
  */
 package tec.letsgoing.ardublock.simulator.simcode;
 
+import java.util.Vector;
+
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
@@ -17,6 +20,10 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
  *
  */
 public abstract class SimCode {
+	protected Vector<Variable> vars = new Vector<Variable>();
+	protected boolean isMain = false;
+	protected Arduino arduino;
+	protected SimCode prevStack=null;
 
 	/**
 	 * Hauptaufruf, welcher während der Simulation ausgeführt wird. Dieser enthält die komplette Logik des Blocks.
@@ -24,8 +31,48 @@ public abstract class SimCode {
 	 * @param functionHead Aktueller Funktionskopf um lokale Variablen zu ermöglichen.
 	 * @return Ein SimCode Objekt sollte eines als "Ergebnis" entstehen. Ansonsten null
 	 */
-	public abstract SimCode run(Arduino _arduino, SimCodeFunction functionHead);
+	public abstract SimCode run(Arduino _arduino, SimCode functionHead);
 
 	public abstract String toString();
+	
+	public void createVariable(String _name, SimCode _value) {
+		if (!isMain) {
+			vars.add(new Variable(_name));
+			vars.lastElement().setValue(_value);
+		} else {
+			arduino.createVariable(_name, _value);
+		}
+	}
+
+	public boolean setVariable(String _name, SimCode _value) {
+		for (Variable var : vars) {
+			if (var.getName().equals(_name)) {
+				var.setValue(_value);
+				return true;
+			}
+		}
+		if (prevStack!=null) {
+		if(prevStack.setVariable(_name, _value)) 
+			return true;
+		}
+		if (arduino.setVariable(_name, _value))
+			return true;
+
+		return false;
+	}
+
+	public SimCode readVariable(String _name) {
+
+		for (Variable var : vars) {
+			if (var.getName().equals(_name)) {
+				return var.getValue();
+			}
+		}
+		if (prevStack!=null) {
+			return prevStack.readVariable(_name);
+		}
+		return arduino.readVariable(_name);
+
+	}
 
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
index e53a56bebbcaf1ffdbd4738982c1efd9c96a452f..454d740cdd9460739870d2f08c6936c1978ac153 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
@@ -26,7 +26,7 @@ public class CodeConnectString extends SimCode {
 	}
 
 	@Override
-	public SimTypeString run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeString run(Arduino _arduino, SimCode functionHead) {
 		// TODO Added Space between to Inputs
 		out = "" + block1.run(_arduino, functionHead).toString() + " " + block2.run(_arduino, functionHead).toString();
 		return new SimTypeString(out);
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
index 89fa78d28f8637b6c206d1555ffc467c09762602..234dc85d176a30e86ce55af7be82331f29c134b5 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
@@ -25,7 +25,7 @@ public class CodeSerialPrint extends SimCode {
 		boolBlock = _boolBlock;
 	}
 
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		String content;
 		content = stringBlock.run(_arduino, functionHead).toString();
 		if (boolBlock.run(_arduino, functionHead).getValue()) {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
index c9956a411f0555d36a135cfe8a12675021230125..4da7881d91cbf3ddd9c50e6d9b849aabe51dbffa 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
@@ -21,7 +21,7 @@ public class CodeDelay extends SimCode {
 		codeBlock = _codeBlock;
 	}
 
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		int duration = (int) codeBlock.run(_arduino, functionHead).getValue();
 		if (!_arduino.getStop()) {
 			try {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
index 5fa421263b32c09ca4edf648db187376a3eb2aab..c8779beff4cacd9c1fb46316aa43f78215a29f9f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeIf;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
@@ -25,10 +26,13 @@ public class CodeElse extends SimTypeIf {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
+		super.prevStack=functionHead;
+		super.arduino=_arduino;
+		super.vars = new Vector<Variable>();
 
 		for (SimCode block : codeBlocks) {
-			block.run(_arduino, functionHead);
+			block.run(_arduino, this);
 		}
 
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
index ab0984a96bc11144480aec5b561ec9b5a4cc8097..929f80cf9e4e2bb007a5eb223177240e9eecc93f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeIf;
@@ -29,11 +30,14 @@ public class CodeElseIf extends SimTypeIf {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (condition.run(_arduino, functionHead).getValue()) {
 			// Condition met.
+			super.prevStack=functionHead;
+			super.arduino=_arduino;
+			super.vars = new Vector<Variable>();
 			for (SimCode block : codeBlocks) {
-				block.run(_arduino, functionHead);
+				block.run(_arduino, this);
 			}
 			return null;
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
index 3ed8ae1cd4cf23d718c77594e9cca642bfc61768..808612dd20c681a8464348757ffd252bc21ae037 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
@@ -27,10 +28,13 @@ public class CodeFor extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
+		super.prevStack=functionHead;
+		super.arduino=_arduino;
+		super.vars = new Vector<Variable>();
 		for (int i = 0; i < count.run(_arduino, functionHead).getValue(); i++) {
 			for (SimCode code : codeBlocks) {
-				code.run(_arduino, functionHead);
+				code.run(_arduino, this);
 			}
 		}
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
index 97ca796fd00705661c50d7da844119785355e012..24b4faf5478a1c129ef6afeddb45cdd8f475fe64 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString;
@@ -29,14 +30,16 @@ public class CodeForCount extends SimCode {
 		codeblocks = _blocks;
 	}
 
-	// TODO For/While Mit Vars ausrüsten
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
-		functionHead.createVariable(varname.toString(), new SimTypeInt(0));
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
+		super.prevStack=functionHead;
+		super.arduino=_arduino;
+		super.vars = new Vector<Variable>();
+		this.createVariable(varname.toString(), new SimTypeInt(0));
 		for (int i = 0; i < count.run(_arduino, functionHead).getValue(); i++) {
-			functionHead.setVariable(varname.toString(), new SimTypeInt(i));
+			this.setVariable(varname.toString(), new SimTypeInt(i));
 			for (SimCode block : codeblocks) {
-				block.run(_arduino, functionHead);
+				block.run(_arduino, this);
 			}
 		}
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
index 7354a9862c01fcf69c8d25ef857ffedf0a181839..a1e56c163b8132a472de1e1b569ce7efe1ecacf2 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeIf;
@@ -32,10 +33,13 @@ public class CodeIf extends SimTypeIf {
 	/**
 	 * Returns True if the Condition is met or false if it isnt
 	 */
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		if (condition.run(_arduino, functionHead).getValue()) {
+			super.prevStack=functionHead;
+			super.arduino=_arduino;
+			super.vars = new Vector<Variable>();
 			for (SimCode block : codeBlocks) {
-				block.run(_arduino, functionHead);
+				block.run(_arduino, this);
 			}
 			return null;// True Case
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
index a08883eea09635ffcdaf3d065dcd928d39ea4a97..901a0f34776938beb6b71cd5f6332dcad16e0069 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
@@ -26,10 +27,13 @@ public class CodeWhile extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		while (!_arduino.getStop() && condition.run(_arduino, functionHead).getValue()) {
+			super.prevStack=functionHead;
+			super.arduino=_arduino;
+			super.vars = new Vector<Variable>();
 			for (SimCode code : codeBlocks) {
-				code.run(_arduino, functionHead);
+				code.run(_arduino, this);
 			}
 		}
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
index 2d798d592f1f579512af5819874e1c531ebdb2ca..47dd3a5ce3c9d68d7ef32a58aba30b7983fadc3f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString;
@@ -30,14 +31,17 @@ public class CodeWhileMillis extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
-		functionHead.createVariable(varname.toString(), new SimTypeInt(_arduino.getMillis()));
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
+		super.prevStack=functionHead;
+		super.arduino=_arduino;
+		super.vars = new Vector<Variable>();
+		this.setVariable(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);
+				block.run(_arduino, this);
 			}
 		}
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
index ea4d2958f3c256b20d677497154ea1f44e758f1c..2e86f967c4a35522b60a1662bec57a1757649775 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
@@ -26,7 +26,7 @@ public class SimTypeBool extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (followBlock instanceof SimCode) {
 			SimTypeBool ret = (SimTypeBool) followBlock.run(_arduino, functionHead);
 			value = ret.getValue();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java
index 3ab3d4866795ec1bdd78acdbec60510510e04b54..0efd6b458a39fe0df3653f0eb7b6bc7183e9dfa3 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java
@@ -18,7 +18,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 public abstract class SimTypeIf extends SimCode {
 
 	@Override
-	public abstract SimCode run(Arduino _arduino, SimCodeFunction functionHead);
+	public abstract SimCode run(Arduino _arduino, SimCode functionHead);
 
 	@Override
 	public abstract String toString();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
index 1c91f6325e1c4b840eb9634c69d272595a950084..d6e45549b4680868ae1c278f2890dad77ffca861 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
@@ -26,7 +26,7 @@ public class SimTypeInt extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		if (followBlock instanceof SimCode) {
 			SimTypeInt ret = (SimTypeInt) followBlock.run(_arduino, functionHead);
 			value = ret.getValue();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
index 39fac7acb5dd89f6c40edb1edbb545ff7eb8e811..cb79ed0f8fb54a534f76aa7032a67338688aa9d2 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
@@ -26,7 +26,7 @@ public class SimTypeString extends SimCode {
 	}
 
 	@Override
-	public SimTypeString run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeString run(Arduino _arduino, SimCode functionHead) {
 		if (followBlock instanceof SimCode) {
 			SimCode ret = followBlock.run(_arduino, functionHead);
 			content = ret.toString();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
index a0f876f8c871be8b9da88762a401e62b2e5e9aaa..b33ebce448b5f976c987a8ccbe9bf03e9dbb5819 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
@@ -20,7 +20,7 @@ public class CodeExecuteFunction extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		_arduino.getFunction(name).run(_arduino, functionHead);
 		return null;
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
index 25171c6eec23ce7ddd4659b92320fbdfb3046f51..c859444d310725b3d64b7d91caffca30c2121a08 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
@@ -16,31 +16,25 @@ import tec.letsgoing.ardublock.simulator.simcode.SimCode;
  *
  */
 public class SimCodeFunction extends SimCode {
-	// FIXME Jede Variable ist "lokal" = dem nächst höheren Funktionsaufruf
-	// zugeordnet, während Ardublock global ist.
-	// FIXME Auch machen IF und While keine neuen Stacks auf sondern schieben Ihre
-	// Variabeln auch in den "Loop" Block
 	private String name;
 	private Vector<SimCode> codeBlocks = new Vector<SimCode>();
-	private Vector<Variable> vars = new Vector<Variable>();
-	private boolean isMain = false;
-	private Arduino arduino;
-	private SimCodeFunction prevStack=null;
+
+
 
 	public SimCodeFunction(String _name, Vector<SimCode> vec) {
 		name = _name;
 		codeBlocks = vec;
 	}
 
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		if (functionHead == null) {
-			isMain = true;
+			super.isMain = true;
 		} else {
-			prevStack=functionHead;
+			super.prevStack=functionHead;
 		}
 		
-		this.arduino = _arduino;
-		vars = new Vector<Variable>();
+		super.arduino = _arduino;
+		super.vars = new Vector<Variable>();
 		for (SimCode code : codeBlocks) {
 			code.run(_arduino, this);
 		}
@@ -51,45 +45,7 @@ public class SimCodeFunction extends SimCode {
 		return name;
 	}
 
-	public void createVariable(String _name, SimCode _value) {
-		if (!isMain) {
-			vars.add(new Variable(_name));
-			vars.lastElement().setValue(_value);
-		} else {
-			arduino.createVariable(_name, _value);
-		}
-	}
-
-	public boolean setVariable(String _name, SimCode _value) {
-		for (Variable var : vars) {
-			if (var.getName().equals(_name)) {
-				var.setValue(_value);
-				return true;
-			}
-		}
-		if (prevStack!=null) {
-		if(prevStack.setVariable(_name, _value)) 
-			return true;
-		}
-		if (arduino.setVariable(_name, _value))
-			return true;
-
-		return false;
-	}
-
-	public SimCode readVariable(String _name) {
-
-		for (Variable var : vars) {
-			if (var.getName().equals(_name)) {
-				return var.getValue();
-			}
-		}
-		if (prevStack!=null) {
-			return prevStack.readVariable(_name);
-		}
-		return arduino.readVariable(_name);
-
-	}
+	
 
 	@Override
 	public String toString() {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
index 27ba239f80cdedca4c96774db214a4ce07efb3ce..13aa62a64ef92ad04711bfdad848dfd7b534fdc7 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
@@ -22,7 +22,7 @@ public class CodeAnalogRead extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		int ans = _arduino.analogRead(pin.run(_arduino, functionHead).getValue());
 		return new SimTypeInt(ans);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
index 974f531c67b5c5e6b5d1632a0aedc18311f935cc..7ded6d09be33bc536455d584af038663be74b1ed 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
@@ -24,7 +24,7 @@ public class CodeAnalogWrite extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		_arduino.analogWrite(pin.run(_arduino, functionHead).getValue(), value.run(_arduino, functionHead).getValue());
 		return null;
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
index 9d291e000fde9f55515c06f348ccba141b1f3369..2da3999c52f4da3c7862683e66da9679c0a890cc 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
@@ -23,7 +23,7 @@ public class CodeDigitalRead extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		boolean ans = _arduino.digitalRead(pin.run(_arduino, functionHead).getValue());
 		return new SimTypeBool(ans);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
index 989930cef0140b030b6ebcc70173496b33ef9669..af4acbfa73c183fb255d7fe1717b54573b095f20 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
@@ -24,7 +24,7 @@ public class CodeDigitalWrite extends SimCode {
 		value = _value;
 	}
 
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		_arduino.digitalWrite((int) pin.run(_arduino, functionHead).getValue(),
 				value.run(_arduino, functionHead).getValue());
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java
index 9af25c836a0441289bf4b897c1aff93ed79d802a..540221af9b98d02a8d035656b516247885372e82 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java
@@ -24,7 +24,7 @@ public class CodeAND extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() && b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java
index a315e413fae160a1ea260641e757372fd507c2f0..c2fcfb5696a4a932510124d7cb7b05d4d3037d8f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java
@@ -24,7 +24,7 @@ public class CodeBoolEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() == b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java
index 13348356f1cddda4aba8671eedf9622118ea82ce..f962acefee2241a5452f542eedd8006e6b6e6d36 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java
@@ -24,7 +24,7 @@ public class CodeBoolUnequal extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() != b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java
index 76df1b61c62907029b9f5aff0e4eb1acc17a73b5..03d880fded7df3a61fa38a23df02699972eaa267 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java
@@ -25,7 +25,7 @@ public class CodeIntBigger extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() > b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java
index fcaf93e3c0a59ce946209d23d614b3d1e4f05c88..31e6aab628e8b9c9462aa76d1967119f67c546ed 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java
@@ -25,7 +25,7 @@ public class CodeIntBiggerEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() >= b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java
index fde07fd1b1c0bb14fc9b42f4dc769e09670a18c7..b5618de90605462a3f3cf71a4483cf331c2d2133 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java
@@ -25,7 +25,7 @@ public class CodeIntEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() == b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java
index 3ed785105eca05632074d59b9d2da04f3b11d32c..d3c833dd2f2146210f06af0f865adeb2e90bb83d 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java
@@ -25,7 +25,7 @@ public class CodeIntSmaller extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() < b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java
index 802586476c24af9ca567d193ae47835b39ea0805..5247e7a3376e77970d79dc174b18894db960e401 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java
@@ -25,7 +25,7 @@ public class CodeIntSmallerEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() <= b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java
index c9ce10ccebac1f1ed513dd3a9036bfd95aecac4d..18a0c4d1919f474c02c63dfab13d5768dc0f1534 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java
@@ -25,7 +25,7 @@ public class CodeIntUnequal extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() != b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java
index ed0629abec81f301fd824b07d669a81620a4c4c9..d76be9d7544c2fe2fe2685db2e2e46d56a3ed2ce 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java
@@ -22,7 +22,7 @@ public class CodeNOT extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (!b1.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java
index 68d856885aad50bb4582944b017e501c269fbfd9..e5eb077b052324419ccb3d2e8bdba57fa6d3dd1b 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java
@@ -24,7 +24,7 @@ public class CodeOR extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() || b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java
index a3503632911badf39ce56fd1cef49af84e11ee5b..79fd105f3424bb09c1b2bd2392147a87c3acf7be 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java
@@ -25,7 +25,7 @@ public class CodeStringEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).toString().equals(b2.run(_arduino, functionHead).toString())) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java
index d74a969a24539e5169e30b319dc790b1e5620f56..9b8b331f78e8f94f0f14135da5c6bd93541b78a3 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java
@@ -25,7 +25,7 @@ public class CodeStringUnequal extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (!b1.run(_arduino, functionHead).toString().equals(b2.run(_arduino, functionHead).toString())) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java
index 3ebb920e81f0a0e221df04936ae88453412e3d48..38252366491d4991e80545cac6e82b6ee2c88947 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java
@@ -22,7 +22,7 @@ public class CodeAbs extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(Math.abs(value.run(_arduino, functionHead).getValue()));
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java
index 42eb37c6f81865aaafae4b459166773966b546bb..c3496b0f6aee9b81b1716bc4dd7cf81a304232d9 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java
@@ -24,7 +24,7 @@ public class CodeAdd extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() + block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java
index 6d097330921b766cae6995d0902dfa137b2f02f3..56d8ae0c7c073066246b14a4f870faa146031439 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java
@@ -24,7 +24,7 @@ public class CodeDivison extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() / block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java
index 9ab9220c6267b1c23aa0a581081730d19852eb6e..89b7cf26922c16b8799189484480f432609bc056 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java
@@ -26,7 +26,7 @@ public class CodeLimit extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		int v = value.run(_arduino, functionHead).getValue();
 		int low = lowerLimit.run(_arduino, functionHead).getValue();
 		int high = upperLimit.run(_arduino, functionHead).getValue();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java
index 2142d69a448fa0c874b22b6a012471de0e74ee3b..7ba4cc466fc32122c19534a29be6f5e8d92e2e42 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java
@@ -38,7 +38,7 @@ public class CodeMap extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		float v = value.run(_arduino, functionHead).getValue();
 		float fL = fromLow.run(_arduino, functionHead).getValue();
 		float fH = fromHigh.run(_arduino, functionHead).getValue();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java
index be723a4f2c6924371f7ed36b7d7d1b45d4f92946..8268abdb6e29795491a2ee57681e23d38bee366a 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java
@@ -23,7 +23,7 @@ public class CodeMap10to8 extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(value.run(_arduino, functionHead).getValue() / 4);
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java
index 66e257de58e5870348ae05e6673b59716698c6e9..65a161fad8ae6eb540f2cb34902fa8083f582d65 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java
@@ -24,7 +24,7 @@ public class CodeMax extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(
 				Math.max(block1.run(_arduino, functionHead).getValue(), block2.run(_arduino, functionHead).getValue()));
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java
index 5a62b0b87b6f1537e174c3f7985811f57a2de038..163cfc80499da55da977e6845e6491c0b77d349e 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java
@@ -24,7 +24,7 @@ public class CodeMin extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(
 				Math.min(block1.run(_arduino, functionHead).getValue(), block2.run(_arduino, functionHead).getValue()));
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java
index 3e75427040de4952265a932793c917a19d8e5ba1..71cc36b216603a7d26f231193587e2c28e1b05c1 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java
@@ -24,7 +24,7 @@ public class CodeMinus extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() - block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java
index 458f6ae23e3796aa421ead06389ae98c1626dedb..34606a807c20fe2617778a8f69887945ca071a05 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java
@@ -24,7 +24,7 @@ public class CodeModulo extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() % block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java
index b3645135faa939a6106c5f5714f2088da98d3b05..bca6e9189317f51ec7fe21395d6c6ae5ea1814d0 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java
@@ -24,7 +24,7 @@ public class CodeProduct extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() * block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java
index 592ca7000c079655a09b32e661ce707812e1e4dc..3ad1a33eacddd5c87798bc7549b93b64eeec14ba 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java
@@ -22,7 +22,7 @@ public class CodeRandMax extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		int randMax = max.run(_arduino, functionHead).getValue();
 		return new SimTypeInt((int) Math.floor(Math.random() * randMax));
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java
index 9603fae6f9391615b8cb35e4c8ab50c0efa95f47..dd491dac90c604ce02328129928ecaaa7cc83aeb 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java
@@ -24,7 +24,7 @@ public class CodeRandMinMax extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		int randMax = max.run(_arduino, functionHead).getValue();
 		int randMin = min.run(_arduino, functionHead).getValue();
 		return new SimTypeInt((int) Math.floor(Math.random() * (randMax - randMin)) + randMin);
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java
index be35918ca97934a65a7e6f7091d630d478942213..add41077fd46f0b299f7b1cc07b30f76927d93a0 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java
@@ -25,7 +25,7 @@ public class CodeBoolCreate extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		functionHead.createVariable(var.run(_arduino, functionHead).toString(), value.run(_arduino, functionHead));
 		return null;
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java
index d3813b8efeff5d2c805613f16024c0df8aa49d66..9f6decd49702771632e1685700c14e3cea7b5221 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java
@@ -23,9 +23,7 @@ public class CodeBoolGet extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
-		// FIXME Für alle Get und Set müssen die oberligenenden "Stackschichten"
-		// berücksichtigt werden.
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		return (SimTypeBool) functionHead.readVariable(var.run(_arduino, functionHead).toString());
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java
index af5adf083841b2ea1611c49d81b2162ce6a92f0b..c104567a58ee8125e43123787a61d6054c99c46a 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java
@@ -25,7 +25,7 @@ public class CodeBoolSet extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		// Wenn die Variable nicht vorhanden ist, so erzeuge Sie.
 		if (!functionHead.setVariable(var.run(_arduino, functionHead).toString(),
 				new SimTypeBool(value.run(_arduino, functionHead).getValue()))) {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
index d916ec78b9943093fe4da553a2bcb0f002c2a4b5..39fd8ca204ab760cd03804125ab8fb073a520928 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
@@ -25,7 +25,7 @@ public class CodeIntCreate extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		functionHead.createVariable(var.run(_arduino, functionHead).toString(), value.run(_arduino, functionHead));
 		return null;
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
index 535790465dda48f5425333dc609fcafcc8b0aac3..839995128cceb731187664cef051ecc3d6365f42 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
@@ -23,7 +23,7 @@ public class CodeIntGet extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return (SimTypeInt) functionHead.readVariable(var.run(_arduino, functionHead).toString());
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java
index 828da1464671bea5867de621ea0847cac758a4ff..ab6ffc03f66c8c58b8982dc5d65e9eb9b7ea8d5b 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java
@@ -25,7 +25,7 @@ public class CodeIntSet extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		if (!functionHead.setVariable(var.run(_arduino, functionHead).toString(),
 				new SimTypeInt(value.run(_arduino, functionHead).getValue()))) {
 			functionHead.createVariable(var.run(_arduino, functionHead).toString(), value.run(_arduino, functionHead));
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
index e59f63368a139bc8fda7ed95436ec2645ae216b0..04e93a413884f7a5130903f84f0aa60f22dbb37f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
@@ -17,7 +17,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 public class CodeMillis extends SimCode {
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(_arduino.getMillis());
 	}