diff --git a/src/main/java/com/ardublock/ui/listener/HelpButtonListener.java b/src/main/java/com/ardublock/ui/listener/HelpButtonListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ffdbc05b1fe61a23e363aa6f0a261551e6a6394
--- /dev/null
+++ b/src/main/java/com/ardublock/ui/listener/HelpButtonListener.java
@@ -0,0 +1,162 @@
+package com.ardublock.ui.listener;
+
+import java.awt.Desktop;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ResourceBundle;
+
+import javax.swing.ImageIcon;
+import javax.swing.JOptionPane;
+
+import com.ardublock.ui.OpenblocksFrame;
+
+import tec.letsgoing.ardublock.simulator.view.GUI;
+
+public class HelpButtonListener implements ActionListener
+{
+	private OpenblocksFrame openBlocksFrame;
+	private ResourceBundle uiMessageBundle;
+	
+	public HelpButtonListener(OpenblocksFrame obFrame)
+	{
+		this.openBlocksFrame=obFrame;
+		uiMessageBundle = ResourceBundle.getBundle("com/ardublock/block/ardublock");
+		
+	}
+	
+	@SuppressWarnings("unused")
+	public void actionPerformed(ActionEvent e) {
+		File cssFile   = null;
+		File helpFile  = null;
+		File imageFile = null;
+		File logoFile  = null;
+    	
+		//TODO: add css
+		String cssResource   ="/com/ardublock/reference/_seitenformatierung.css";
+    	String helpResource  ="/com/ardublock/reference/help.html";
+    	String logoResource  ="/com/ardublock/reference/_Logo_LGI_page.png";
+    	String imageResource ="/com/ardublock/reference/abs.png";
+    	String tempPath = "";
+	
+		//get current .jar path for temp files
+    	try {
+			tempPath = new File(URLDecoder.decode(getClass().getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8")).getParentFile().getPath();
+		} catch (UnsupportedEncodingException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		}
+    	//copy css File to tmp files
+        try {
+            InputStream input = getClass().getResourceAsStream(cssResource);
+        	if(input != null) {
+	            cssFile = new File(tempPath +"/"+ "_seitenformatierung.css");
+	            OutputStream out = new FileOutputStream(cssFile);
+	            int read;
+	            byte[] bytes = new byte[1024];
+	    	        while ((read = input.read(bytes)) != -1) {
+	   	            out.write(bytes, 0, read);
+	   	        }
+	   	        out.close();
+	   	        cssFile.deleteOnExit();
+        	} else {
+        		//TODO: use resources
+        		System.out.println("Sorry, css stylesheet was not found in reference.");
+        		//TODO: open 404-page
+        		//!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        	}
+   	    } catch (IOException ex) {
+   	        ex.printStackTrace();
+   	    }
+    	
+    	//copy help File to tmp files
+        try {
+            InputStream input = getClass().getResourceAsStream(helpResource);
+        	if(input != null) {
+	            helpFile = new File(tempPath +"/"+ "help.html");
+	            OutputStream out = new FileOutputStream(helpFile);
+	            int read;
+	            byte[] bytes = new byte[1024];
+	    	        while ((read = input.read(bytes)) != -1) {
+	   	            out.write(bytes, 0, read);
+	   	        }
+	   	        out.close();
+	   	        helpFile.deleteOnExit();
+        	} else {
+        		//TODO: use resources
+        		System.out.println("Sorry, help file was not found in reference.");
+        		//TODO: open 404-page
+        		//!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+        	}
+   	    } catch (IOException ex) {
+   	        ex.printStackTrace();
+   	    }
+        
+      //copy logo to tmp files
+   	    try {
+   	        InputStream input = getClass().getResourceAsStream(logoResource);
+	   	     if(input != null) {
+	   	        logoFile = new File(tempPath +"/_Logo_LGI_page.png");
+	   	        OutputStream out = new FileOutputStream(logoFile);
+	   	        int read;
+	   	        byte[] bytes = new byte[10000];
+	    	        while ((read = input.read(bytes)) != -1) {
+	   	            out.write(bytes, 0, read);
+	   	        }
+	   	        out.close();
+	   	     logoFile.deleteOnExit();
+	   	     } else {
+	        		//TODO: use resources
+	        		System.out.println("Sorry, logo image was not found.");
+	        	}
+   	    } catch (IOException ex) {
+   	        ex.printStackTrace();
+   	    }
+   	    
+   	//copy block-image to tmp files
+   	    try {
+   	        InputStream input = getClass().getResourceAsStream(imageResource);
+	   	     if(input != null) {
+	   	        imageFile = new File(tempPath +"/help.png");
+	   	        OutputStream out = new FileOutputStream(imageFile);
+	   	        int read;
+	   	        byte[] bytes = new byte[10000];
+	    	        while ((read = input.read(bytes)) != -1) {
+	   	            out.write(bytes, 0, read);
+	   	        }
+	   	        out.close();
+	   	        imageFile.deleteOnExit();
+	   	     } else {
+	        		//TODO: use resources
+	   	    	System.out.println("Sorry, image for help was not found in reference.");
+	        	}
+   	    } catch (IOException ex) {
+   	        ex.printStackTrace();
+   	    }
+        
+      //open file in standard browser
+    	if (helpFile != null && !helpFile.exists() && cssFile != null && !cssFile.exists() && imageFile != null && !imageFile.exists() && !logoFile.exists() ) {
+    	    throw new RuntimeException("Error: Resource not found!");
+    	}else {    	
+	    	try {
+				Desktop.getDesktop().browse(helpFile.toURI());
+			} catch (IOException e1) {
+				// TODO Auto-generated catch block
+				//e.printStackTrace();
+			} catch (NullPointerException e2) {
+				// TODO Auto-generated catch block
+				//e.printStackTrace();
+			}
+    	}
+		
+	}
+	
+
+
+}
diff --git a/src/main/webapp/com/ardublock/reference/help.html b/src/main/webapp/com/ardublock/reference/help.html
new file mode 100644
index 0000000000000000000000000000000000000000..a0ab07b6e40ecd68ed64a89fbce9712ff03910f3
--- /dev/null
+++ b/src/main/webapp/com/ardublock/reference/help.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html>
+
+<link rel="stylesheet" href="_seitenformatierung.css">
+
+<body style="margin: 0px;">
+
+<div style="border: #284a66; border-style: solid; border-width: 5px;">
+    <nav>
+    <li id="beschreibung">Hilfe</li>
+    <div style="border: 2px, solid; margin-left: 14px;"><li> <a target="_blank, _tab" href="https://letsgoing.org/"><img id="letsgoing_logo" src="_Logo_LGI_page.png"></a> </li></div>
+    </nav>
+</div>
+
+<div>
+    <section>
+    <div id="ueberschrift">
+        <p>Hilfe</p>
+        <h1 style="font-size: 220%;">abs</h1>
+    </div>
+    <div>
+        <div>
+           <figure>
+            <img id="block_bild" src = "help.png" alt="help"></img>
+            <figcaption id="caption"></figcaption>
+            </figure> 
+        </div>
+    </div>
+    </section>
+</div>
+
+<article>
+    <div>
+        <h2 class="unterueberschrift" id="Allgemeines">Allgemeines</h2>
+        <p>
+            ArduBlock BlaBla
+        </p>
+        <h2 class="unterueberschrift" id="Funktionen">Funktionen</h2>
+        <p>
+           Der Betrag einer Zahl ist der "Wert" der Zahl ohne die Berücksichtigung des Vorzeichens. 
+        </p>
+        <h2 class="unterueberschrift" id="Block-Arten">Block-Arten</h2>
+        <p>
+            Im Code kann der <code>abs</code> Block mit dem Befehl (<code>abs()</code>) realisiert werden. 
+            Wobei zwischen die Klammern hier die entsprechende Größe eingefügt wird, auf die der Befehl angewendet werden soll. 
+            <br>
+            <b>Beispiel:</b> Es soll der Betrag der Variable <code>var</code> im seriellen Monitor ausgegeben werden. 
+            <br><br>
+            In ArduBlock: 
+            <br><br>
+            <img src="help.png" alt="hilfe">
+            <br><br>
+            Im Code: 
+            <br><br>
+            <code> 
+                var_betrag = abs( var ); <br>
+                Serial.print("Der Betrag der Variable var ist: "); <br>
+                Serial.print(var_betrag ); <br>
+            </code>
+        <p>
+    </div>
+    
+</article>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/webapp/com/ardublock/reference/simHelp.html b/src/main/webapp/com/ardublock/reference/simHelp.html
new file mode 100644
index 0000000000000000000000000000000000000000..66e6f11fa246452f83ddaa19f5106fd2df8326d8
--- /dev/null
+++ b/src/main/webapp/com/ardublock/reference/simHelp.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html>
+
+<link rel="stylesheet" href="_seitenformatierung.css">
+
+<body style="margin: 0px;">
+
+<div style="border: #284a66; border-style: solid; border-width: 5px;">
+    <nav>
+    <li id="beschreibung">Hilfe</li>
+    <div style="border: 2px, solid; margin-left: 14px;"><li> <a target="_blank, _tab" href="https://letsgoing.org/"><img id="letsgoing_logo" src="_Logo_LGI_page.png"></a> </li></div>
+    </nav>
+</div>
+
+<div>
+    <section>
+    <div id="ueberschrift">
+        <p>Hilfe zum Simulator</p>
+        <h1 style="font-size: 220%;">Simulator</h1>
+    </div>
+    <div>
+    </div>
+    </section>
+</div>
+
+<article>
+    <div>
+        <h2 class="unterueberschrift" id="Allgemeines">Allgemeines</h2>
+        <p>
+            Der Simulator wird über die <b>Blockset "Sim" aktiviert</b>. 
+	    Wird jetzt ein Programm hochgeladen, startet der Simulator in einem neuen Fenster. 
+            Gleichzeitig wird der Text-basierte Code erzeugt und in der Arduino IDE angezeigt (nicht hochgeladen).</br></br>
+            Der Simulator bietet folgende Komponenten:
+            <ul>
+              <li class="list">Arduino Uno</li>
+              <li class="list">RGB-LED </li>
+              <li class="list">3 Taster </li>
+              <li class="list">Potentiometer </li>
+            </ul>
+            Die Module sind derzeit noch fest mit dem Arduino Uno "verdrahtet".
+        </p>
+        
+        <h2 class="unterueberschrift" id="Übersicht">Übersicht</h2>
+        <p>
+            <img src="simHelp.png" alt="hilfe">   
+        </p>
+        
+        <h2 class="unterueberschrift" id="Funktionen">Funktionen</h2>
+ 	<p>
+        <h3>Arduino Uno</h3>
+	Die Simulation des Arduino-Boards bietet folgende Interaktionen:
+        <ul>
+           <li>Onboard-LED - ansteuerbar über Pin 13</li>
+           <li>Reset-Taster - drücken startet das zuletzt hochgeladene Programm neu</li>
+        </ul>
+        
+        <h3>RGB-LED</h3>
+	Die Simulation letsgoING-Moduls mit der RGB-LED kann über folgende Pins angesteuert werden:
+        <ul>
+           <li>Rot - Pin11</li>
+           <li>Grün - Pin9</li>
+           <li>Blau - Pin10</li>
+        </ul>
+        
+        <h3>Taster</h3>
+        Die Simulation letsgoING-Moduls mit drei Tastern kann über folgende Pins eingelesen werden:
+        <ul>
+           <li>Taster S1 - Pin4</li>
+           <li>Taster S2 - Pin3</li>
+           <li>Taster S3 - Pin2</li>
+        </ul>
+        Mit der <b>linken Maustaste</b> wird der Taster <b>normal</b> betätigt.</br>
+	Mit der <b>rechten Maustaste</b> (oder "Zwei-Finger-Klick bei Mac) werden die Taster <b>eingerastet</b>. 
+	So kann man auch mehrere Taster gleichzeitig bedienen.
+	
+	<h3>Potentiometer</h3>
+        Die Simulation letsgoING-Moduls mit dem Potentiometer kann über folgenden Pin eingelesen werden:
+        <ul>
+           <li>Potentiometer - Pin A0</li>
+        </ul>
+        Der Wert des Potentiometers kann über den Schieberegler oder mit dem Mausrad (Zeiger über dem Schieberegler) verstellt werden.
+        
+        <h3>SerialMonitor</h3>
+        Die Simulation des SerialMonitor bietet folgende Funktionen:
+        <ul>
+           <li>Serial Output Fenster - Ausgabe der Informationen (Serial.print)</li>
+           <li>Clear Serial Output - Löschen der bisherigen Ausgabe</li>
+           <li>Autoscroll - Automatisches mitscrollen de-/aktivieren</li>
+        </ul>
+        Der Wert des Potentiometers kann über den Schieberegler oder mit dem Mausrad (Zeiger über dem Schieberegler) verstellt werden.
+        </p>
+        
+    </div>
+    
+</article>
+
+</body>
+</html>
diff --git a/src/main/webapp/com/ardublock/reference/simHelp.png b/src/main/webapp/com/ardublock/reference/simHelp.png
new file mode 100644
index 0000000000000000000000000000000000000000..54ec5a57a0f4acdd700367bf56d3b9e2f465b43f
Binary files /dev/null and b/src/main/webapp/com/ardublock/reference/simHelp.png differ