diff --git a/UML.dia b/UML.dia
index f9f2622288ad09c5e631c423b1693e4af6b500fd..8ff568e509c13da6e3fdfcacfb332b5fcab30a2c 100644
Binary files a/UML.dia and b/UML.dia differ
diff --git a/src/tec/letsgoing/ardublock/simulator/Simulator.java b/src/tec/letsgoing/ardublock/simulator/Simulator.java
index ca867aa62dfa7f69c419b69be64dd581f67d3d37..9185bb95cdb91211b67439e7797f54ff5d874b5a 100644
--- a/src/tec/letsgoing/ardublock/simulator/Simulator.java
+++ b/src/tec/letsgoing/ardublock/simulator/Simulator.java
@@ -27,12 +27,16 @@ import tec.letsgoing.ardublock.simulator.simcode.vars.CodeMillis;
 import tec.letsgoing.ardublock.simulator.view.GUI;
 
 /**
- * @author Lucas
+ * Diese Klasse verwaltet alle Elemente des Simulators. Sie ist geschrieben als Singelton.
+ * 
  * 
  * Pinmapping: 
  * RGB: 9,10,11
  * Poti: A5
  * Button: 3,4,5
+ * @author Lucas
+ * 
+ * 
  */
 
 public class Simulator implements Runnable, ActionListener {
@@ -43,10 +47,8 @@ public class Simulator implements Runnable, ActionListener {
 	private Thread simuThread;
 
 	private Vector<SimCodeFunction> functionsCode = new Vector<SimCodeFunction>();
-
-	//changed to public by Anian
-	//private Simulator() {
-	public Simulator() {
+	
+	private Simulator() {
 		createSubClasses();
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
index 1970fe8693137086ca87c67e858896cecdf7d63d..9956dd5169e23b7cef2817db0916d17ca04fd02e 100644
--- a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
+++ b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java
@@ -11,7 +11,10 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 import tec.letsgoing.ardublock.simulator.view.GUI;
 
 /**
+ * Diese Klasse hält die Daten eines "virtuellen" Arduinos und verwaltet die Hardware
  * @author Lucas
+ * 
+ *
  *
  */
 public class Arduino {
diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java b/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java
index d1f0662813206c88324a87714e50cc33d8e1d219..c24d32a23eb568c49d5d83dc8cd0d2095375dbc8 100644
--- a/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java
+++ b/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java
@@ -7,7 +7,10 @@ import java.util.Observable;
 import java.util.Observer;
 
 /**
+ * Diese Klasse ist für einen Pin auf dem Arduino
  * @author Lucas
+ * 
+ * 
  *
  */
 public class Pin extends Observable {
diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java b/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java
index 109fd7f8aa9a4308ede2a92ad36e445e8b93e788..22fdba87f6c770dc7152b586fde7629af8da3c4f 100644
--- a/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java
+++ b/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java
@@ -6,7 +6,10 @@ package tec.letsgoing.ardublock.simulator.arduino;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 
 /**
+ * Diese Klasse speichert eine Variable und stellt diese über Operationen zur Verfügung
  * @author Lucas
+ * 
+ * 
  *
  */
 public class Variable {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
index c3064373464074f132ed78fad44e5b1f9627b241..04d81c1d19e48c888014cc4fcb95d49da7bad30e 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
@@ -8,6 +8,9 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
+ * 
+ * Jedes Codeelement erbt von dieser dieser Klasse.
+ * Durch die run()-Methode kann jedes Code-Objekt ausgeführt werden.
  *
  */
 public abstract class SimCode {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
index b1c7c2e643b2a7edcc9a7a4e143c2e99d1d4af31..2ac24cd29d1b758c4136cfe11a91e76ddfc0696f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
@@ -10,6 +10,8 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
+ * 
+ * Verbinde einen beliebigen Block mit einer Zeichenkette
  *
  */
 public class CodeConnectString extends SimCode {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
index 82aa58a268f83105d6f188b8021646ba1554828a..823fc3cf8eccb8ca612b31ca7229437d3925c8ac 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
@@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
+ * Sende Nachricht via Serial
  *
  */
 public class CodeSerialPrint extends SimCode {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
index d64ddf2320ef05619d00dad0c2b8f6d79b3c2cdc..1a2a743a6b8e29d832c5fc3e13fce26415b16b9c 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
@@ -10,7 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Warte Millisekunden.
  */
 public class CodeDelay extends SimCode {
 	SimTypeInt codeBlock;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
index 200f52eebbdbfcc64b7dce28340e1bdd4f5eb015..a628aec4d6daa73cc7c2ef986cb8fa3fc9f09639 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
@@ -11,7 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Führe Befehle aus, falls "falls"-Block FALSCH (und evtl. "sonst falls"-Block) sind.
  */
 public class CodeElse extends CodeTypeIf {
 	private Vector<SimCode> codeBlocks;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
index 837d21e532f81d5c601c1d96dd814f84b1013af3..42bd5227310f0ef5e5d31cef500c54f865ac9dac 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
@@ -12,7 +12,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Führe die Befehle aus wenn falls-Block FALSCH ist und Bedingung WAHR ist.
  */
 public class CodeElseIf extends CodeTypeIf {
 	private CodeTypeIf follow;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
index 3a8ca8fce4ebb60d1c89d982fa69d50d2f06d1ee..59696167364d3184f4a998f150f2522e8a997b33 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
@@ -12,7 +12,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Wiederhole die Befehle x-mal.
  */
 public class CodeFor extends SimCode {
 	SimTypeInt count;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
index d441b28353426a5229910f7aeabf097f6e0e7d62..9d7b600bef6b25db521a17f0610e0216fa61216d 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
@@ -13,7 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Wiederhole die Befehle x-mal. Die Wiederholungen werden in der Variable gespeichert.
  */
 public class CodeForCount extends SimCode {
 	private SimTypeInt count;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
index 7ac50fe2b1c4595921681ffd594fe398592c182c..e604af38f63797c2057555d92f6e992134b513d1 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
@@ -13,6 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 /**
  * @author Lucas
  *
+ * Führe Befehle aus, wenn die Bedingung WAHR ist.
  */
 public class CodeIf extends CodeTypeIf {
 	private CodeTypeIf follow;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeTypeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeTypeIf.java
index 4efc4c54efedf80363fbabb8b5b2b5d0cbff1025..378b1d956d9d4528ba5b51bf2c76b79476575855 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeTypeIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeTypeIf.java
@@ -9,6 +9,8 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
+ * 
+ * Unterklasse für die If-Codeblöcke
  *
  */
 public abstract class CodeTypeIf extends SimCode {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
index 68db29ffd5487217c63fd02ef4d7a2600e967b16..3a1d4bfbaea51c217c8a1d4a01623330349738dc 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
@@ -12,7 +12,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Führe Befehle aus, solange die Bedingung WAHR ist.
  */
 public class CodeWhile extends SimCode {
 	SimTypeBool condition;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
index 6ca271762ced1e5d0e453d78c3fdca1f86f3447f..e9d7db62358fd8e7fee104d62308bab83e849885 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
@@ -13,7 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Befehle ausserhalb von mache werden nur alle x-Millisekunden ausgeführt\nDie Startzeit jedes Durchgangs wird in der Variable gespeichert
  */
 public class CodeWhileMillis extends SimCode {
 	private SimTypeInt duration;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
index 0179cbcc574ff0113ce752ce5bbedbb13f2fc8f2..90850f7bf72b780b33b7e3082915eed3281f0d58 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
@@ -9,7 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- * 
+ * Klasse für einen BooldatenTyp
  */
 public class SimTypeBool extends SimCode {
 	boolean value = false;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
index e1e89989f2a3dcda327f948378edbce75bd1636f..e70b4683f0f9888afa2117ff23ab74f46367142a 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
@@ -9,7 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ *	Klasse für einen Int-Datentyp
  */
 public class SimTypeInt extends SimCode {
 	private int value = 0;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
index 0dba4ae354b9fc0c2d715880fc544a370792241f..8d38b793e5ac383a20bdbe65f0ad9312b8b092ed 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
@@ -9,7 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Klasse für einen Zeichenketten Datentyp
  */
 public class SimTypeString extends SimCode {
 	private String content;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
index a64f5eca7e1b2462de8f37b6cc6670453222b06e..63c2189fa852e2ab720b8fe3cd3c2977fc56a0a9 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
@@ -8,7 +8,7 @@ import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 
 /**
  * @author Lucas
- *
+ * Führt das Unterprogramm mit dem Namen aus.
  */
 public class CodeExecuteFunction extends SimCode {
 	private String name;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
index 61859e1d7300613ff05d55d326d6fa8dc5007aa0..fe0aff06e7c104dcf8e7216a979fea64e6e73262 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
@@ -11,7 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 
 /**
  * @author Lucas
- *
+ * Erstellt ein Unterprogramm.
  */
 public class SimCodeFunction {
 	private String name;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
index 4b855a4fec79c7af8f15c98c005f53bfb3e538b8..1ccd9183397d0cecab01d2d9dcfae5af8b4eb570 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
@@ -9,7 +9,9 @@ import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
- * @author Lucas //TODO Block Beschreibung realtiv zu Ardublock
+ * Liest den analogen Wert vom Pin [0V=0;5V=1023]
+ * @author Lucas 
+ * 
  */
 public class CodeAnalogRead extends SimCode {
 	private SimTypeInt pin;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
index 8d6c35e4bb049d94a7fe6a2598d155e19138cc54..2fd74c2ca12405a663549e9cb02cd3630ea0a9c7 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
@@ -10,7 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * PWM-Ausgang Wert[0-255] zuweisen
  */
 public class CodeAnalogWrite extends SimCode {
 	private SimTypeInt pin;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
index 8edb168865328646a8ed09596542a6844fea5c1f..bbe6a2349fca4f1cfe321159f25d3e03a8656aa8 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
@@ -10,8 +10,9 @@ import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
+ * Liest den digitalen Wert des Pins ein [HIGH/LOW]
  * @author Lucas
- *
+ * 
  */
 public class CodeDigitalRead extends SimCode {
 	private SimTypeInt pin;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
index fa98aacd2be97f29b99ff871b22aed05be01fa9f..496cb224ff5545dc2c3bb3187021d531dec89e90 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
@@ -11,7 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
  * @author Lucas
- *
+ * Ausgang eines digitalen Ausgangs festlegen (HIGH/LOW)
  */
 public class CodeDigitalWrite extends SimCode {
 	SimTypeInt pin;
diff --git a/src/tec/letsgoing/ardublock/simulator/view/GUI.java b/src/tec/letsgoing/ardublock/simulator/view/GUI.java
index 4b560d312d6c7513464919f216fdb64e91936a4c..7bcd7f0bc3c9701729f5a84e2fc84e1c336ab5ed 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/GUI.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/GUI.java
@@ -3,11 +3,16 @@
  */
 package tec.letsgoing.ardublock.simulator.view;
 
+import java.awt.BasicStroke;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Stroke;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Vector;
@@ -33,6 +38,7 @@ import tec.letsgoing.ardublock.simulator.view.modules.Poti;
 import tec.letsgoing.ardublock.simulator.view.modules.RGB;
 
 /**
+ * Verwaltet die graphische Oberfläche.
  * @author Lucas
  *
  */
@@ -45,17 +51,32 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 
 	public GUI(Simulator simu) {
 		super("ArdubBlock Simulator");
-		// TODO Module geben Pin Positionen
 		modules[0] = new RGB(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM31_RGB_LED.png"))));
 		modules[1] = new Button(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM26_Taster.png"))),new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Taster_Off.png"))),new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Taster_On.png"))));
 		modules[2] = new Poti(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM24_Potentiometer.png"))));
-		modules[3] = new ArduinoUno(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/ArduinoUno.png"))));
-
+		modules[3] = new ArduinoUno(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/ArduinoUno.png"))),simu);
+		
 		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 		this.setResizable(false);
 		Container mainPane = this.getContentPane();
 
-		JPanel modulPanel = new JPanel(new BorderLayout());
+		JPanel modulPanel = new JPanel(new BorderLayout()) {
+			@Override 
+			public void paint(Graphics g) {
+				
+				super.paint(g);
+				
+				for (int i =-1 ; i<2;i++) {
+					g.setColor(Color.BLACK);
+					g.fillRect(i*294+261, 183, 60, 5);
+					g.setColor(Color.RED);
+					g.fillRect(i*294+261, 211, 60, 5);
+					
+				}
+				drawConnections(g);
+				
+			}
+		};
 		modulPanel.add(modules[0].getPane(), BorderLayout.WEST);
 		modulPanel.add(modules[1].getPane(), BorderLayout.CENTER);
 		modulPanel.add(modules[2].getPane(), BorderLayout.EAST);
@@ -65,7 +86,8 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 		mainPane.add(createControlPanel(simu), BorderLayout.LINE_END);
 		mainPane.add(createSerialLog(), BorderLayout.PAGE_END);
 		this.pack();
-		//this.setLocation(-1000, 0); Code to Run the Window on seconds screen
+		System.out.println(modules[2].getPane().getLocation());
+		//this.setLocation(-1300, 0); //FIXME Code to Run the Window on second screen
 		this.setVisible(true);
 
 	}
@@ -129,6 +151,24 @@ public class GUI extends JFrame implements Runnable, ActionListener {
 		panel.add(scrollPane, BorderLayout.PAGE_END);
 		return panel;
 	}
+	
+	private void drawConnections(Graphics g) {
+		int[] assignment= {11,10,9,5,4,3,19};
+		g.setColor(Color.ORANGE);
+		Vector<Point> pinArduino=modules[3].getPinPos();
+		Point posArduino=modules[3].getPosition();
+		int counter=0;
+		Stroke roundLine=new BasicStroke(5,BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+		for (int i=0;i<3;i++) {
+			Vector<Point> pos =modules[i].getPinPos();
+			for (Point p:pos) {
+				Graphics2D g2 = (Graphics2D) g;
+                g2.setStroke(roundLine);
+				g2.drawLine(p.x+modules[i].getPosition().x, p.y+modules[i].getPosition().y, pinArduino.get(assignment[counter]).x+posArduino.x, pinArduino.get(assignment[counter]).y+posArduino.y);
+				counter++;
+			}
+		}
+	}
 
 	public void run() {
 		while (!stopFlag) {
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java b/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
index cc8d31acd592768cd79d7e57065cf55d5598be4c..6c04cf9dd1fd859c6cd2343eca6a8de45071ad6e 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java
@@ -8,16 +8,23 @@ import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Image;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Vector;
 
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JLabel;
+import javax.swing.JToggleButton;
 
+import tec.letsgoing.ardublock.simulator.Simulator;
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 import tec.letsgoing.ardublock.simulator.view.GUI;
 
 /**
+ * Modul für einen Arduino Uno
  * @author Lucas
  *
  */
@@ -26,15 +33,16 @@ public class ArduinoUno extends Modul {
 	private boolean ledOn;
 	private int led13 = 0;
 
-	public ArduinoUno(ImageIcon _icon) {
-		
-		// TODO Arduino mittig anordnen
-		layerpane.setPreferredSize(new Dimension(587, 418));
+	public ArduinoUno(ImageIcon _icon,Simulator simu) {
+		int locx=100;
+		int locy=50;
+		layerpane.setPreferredSize(new Dimension(587+locx, 418+locy));//587,418
 		JLabel chiplabel = new JLabel();
 		ImageIcon chipIcon = _icon;
 		chipIcon = new ImageIcon(chipIcon.getImage().getScaledInstance(587, 418, Image.SCALE_SMOOTH));
 		chiplabel.setIcon(chipIcon);
 		chiplabel.setSize(587, 418);
+		chiplabel.setLocation(locx, locy);
 		layerpane.add(chiplabel, 0);
 
 		JLabel labelPower = new JLabel() {
@@ -50,7 +58,7 @@ public class ArduinoUno extends Modul {
 
 		};
 
-		labelPower.setLocation(504, 126);
+		labelPower.setLocation(504+locx, 126+locy);
 		labelPower.setSize(20, 20);
 		layerpane.add(labelPower, 0);
 
@@ -64,9 +72,25 @@ public class ArduinoUno extends Modul {
 
 		};
 
-		label13.setLocation(257, 89);
+		label13.setLocation(257+locx, 89+locy);
 		label13.setSize(20, 20);
 		layerpane.add(label13, 0);
+		
+		JButton button = new JButton();
+		button.setSize(70, 70);
+		button.setActionCommand("reset");
+		button.addActionListener(simu);
+		button.setOpaque(false);
+		button.setContentAreaFilled(false);
+		button.setBorderPainted(false);
+		
+		JLabel labelButton = new JLabel();
+		labelButton.add(button);
+		labelButton.setSize(60, 51);
+		labelButton.setLocation(64+locx, 1+locy);
+		layerpane.add(labelButton,0);
+		
+		calculatePinPos(locx,locy);
 
 	}
 
@@ -89,5 +113,35 @@ public class ArduinoUno extends Modul {
 		tmpPin.setObserver(this);
 		return true;
 	}
+	
+	private void calculatePinPos(int locx,int locy) {
+		Vector<Point> pins=new Vector<Point>();
+		int offset=0;
+		for (int i=15;i>1;i--) {
+			if (i<8)offset=-11;
+			pins.add(new Point(i*20+locx+246+offset,locy+19));
+		}
+		for (int i=0;i<6;i++) {
+			pins.add(new Point(i*20+locx+447,locy+397));
+		}
+		//Code to check the Pin Pos
+		/*JLabel label;
+		for (Point pin:pins) {
+			label= new JLabel() {
+				@Override
+				public void paintComponent(Graphics g) {
+					g.setColor(Color.RED);
+					g.fillRect(0, 0, 10, 10);
+				}
+
+			};
+
+			label.setLocation(pin.x,pin.y);
+			label.setSize(10, 10);
+			layerpane.add(label, 0);
+		}*/
+		this.setPinPos(pins);
+	}
+
 
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
index cd633187d659acd7817e6e42aa5780d0aba19508..4cebd9fbe95639d20d32e6270b7c8ca4db1fa847 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java
@@ -3,9 +3,14 @@
  */
 package tec.letsgoing.ardublock.simulator.view.modules;
 
+import java.awt.Color;
 import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Point;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.Vector;
+
 import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 import javax.swing.JToggleButton;
@@ -14,6 +19,7 @@ import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 
 /**
+ * Modul mit 3 Toogle Buttons
  * @author Lucas
  *
  */
@@ -64,7 +70,7 @@ public class Button extends Modul implements ActionListener {
 		layerpane.add(label1, 0);
 		layerpane.add(label2, 0);
 		layerpane.add(label3, 0);
-
+		calculatePinPos();
 	}
 
 	public void updateModul(Pin pin) {
@@ -109,5 +115,13 @@ public class Button extends Modul implements ActionListener {
 		lastState[pin] = value;
 		pins.get(pin).setValue(value);
 	}
+	
+	private void calculatePinPos() {
+		Vector<Point> pins=new Vector<Point>();
+		for (int i=0;i<3;i++) {
+			pins.add(new Point(i*30+117,235));
+		}
+		this.setPinPos(pins);
+	}
 
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
index 8a932b6e19a6a5d5598c7afe614f7873de2e4189..3522dc48ad8e9a85e0053c668b3ac279c78a12f4 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java
@@ -15,6 +15,7 @@ import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 
 /**
+ * Oberklasse für alle Module
  * @author Lucas
  *
  */
@@ -23,6 +24,7 @@ public abstract class Modul implements Observer  {
 	private Point position;
 	protected Vector<Pin> pins = new Vector<Pin>();
 	protected JLayeredPane layerpane = new JLayeredPane();
+	protected Vector<Point> pinPos=new Vector<Point>();
 
 	public void setState(boolean State) {
 		active = State;
@@ -37,7 +39,8 @@ public abstract class Modul implements Observer  {
 	}
 
 	public Point getPosition() {
-		return position;
+		//return position;
+		return layerpane.getLocation();
 	}
 
 	public void update(Observable Observable, Object arg1) {
@@ -55,6 +58,14 @@ public abstract class Modul implements Observer  {
 	public void addPin(Pin _pin) {
 		pins.add(_pin);
 	}
+	
+	public Vector<Point> getPinPos() {
+		return pinPos;
+	}
+	
+	public void setPinPos(Vector<Point> _pins) {
+		pinPos=_pins;
+	}
 
 	public JLayeredPane getPane() {
 		return layerpane;
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
index be3ad1e1594f6f40685880c749711d186753d6aa..7c9076426a1dcdec0e42eec216ff2a857035a275 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java
@@ -3,7 +3,15 @@
  */
 package tec.letsgoing.ardublock.simulator.view.modules;
 
+import java.awt.Color;
 import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
+import java.util.Hashtable;
+import java.util.Vector;
+
 import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
@@ -15,10 +23,11 @@ import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 
 /**
+ * Modul mit einem Potentiometer
  * @author Lucas
  *
  */
-public class Poti extends Modul implements  ChangeListener {
+public class Poti extends Modul implements  ChangeListener, MouseWheelListener {
 	int value = 0;
 	JSlider slider;
 
@@ -33,10 +42,19 @@ public class Poti extends Modul implements  ChangeListener {
 		slider.setMajorTickSpacing(256);
 		slider.setMinorTickSpacing(64);
 		slider.setPaintTicks(true);
+		
+		//Create the label table
+		Hashtable<Integer,JLabel> labelTable = new Hashtable<Integer,JLabel>();
+		labelTable.put( new Integer( 10 ), new JLabel("0 V") );
+		labelTable.put( new Integer( 512 ), new JLabel("2.5 V") );
+		labelTable.put( new Integer( 1023 ), new JLabel("5 V") );
+		slider.setLabelTable( labelTable );
+
 		slider.setPaintLabels(true);
 		slider.setPreferredSize(new Dimension(180,50));
 		slider.setOpaque(false);
 		slider.addChangeListener(this);
+		slider.addMouseWheelListener(this);
 		
 		JPanel sliderPanel=new JPanel();
 		sliderPanel.add(slider);
@@ -46,6 +64,9 @@ public class Poti extends Modul implements  ChangeListener {
 		layerpane.add(chiplabel, 0);
 		layerpane.add(sliderPanel,0);
 		
+		calculatePinPos();
+		
+		
 		
 	}
 
@@ -67,4 +88,23 @@ public class Poti extends Modul implements  ChangeListener {
 		pins.get(0).setValue(slider.getValue());
 		
 	}
+
+	@Override
+	public void mouseWheelMoved(MouseWheelEvent arg0) {
+		int notches = arg0.getWheelRotation();
+		if (notches > 0) {
+			slider.setValue(slider.getValue()+10);
+		} else {
+			slider.setValue(slider.getValue()-10);
+		}
+		
+		
+		
+	}
+	private void calculatePinPos() {
+		Vector<Point> pins=new Vector<Point>();
+		pins.add(new Point(30+117,235));
+		this.setPinPos(pins);
+	}
+	
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java b/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
index 104e87e87559a379f74eae67812ded31db852433..0c9257891aa3befeae13dd53ad56f20938170844 100644
--- a/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
+++ b/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java
@@ -7,6 +7,9 @@ import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
+import java.awt.Point;
+import java.util.Vector;
+
 import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 
@@ -14,6 +17,7 @@ import tec.letsgoing.ardublock.simulator.arduino.Arduino;
 import tec.letsgoing.ardublock.simulator.arduino.Pin;
 
 /**
+ * Modul mit einer RGB LED
  * @author Lucas
  *
  */
@@ -44,6 +48,8 @@ public class RGB extends Modul {
 		ledlabel.setLocation(107, 37);
 		ledlabel.setSize(200, 200);
 		layerpane.add(ledlabel, 0);
+		calculatePinPos();
+		
 	}
 
 	public void updateModul(Pin pin) {
@@ -71,5 +77,13 @@ public class RGB extends Modul {
 
 		return true;
 	}
+	
+	private void calculatePinPos() {
+		Vector<Point> pins=new Vector<Point>();
+		for (int i=0;i<3;i++) {
+			pins.add(new Point(i*30+117,235));
+		}
+		this.setPinPos(pins);
+	}
 
 }