diff --git a/hs_err_pid25585.log b/hs_err_pid25585.log
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/main/java/com/ardublock/Main.java b/src/main/java/com/ardublock/Main.java
index 938b2a23f55b066332910557fba592e668b9787a..2e9c717cfe44f4cf32a3e182d9c794a8288a5993 100644
--- a/src/main/java/com/ardublock/Main.java
+++ b/src/main/java/com/ardublock/Main.java
@@ -1,9 +1,11 @@
 package com.ardublock;
 
+import java.awt.Color;
 import java.awt.event.WindowEvent;
 import java.io.IOException;
 
 import javax.swing.JFrame;
+import javax.swing.UIManager;
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.xml.sax.SAXException;
diff --git a/src/main/java/com/ardublock/ui/OpenblocksFrame.java b/src/main/java/com/ardublock/ui/OpenblocksFrame.java
index 52d1e40802689365bb494bdc4f909bb20e22a10a..628afa83d7389e3586913609e60f910a721b67f5 100644
--- a/src/main/java/com/ardublock/ui/OpenblocksFrame.java
+++ b/src/main/java/com/ardublock/ui/OpenblocksFrame.java
@@ -8,6 +8,7 @@ import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.Font;
 import java.awt.Graphics2D;
+import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
@@ -21,20 +22,26 @@ import java.util.ResourceBundle;
 
 import javax.imageio.ImageIO;
 import javax.swing.Box;
+import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JComponent;
 import javax.swing.JFileChooser;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.KeyStroke;
 import javax.swing.ToolTipManager;
+import javax.swing.UIManager;
 import javax.swing.filechooser.FileFilter;
 import javax.swing.filechooser.FileNameExtensionFilter;
 
 import com.ardublock.core.Context;
 import com.ardublock.ui.listener.ArdublockWorkspaceListener;
+import com.ardublock.ui.listener.ButtonMouseListener;
 import com.ardublock.ui.listener.GenerateCodeButtonListener;
 import com.ardublock.ui.listener.CopyButtonListener;
 import com.ardublock.ui.listener.NewButtonListener;
@@ -56,6 +63,7 @@ import com.ardublock.ui.listener.ZoomOutButtonListener;
 import edu.mit.blocks.controller.WorkspaceController;
 import edu.mit.blocks.workspace.Workspace;
 //import edu.mit.blocks.workspace.ZoomSlider;
+import tec.letsgoing.ardublock.simulator.view.GUI;
 
 
 public class OpenblocksFrame extends JFrame
@@ -96,6 +104,7 @@ public class OpenblocksFrame extends JFrame
 
 	public OpenblocksFrame()
 	{
+		//UIManager.getLookAndFeelDefaults().put("Panel.background", new Color(40, 74, 102));
 		context = Context.getContext();
 		this.setTitle(makeFrameTitle());
 		this.setSize(new Dimension(WINDOW_SIZE_WIDTH, WINDOW_SIZE_HEIGHT));
@@ -111,6 +120,9 @@ public class OpenblocksFrame extends JFrame
 		fileChooser.setFileFilter(ffilter);
 		fileChooser.addChoosableFileFilter(ffilter);
 		
+		appPrefix = uiMessageBundle.getString("ardublock.ui.appprefix.standard");
+        setTitle(makeFrameTitle());
+        
 		initOpenBlocks();
 		
 	}
@@ -132,100 +144,258 @@ public class OpenblocksFrame extends JFrame
 		//display ToolTips for 10 seconds
 		ToolTipManager.sharedInstance().setDismissDelay(TOOLTIP_DISMISS_DELAY);	
 		
-		JPanel topPanel = new JPanel();
-		topPanel.setLayout(new FlowLayout());
 		
-		JButton newButton = new JButton(uiMessageBundle.getString("ardublock.ui.new"));
-		ActionListener newButtonListener = new NewButtonListener(this);	
-		newButton.addActionListener(newButtonListener);		
+		//NEW
+		//**********
+		ImageIcon newButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/new1.png")));
+		ImageIcon newButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/new2.png")));
+		ImageIcon newButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/new3.png")));
+		ButtonMouseListener newButtonMouseListener = new ButtonMouseListener(newButtonIcon, newButtonIconHovered, newButtonIconPressed);
+		
 		KeyStroke ctrlnKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK);
-		newButton.registerKeyboardAction(newButtonListener, ctrlnKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		ActionListener newButtonListener = new NewButtonListener(this);	
+		
+		JButton newButton = new JButton(newButtonIcon);
+		newButton.addMouseListener(newButtonMouseListener);
+		newButton.setMargin(new Insets(0, 0, 0, 0));
+		newButton.setContentAreaFilled(false);
+		newButton.setBorderPainted(false);
+		//JButton newButton = new JButton(uiMessageBundle.getString("ardublock.ui.new"));
+		newButton.addActionListener(newButtonListener);
 		newButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.new.tooltip"));
+		//newButton.registerKeyboardAction(newButtonListener, ctrlnKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		
+		JMenuItem newMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.new"));
+		newMenuItem.addActionListener(newButtonListener);
+		newMenuItem.registerKeyboardAction(newButtonListener, ctrlnKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		newMenuItem.setMnemonic(KeyEvent.VK_N);
+		newMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.new.tooltip"));
+		
+		
+		
+		//SAVE
+		//**********
+		ImageIcon saveButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/save1.png")));
+		ImageIcon saveButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/save2.png")));
+		ImageIcon saveButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/save3.png")));
+		ButtonMouseListener saveButtonMouseListener = new ButtonMouseListener(saveButtonIcon, saveButtonIconHovered, saveButtonIconPressed);
 		
-		JButton saveButton = new JButton(uiMessageBundle.getString("ardublock.ui.save"));
+		KeyStroke ctrlsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK);
 		ActionListener saveButtonListener = new SaveButtonListener(this);
+		
+		JButton saveButton = new JButton(saveButtonIcon);
+		saveButton.addMouseListener(saveButtonMouseListener);
+		saveButton.setMargin(new Insets(0, 0, 0, 0));
+		saveButton.setContentAreaFilled(false);
+		saveButton.setBorderPainted(false);
+		//JButton saveButton = new JButton(uiMessageBundle.getString("ardublock.ui.save"));
 		saveButton.addActionListener(saveButtonListener);
-		KeyStroke ctrlsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK);
-		saveButton.registerKeyboardAction(saveButtonListener, ctrlsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		//saveButton.registerKeyboardAction(saveButtonListener, ctrlsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 		saveButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.save.tooltip"));
 		
-		JButton saveAsButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveAs"));
-		ActionListener saveAsButtonListener = new SaveAsButtonListener(this);	
-		saveAsButton.addActionListener(saveAsButtonListener);
+		JMenuItem saveMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.save"));
+		saveMenuItem.addActionListener(saveButtonListener);
+		saveMenuItem.setMnemonic(KeyEvent.VK_S);
+		saveMenuItem.registerKeyboardAction(newButtonListener, ctrlsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		saveMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.save.tooltip"));
+		
+		
+		//SAVE AS
+		//**********
 		KeyStroke ctrlshiftsKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
-		saveAsButton.registerKeyboardAction(saveAsButtonListener, ctrlshiftsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
-		saveAsButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveAs.tooltip"));
+		ActionListener saveAsButtonListener = new SaveAsButtonListener(this);	
 		
-		JButton openButton = new JButton(uiMessageBundle.getString("ardublock.ui.load"));
+		//JButton saveAsButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveAs"));
+		//saveAsButton.addActionListener(saveAsButtonListener);
+		//saveAsButton.registerKeyboardAction(saveAsButtonListener, ctrlshiftsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		//saveAsButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveAs.tooltip"));
+		
+		JMenuItem saveAsMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.saveAs"));		
+		saveAsMenuItem.addActionListener(saveAsButtonListener);	
+		saveAsMenuItem.registerKeyboardAction(saveAsButtonListener, ctrlshiftsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		saveAsMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveAs.tooltip"));
+		
+		
+		//OPEN
+		//*********
+		ImageIcon openButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/open1.png")));
+		ImageIcon openButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/open2.png")));
+		ImageIcon openButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/open3.png")));
+		ButtonMouseListener openButtonMouseListener = new ButtonMouseListener(openButtonIcon, openButtonIconHovered, openButtonIconPressed);
+		
+		KeyStroke ctrloKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK);
 		ActionListener openButtonListener = new OpenButtonListener(this);
+		
+		JButton openButton = new JButton(openButtonIcon);
+		openButton.addMouseListener(openButtonMouseListener);
+		openButton.setMargin(new Insets(0, 0, 0, 0));
+		openButton.setContentAreaFilled(false);
+		openButton.setBorderPainted(false);
+		//JButton openButton = new JButton(uiMessageBundle.getString("ardublock.ui.load"));
 		openButton.addActionListener(openButtonListener);
-		KeyStroke ctrloKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK);
-		openButton.registerKeyboardAction(openButtonListener, ctrloKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		//openButton.registerKeyboardAction(openButtonListener, ctrloKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 		openButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.load.tooltip"));
 		
-		JButton generateButton = new JButton(uiMessageBundle.getString("ardublock.ui.upload"));
+		JMenuItem openMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.load"));
+		openMenuItem.addActionListener(openButtonListener);
+		openMenuItem.setMnemonic(KeyEvent.VK_O);
+		openMenuItem.registerKeyboardAction(openButtonListener, ctrloKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		openMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.load.tooltip"));
+		
+		
+		//GENERATE
+		//**********
+		ImageIcon generateButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/upload1.png")));
+		ImageIcon generateButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/upload2.png")));
+		ImageIcon generateButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/upload3.png")));
+		ButtonMouseListener generateButtonMouseListener = new ButtonMouseListener(generateButtonIcon, generateButtonIconHovered, generateButtonIconPressed);
+		
+		KeyStroke ctrluKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK);
 		ActionListener generateButtonListener = new GenerateCodeButtonListener(this, this, context);
+		
+		JButton generateButton = new JButton(generateButtonIcon);
+		generateButton.addMouseListener(generateButtonMouseListener);
+		generateButton.setMargin(new Insets(0, 0, 0, 0));
+		generateButton.setContentAreaFilled(false);
+		generateButton.setBorderPainted(false);
+		//JButton generateButton = new JButton(uiMessageBundle.getString("ardublock.ui.upload"));
 		generateButton.addActionListener(generateButtonListener);
-		KeyStroke ctrluKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK);
-		generateButton.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		//generateButton.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 		generateButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.upload.tooltip"));
 		
-		//added for simulator integration
-		JButton simulateButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulation"));
+		JMenuItem generateMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.upload"));
+		generateMenuItem.addActionListener(generateButtonListener);
+		generateMenuItem.setMnemonic(KeyEvent.VK_U);
+		generateMenuItem.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		generateMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.upload.tooltip"));
+		
+		//Simulate
+		//**********
+		ImageIcon simulateButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/uploadSim1.png")));
+		ImageIcon simulateButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/uploadSim2.png")));
+		ImageIcon simulateButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/uploadSim3.png")));
+		ButtonMouseListener simulateButtonMouseListener = new ButtonMouseListener(simulateButtonIcon, simulateButtonIconHovered, simulateButtonIconPressed);
+		
 		ActionListener simulateButtonListener = new SimulateCodeButtonListener(this, this, context);
+		
+		JButton simulateButton = new JButton(simulateButtonIcon);
+		simulateButton.addMouseListener(simulateButtonMouseListener);
+		simulateButton.setMargin(new Insets(0, 0, 0, 0));
+		simulateButton.setContentAreaFilled(false);
+		simulateButton.setBorderPainted(false);
+		//JButton simulateButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulation"));
 		simulateButton.addActionListener(simulateButtonListener);
 		simulateButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulation.tooltip"));
 		simulateButton.setVisible(false); //hide on startUp
 		
-		JButton simulatorHelpButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulatorHelp"));
+		JMenuItem simulateMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.simulation"));
+		simulateMenuItem.addActionListener(simulateButtonListener);
+		simulateMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulation.tooltip"));
+		simulateMenuItem.setVisible(false); //hide on startUp
+		
+		//SIMULATOR HELP
+		//**************
+		ImageIcon simulatorHelpButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/helpSim1.png")));
+		ImageIcon simulatorHelpButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/helpSim2.png")));
+		ImageIcon simulatorHelpButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/helpSim3.png")));
+		ButtonMouseListener simulatorHelpButtonMouseListener = new ButtonMouseListener(simulatorHelpButtonIcon, simulatorHelpButtonIconHovered, simulatorHelpButtonIconPressed);
+		
 		ActionListener simulatorHelpButtonListener = new SimulatorHelpButtonListener(this);
+		
+		JButton simulatorHelpButton = new JButton(simulatorHelpButtonIcon);
+		simulatorHelpButton.addMouseListener(simulatorHelpButtonMouseListener);
+		simulatorHelpButton.setMargin(new Insets(0, 0, 0, 0));
+		simulatorHelpButton.setContentAreaFilled(false);
+		simulatorHelpButton.setBorderPainted(false);
+		//JButton simulatorHelpButton = new JButton(uiMessageBundle.getString("ardublock.ui.simulatorHelp"));
 		simulatorHelpButton.addActionListener(simulatorHelpButtonListener);
 		simulatorHelpButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulatorHelp.tooltip"));
 		simulatorHelpButton.setVisible(false); //hide on startUp
 		
-		JButton serialMonitorButton = new JButton(uiMessageBundle.getString("ardublock.ui.serialMonitor"));
+		JMenuItem simulatorHelpMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.simulatorHelp"));
+		simulatorHelpMenuItem.addActionListener(simulatorHelpButtonListener);
+		simulatorHelpMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.simulatorHelp.tooltip"));
+		simulatorHelpMenuItem.setVisible(false); //hide on startUp
+		
+		
+		//SERIAL MONITOR
+		//**************
+		ImageIcon serialMonitorButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialMonitor1.png")));
+		ImageIcon serialMonitorButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialMonitor2.png")));
+		ImageIcon serialMonitorButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialMonitor3.png")));
+		ButtonMouseListener serialMonitorButtonMouseListener = new ButtonMouseListener(serialMonitorButtonIcon, serialMonitorButtonIconHovered, serialMonitorButtonIconPressed);
+		
+		KeyStroke ctrlmKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
 		ActionListener serialButtonListener = new ActionListener () {
 			public void actionPerformed(ActionEvent e) {
 				context.getEditor().handleSerial();
 			}
 		};
+		
+		JButton serialMonitorButton = new JButton(serialMonitorButtonIcon);
+		serialMonitorButton.addMouseListener(serialMonitorButtonMouseListener);
+		serialMonitorButton.setMargin(new Insets(0, 0, 0, 0));
+		serialMonitorButton.setContentAreaFilled(false);
+		serialMonitorButton.setBorderPainted(false);
+		//JButton serialMonitorButton = new JButton(uiMessageBundle.getString("ardublock.ui.serialMonitor"));
 		serialMonitorButton.addActionListener(serialButtonListener);
-		KeyStroke ctrlmKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
-		serialMonitorButton.registerKeyboardAction(serialButtonListener, ctrlmKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		//serialMonitorButton.registerKeyboardAction(serialButtonListener, ctrlmKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 		serialMonitorButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialMonitor.tooltip"));
 		
-		JButton serialPlotterButton = new JButton(uiMessageBundle.getString("ardublock.ui.serialPlotter"));
+		JMenuItem serialMonitorMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.serialMonitor"));
+		serialMonitorMenuItem.addActionListener(serialButtonListener);
+		serialMonitorMenuItem.registerKeyboardAction(serialButtonListener, ctrlmKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		serialMonitorMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialMonitor.tooltip"));
+		
+		
+		//SERIAL PLOTTER
+		//**************
+		ImageIcon serialPlotterButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialPlotter1.png")));
+		ImageIcon serialPlotterButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialPlotter2.png")));
+		ImageIcon serialPlotterButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/serialPlotter3.png")));
+		ButtonMouseListener serialPlotterButtonMouseListener = new ButtonMouseListener(serialPlotterButtonIcon, serialPlotterButtonIconHovered, serialPlotterButtonIconPressed);
+		
+		KeyStroke ctrlLKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
 		ActionListener serialPlotterButtonListener = new ActionListener () {
 			public void actionPerformed(ActionEvent e) {
 				context.getEditor().handlePlotter();
 			}
 		};
+		
+		JButton serialPlotterButton = new JButton(serialPlotterButtonIcon);
+		serialPlotterButton.addMouseListener(serialPlotterButtonMouseListener);
+		serialPlotterButton.setMargin(new Insets(0, 0, 0, 0));
+		serialPlotterButton.setContentAreaFilled(false);
+		serialPlotterButton.setBorderPainted(false);
+		//JButton serialPlotterButton = new JButton(uiMessageBundle.getString("ardublock.ui.serialPlotter"));
 		serialPlotterButton.addActionListener(serialPlotterButtonListener);
-		KeyStroke ctrlLKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
-		serialPlotterButton.registerKeyboardAction(serialPlotterButtonListener, ctrlLKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		//serialPlotterButton.registerKeyboardAction(serialPlotterButtonListener, ctrlLKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 		serialPlotterButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialPlotter.tooltip"));
 		
-		topPanel.add(newButton);
-		topPanel.add(saveButton);
-		topPanel.add(saveAsButton);	
-		topPanel.add(openButton);
-		topPanel.add(Box.createRigidArea(new Dimension(15, 0))); //std value 30,0
-		topPanel.add(generateButton);
-		topPanel.add(simulateButton); 
-		topPanel.add(Box.createRigidArea(new Dimension(15, 0))); //std value 30,0
-		topPanel.add(simulatorHelpButton);
-		topPanel.add(serialMonitorButton);
-		topPanel.add(serialPlotterButton);
-		
-		//SAVE IMAGE BUTTON
+		JMenuItem serialPlotterMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.serialPlotter"));
+		serialPlotterMenuItem.addActionListener(serialPlotterButtonListener);
+		serialPlotterMenuItem.registerKeyboardAction(serialPlotterButtonListener, ctrlLKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		serialPlotterMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.serialPlotter.tooltip"));
+		
+
+		//****************************
+		//BOTTOM
+		//******************************
+		
+		//SAVE IMAGE
 		//*****************************************
-		JPanel bottomPanel = new JPanel();
-		JButton saveImageButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveImage"));
 		ActionListener saveImageButtonListener = new SaveImageButtonListener(this);
-		saveImageButton.addActionListener(saveImageButtonListener);
 		KeyStroke ctrlpKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK);
-		saveImageButton.registerKeyboardAction(saveImageButtonListener, ctrlpKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		
+		JButton saveImageButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveImage"));
+		saveImageButton.addActionListener(saveImageButtonListener);	
+		//saveImageButton.registerKeyboardAction(saveImageButtonListener, ctrlpKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 		saveImageButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveImage.tooltip"));
+		
+		JMenuItem saveImageMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.saveImage"));
+		saveImageMenuItem.addActionListener(saveImageButtonListener);
+		saveImageMenuItem.registerKeyboardAction(saveImageButtonListener, ctrlpKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		saveImageMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveImage.tooltip"));
 		//*****************************************
 		
 		//LMS SITE BUTTON
@@ -250,14 +420,13 @@ public class OpenblocksFrame extends JFrame
 		
 		//BLOCK REFERENCE BUTTON
 		//*****************************************
-		JButton blockreferenceButton = new JButton(uiMessageBundle.getString("ardublock.ui.blockReference"));
 		ActionListener blockreferenceButtonListener = new ActionListener () {
 			public void actionPerformed(ActionEvent e) {
 			    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
 			    URL url;
 			    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
 			        try {
-			        	url = new URL(uiMessageBundle.getString("ardublock.ui.blockReference.domain"));
+			        	url = new URL(uiMessageBundle.getString("ardublock.ui.blockreference.domain"));
 			            desktop.browse(url.toURI());
 			        } catch (Exception e1) {
 			            //e1.printStackTrace();
@@ -265,13 +434,19 @@ public class OpenblocksFrame extends JFrame
 			    }
 			}
 		};
+		
+		JButton blockreferenceButton = new JButton(uiMessageBundle.getString("ardublock.ui.blockreference"));
 		blockreferenceButton.addActionListener(blockreferenceButtonListener);
-		blockreferenceButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.blockReference.tooltip"));
+		blockreferenceButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.blockreference.tooltip"));
+		
+		JMenuItem blockreferenceMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.blockreference"));
+		blockreferenceMenuItem.addActionListener(blockreferenceButtonListener);
+		blockreferenceMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.blockreference.tooltip"));
 		//*****************************************
 		
 		// VERSION LABEL
 		//*****************************************
-		JLabel versionLabel = new JLabel(uiMessageBundle.getString("ardublock.ui.version"));
+		//JLabel versionLabel = new JLabel(uiMessageBundle.getString("ardublock.ui.version"));
 		//*****************************************
 		
 		//ADD ZOOM (currently only by CTRL +/- or mouse wheel
@@ -283,20 +458,43 @@ public class OpenblocksFrame extends JFrame
 		//TODO: TEST SAVE DEFAULT
 		//Save new default program
 		//*************************
-		JButton saveDefaultButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram"));
 		ActionListener saveDefaultButtonListener = new SaveDefaultButtonListener(this);	
-		saveDefaultButton.addActionListener(saveDefaultButtonListener);
 		KeyStroke ctrlaltsKeyStroke  = KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK | ActionEvent.ALT_MASK);
-		saveDefaultButton.registerKeyboardAction(saveDefaultButtonListener, ctrlaltsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
-		saveDefaultButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram.tooltip"));
+		
+		/*JButton saveDefaultButton = new JButton(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram"));
+		saveDefaultButton.addActionListener(saveDefaultButtonListener);
+		//saveDefaultButton.registerKeyboardAction(saveDefaultButtonListener, ctrlaltsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		saveDefaultButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram.tooltip"));*/
+		
+		JMenuItem saveDefaultMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram"));
+		saveDefaultMenuItem.addActionListener(saveDefaultButtonListener);
+		saveDefaultMenuItem.registerKeyboardAction(saveDefaultButtonListener, ctrlaltsKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		saveDefaultMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.saveDefaultProgram.tooltip"));
 		
 		
 		//SWITCH BLOCK MENU BASIC/PRO/SIM
-		//*****************************************
+		//*****************************************		
+		ImageIcon modeBasicButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/basic1.png")));
+		ImageIcon modeBasicButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/basic2.png")));
+		ImageIcon modeBasicButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/basic3.png")));
+		ImageIcon modeBasicButtonIconSelected = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/basic4.png")));
+		
+		ImageIcon modeProButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/pro1.png")));
+		ImageIcon modeProButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/pro2.png")));
+		ImageIcon modeProButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/pro3.png")));
+		ImageIcon modeProButtonIconSelected = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/pro4.png")));
+		
+		ImageIcon modeSimButtonIcon = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/sim1.png")));
+		ImageIcon modeSimButtonIconHovered = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/sim2.png")));
+		ImageIcon modeSimButtonIconPressed = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/sim3.png")));
+		ImageIcon modeSimButtonIconSelected = new ImageIcon(getToolkit().getImage(GUI.class.getResource("/com/ardublock/block/sim4.png")));
+		
+		ButtonMouseListener modeBasicButtonMouseListener = new ButtonMouseListener(modeBasicButtonIcon, modeBasicButtonIconHovered, modeBasicButtonIconPressed,modeBasicButtonIconSelected); 
+		ButtonMouseListener modeProButtonMouseListener = new ButtonMouseListener(modeProButtonIcon, modeProButtonIconHovered, modeProButtonIconPressed, modeProButtonIconSelected);
+		ButtonMouseListener modeSimButtonMouseListener = new ButtonMouseListener(modeSimButtonIcon, modeSimButtonIconHovered, modeSimButtonIconPressed, modeSimButtonIconSelected);
+		
 		//Workspace: BASIC
 		//*****************
-		modeBasicButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.standard"));
-		modeBasicButton.setFont(new Font("Sans", Font.BOLD, 12));
 		ActionListener modeBasicButtonListener = new ActionListener () {
 			public void actionPerformed(ActionEvent e) {
 				//get current zoomLevel
@@ -313,15 +511,26 @@ public class OpenblocksFrame extends JFrame
 		        	WorkspaceController workspaceController = context.getWorkspaceController();
 			        workspaceController.loadProject(getArduBlockString(), null , "default");	
 			        generateButton.setVisible(true);
+			        generateMenuItem.setVisible(true);
+			        generateMenuItem.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 			        simulateButton.setVisible(false);
+			        simulateMenuItem.setVisible(false);
+			        simulateMenuItem.unregisterKeyboardAction(ctrluKeyStroke);
 			        simulatorHelpButton.setVisible(false);
 			        serialMonitorButton.setVisible(true);
 				    serialPlotterButton.setVisible(true);
+				    modeBasicButtonMouseListener.setSelected(true);
+				    modeProButtonMouseListener.setSelected(false);
+				    modeSimButtonMouseListener.setSelected(false);
+				    modeBasicButton.setIcon(modeBasicButtonIconSelected);
+				    modeProButton.setIcon(modeProButtonIcon);
+				    modeSimButton.setIcon(modeSimButtonIcon);
+			        //modeBasicButton.setFont(new Font("Sans", Font.BOLD, 12));
+			        //modeProButton.setFont(new Font("Sans", Font.PLAIN, 12));
+			        //modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12));
+				    
 			        appPrefix = uiMessageBundle.getString("ardublock.ui.appprefix.standard");
 			        setTitle(makeFrameTitle());
-			        modeBasicButton.setFont(new Font("Sans", Font.BOLD, 12));
-			        modeProButton.setFont(new Font("Sans", Font.PLAIN, 12));
-			        modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12));
 			        //zoomSlider.reset();
 			        //zoomSlider.setValue(currentWorkspaceZoom);
 			        workspace.setWorkspaceZoom(currentWorkspaceZoom);
@@ -331,13 +540,27 @@ public class OpenblocksFrame extends JFrame
 		        }
 			}
 		};
+		
+		modeBasicButton = new JButton(modeBasicButtonIconSelected);
+		modeBasicButton.setMargin(new Insets(0, 0, 0, 0));
+		modeBasicButton.setContentAreaFilled(false);
+		modeBasicButton.setBorderPainted(false);
+		modeBasicButton.addMouseListener(modeBasicButtonMouseListener);
+		modeBasicButtonMouseListener.setSelected(true);
+		//modeBasicButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.standard"));
+		//modeBasicButton.setFont(new Font("Sans", Font.BOLD, 12));
+		//modeBasicButton.setForeground(Color.RED);
 		modeBasicButton.addActionListener(modeBasicButtonListener);
 		modeBasicButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.standard.tooltip"));
 		
+		
+		JMenuItem modeBasicMenuItem = new JMenuItem("Blockset "+uiMessageBundle.getString("ardublock.ui.mode.standard"));
+		modeBasicMenuItem.addActionListener(modeBasicButtonListener);
+		modeBasicMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.standard.tooltip"));
+		
 		//Workspace: PRO
 		//*****************
-		modeProButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.expert"));
-		modeProButton.setFont(new Font("Sans", Font.PLAIN, 12));
+		//*****************
 		ActionListener modeProButtonListener = new ActionListener () {
 			public void actionPerformed(ActionEvent e) {
 				
@@ -353,13 +576,23 @@ public class OpenblocksFrame extends JFrame
 		        	WorkspaceController workspaceController = context.getWorkspaceController();
 		        	workspaceController.loadProject(getArduBlockString(), null , "custom");
 			        generateButton.setVisible(true);
+			        generateMenuItem.setVisible(true);
+			        generateMenuItem.registerKeyboardAction(generateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 			        simulateButton.setVisible(false);
+			        simulateMenuItem.setVisible(false);
+			        simulateMenuItem.unregisterKeyboardAction(ctrluKeyStroke);
 			        simulatorHelpButton.setVisible(false);
 			        serialMonitorButton.setVisible(true);
 				    serialPlotterButton.setVisible(true);
-			        modeBasicButton.setFont(new Font("Sans", Font.PLAIN, 12));
-			        modeProButton.setFont(new Font("Sans", Font.BOLD, 12));
-			        modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12));
+				    modeBasicButtonMouseListener.setSelected(false);
+				    modeProButtonMouseListener.setSelected(true);
+				    modeSimButtonMouseListener.setSelected(false);
+				    modeBasicButton.setIcon(modeBasicButtonIcon);
+				    modeProButton.setIcon(modeProButtonIconSelected);
+				    modeSimButton.setIcon(modeSimButtonIcon);
+			        //modeBasicButton.setFont(new Font("Sans", Font.PLAIN, 12));
+			        //modeProButton.setFont(new Font("Sans", Font.BOLD, 12));
+			        //modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12));
 			        appPrefix = uiMessageBundle.getString("ardublock.ui.appprefix.pro");
 			        setTitle(makeFrameTitle());
 			        
@@ -373,13 +606,23 @@ public class OpenblocksFrame extends JFrame
 		        }
 			}
 		};
+		
+		modeProButton = new JButton(modeProButtonIcon);
+		modeProButton.setMargin(new Insets(0, 0, 0, 0));
+		modeProButton.setContentAreaFilled(false);
+		modeProButton.setBorderPainted(false);
+		modeProButton.addMouseListener(modeProButtonMouseListener);
+		//modeProButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.expert"));
+		//modeProButton.setFont(new Font("Sans", Font.PLAIN, 12));
 		modeProButton.addActionListener(modeProButtonListener);
 		modeProButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.expert.tooltip"));
 		
+		JMenuItem modeProMenuItem = new JMenuItem("Blockset "+uiMessageBundle.getString("ardublock.ui.mode.expert"));
+		modeProMenuItem.addActionListener(modeProButtonListener);
+		modeProMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.expert.tooltip"));
+		
 		//Workspace: SIM
 		//*****************
-		modeSimButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.sim"));
-		modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12));
 		ActionListener modeSimButtonListener = new ActionListener () {
 			public void actionPerformed(ActionEvent e) {
 				
@@ -397,13 +640,23 @@ public class OpenblocksFrame extends JFrame
 				  	//TODO check if reduced sim-blockset is necessary
 				   	workspaceController.loadProject(getArduBlockString(), null , "page");
 				    generateButton.setVisible(false);
+				    generateMenuItem.setVisible(false);
+				    generateMenuItem.unregisterKeyboardAction(ctrluKeyStroke);
 				    simulateButton.setVisible(true);
+				    simulateMenuItem.setVisible(true);
+				    simulateMenuItem.registerKeyboardAction(simulateButtonListener, ctrluKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 				    simulatorHelpButton.setVisible(true);
 				    serialMonitorButton.setVisible(false);
 				    serialPlotterButton.setVisible(false);
-			        modeBasicButton.setFont(new Font("Sans", Font.PLAIN, 12));
-			        modeProButton.setFont(new Font("Sans", Font.PLAIN, 12));
-			        modeSimButton.setFont(new Font("Sans", Font.BOLD, 12));
+				    modeBasicButtonMouseListener.setSelected(false);
+				    modeProButtonMouseListener.setSelected(false);
+				    modeSimButtonMouseListener.setSelected(true);
+				    modeBasicButton.setIcon(modeBasicButtonIcon);
+				    modeProButton.setIcon(modeProButtonIcon);
+				    modeSimButton.setIcon(modeSimButtonIconSelected);
+			        //modeBasicButton.setFont(new Font("Sans", Font.PLAIN, 12));
+			        //modeProButton.setFont(new Font("Sans", Font.PLAIN, 12));
+			        //modeSimButton.setFont(new Font("Sans", Font.BOLD, 12));
 				    appPrefix = uiMessageBundle.getString("ardublock.ui.appprefix.sim");
 				    setTitle(makeFrameTitle());
 			        
@@ -417,32 +670,59 @@ public class OpenblocksFrame extends JFrame
 		        }
 			}
 		};
+		
+		modeSimButton = new JButton(modeSimButtonIcon);
+		modeSimButton.setMargin(new Insets(0, 0, 0, 0));
+		modeSimButton.setContentAreaFilled(false);
+		modeSimButton.setBorderPainted(false);
+		modeSimButton.addMouseListener(modeSimButtonMouseListener);
+		//modeSimButton = new JButton(uiMessageBundle.getString("ardublock.ui.mode.sim"));
+		//modeSimButton.setFont(new Font("Sans", Font.PLAIN, 12));
 		modeSimButton.addActionListener(modeSimButtonListener);
 		modeSimButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.sim.tooltip"));
+		
+		JMenuItem modeSimMenuItem = new JMenuItem("Blockset "+uiMessageBundle.getString("ardublock.ui.mode.sim"));
+		modeSimMenuItem.addActionListener(modeSimButtonListener);
+		modeSimMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.mode.sim.tooltip"));
 		//*****************************************
 		
-		//COPY/PASTE BUTTONS
+		
+		//COPY PROGRAM
 		//*****************************************
-		JButton copyButton = new JButton(uiMessageBundle.getString("ardublock.ui.copy"));
+		KeyStroke ctrlcKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
 		ActionListener copyButtonListener = new CopyButtonListener(context);
+		
+		/*JButton copyButton = new JButton(uiMessageBundle.getString("ardublock.ui.copy"));
 		copyButton.addActionListener(copyButtonListener);
-		KeyStroke ctrlcKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
-		copyButton.registerKeyboardAction(copyButtonListener, ctrlcKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		//copyButton.registerKeyboardAction(copyButtonListener, ctrlcKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
 		copyButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.copy.tooltip"));
+		*/
 		
+		JMenuItem copyButtonMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.copy"));
+		copyButtonMenuItem.registerKeyboardAction(serialButtonListener, ctrlcKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		copyButtonMenuItem.addActionListener(copyButtonListener);
+		copyButtonMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.copy.tooltip"));
 		
-		JButton pasteButton = new JButton(uiMessageBundle.getString("ardublock.ui.paste"));
+		
+		//PASTE PROGRAM
+		//*****************************************
+		KeyStroke ctrlvKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
 		ActionListener pasteButtonListener = new PasteButtonListener(this, context, uiMessageBundle, workspaceModeState);
+		
+		/*JButton pasteButton = new JButton(uiMessageBundle.getString("ardublock.ui.paste"));
 		pasteButton.addActionListener(pasteButtonListener);
-		KeyStroke ctrlvKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK);
-		pasteButton.registerKeyboardAction(pasteButtonListener, ctrlvKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
-		pasteButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.paste.tooltip"));
-		//*****************************************
+		//pasteButton.registerKeyboardAction(pasteButtonListener, ctrlvKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		pasteButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.paste.tooltip"));*/
 		
-		//WEBSITE BUTTON
-		//*****************************************
-		JButton websiteButton = new JButton(uiMessageBundle.getString("ardublock.ui.website"));
-		websiteButton.addActionListener(new ActionListener () {
+		JMenuItem pasteButtonMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.paste"));
+		pasteButtonMenuItem.registerKeyboardAction(pasteButtonListener, ctrlvKeyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		pasteButtonMenuItem.addActionListener(pasteButtonListener);
+		pasteButtonMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.paste.tooltip"));
+		
+		
+		//WEBSITE
+		//*****************************************		
+		ActionListener websiteButtonListener = new ActionListener () {
 			public void actionPerformed(ActionEvent e) {
 			    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
 			    URL url;
@@ -455,33 +735,131 @@ public class OpenblocksFrame extends JFrame
 			        }
 			    }
 			}
-		});
-		websiteButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.website.tooltip"));
+		};
+		
+		//JButton websiteButton = new JButton(uiMessageBundle.getString("ardublock.ui.website"));
+		//websiteButton.addActionListener(websiteButtonListener);
+		//websiteButton.setToolTipText(uiMessageBundle.getString("ardublock.ui.website.tooltip"));
+		
+		JMenuItem websiteButtonMenuItem = new JMenuItem(uiMessageBundle.getString("ardublock.ui.website"));
+		websiteButtonMenuItem.addActionListener(websiteButtonListener);
+		websiteButtonMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.website.tooltip"));
 		//*****************************************
 		
-		//bottomPanel.add(blockreferenceButton);
+		//VERSION
+		//*********
+		ActionListener repositoryButtonListener = new ActionListener () {
+			public void actionPerformed(ActionEvent e) {
+			    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
+			    URL url;
+			    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
+			        try {
+			        	url = new URL(uiMessageBundle.getString("ardublock.ui.website.repository"));
+			            desktop.browse(url.toURI());
+			        } catch (Exception e1) {
+			            //e1.printStackTrace();
+			        }
+			    }
+			}
+		};
+		
+		
+		
+		JMenuItem versionMenuItem = new JMenuItem("ArduBlock " + uiMessageBundle.getString("ardublock.ui.version"));
+		versionMenuItem.addActionListener(repositoryButtonListener);
+		versionMenuItem.setToolTipText(uiMessageBundle.getString("ardublock.ui.repository.tooltip"));
+		//************************************
+		//PANELS
+		//*************************************
+		//PANELS
+		JPanel topPanel = new JPanel(new BorderLayout()); //topPanel.setLayout(new FlowLayout());
+		JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+		JPanel menuePanel = new JPanel(new BorderLayout());//new FlowLayout(FlowLayout.LEFT));
+		JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+		
+		bottomPanel.setBackground(new Color(40, 76, 102));
+		buttonPanel.setBackground(new Color(40, 76, 102));
+		
+		//MENUS
+		JMenuBar menuBar = new JMenuBar();
+		JMenu fileMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.file"));
+		JMenu programMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.program"));
+		JMenu toolsMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.tools"));
+		JMenu blocksMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.blocks"));
+		JMenu aboutMenu = new JMenu(uiMessageBundle.getString("ardublock.ui.menu.about"));
+		
+		menuBar.add(fileMenu);
+		menuBar.add(programMenu);
+		menuBar.add(toolsMenu);
+		menuBar.add(blocksMenu);
+		menuBar.add(aboutMenu);
+		
+		fileMenu.add(newMenuItem);
+		fileMenu.add(openMenuItem);
+		fileMenu.addSeparator();
+		fileMenu.add(saveMenuItem);
+		fileMenu.add(saveAsMenuItem);
+		
+		programMenu.add(generateMenuItem);
+		programMenu.add(simulateMenuItem);
+		programMenu.addSeparator();
+		programMenu.add(copyButtonMenuItem);
+		programMenu.add(pasteButtonMenuItem);
+		programMenu.addSeparator();
+		programMenu.add(saveImageMenuItem);
+		programMenu.add(saveDefaultMenuItem);		
+		
+		toolsMenu.add(serialMonitorMenuItem);
+		toolsMenu.add(serialPlotterMenuItem);
+		
+		blocksMenu.add(modeBasicMenuItem);
+		blocksMenu.add(modeProMenuItem);
+		blocksMenu.add(modeSimMenuItem);
+		blocksMenu.addSeparator();
+		blocksMenu.add(blockreferenceMenuItem);
+		
+		aboutMenu.add(websiteButtonMenuItem);
+		aboutMenu.add(simulatorHelpMenuItem);
+		aboutMenu.add(versionMenuItem);
+		
+		menuePanel.add(menuBar, BorderLayout.CENTER );
+		topPanel.add(menuePanel, BorderLayout.NORTH); //TEST
+		topPanel.add(buttonPanel, BorderLayout.CENTER); //TEST
+		
+		buttonPanel.add(generateButton);
+		buttonPanel.add(simulateButton); 
+		buttonPanel.add(Box.createRigidArea(new Dimension(30, 0))); //std value 30,0
+		buttonPanel.add(newButton);
+		buttonPanel.add(openButton);
+		buttonPanel.add(saveButton);
+		//topPanel.add(saveAsButton);	
+		buttonPanel.add(Box.createRigidArea(new Dimension(15, 0))); //std value 30,0
+		buttonPanel.add(simulatorHelpButton);
+		buttonPanel.add(serialMonitorButton);
+		buttonPanel.add(serialPlotterButton);
+		
 		bottomPanel.add(modeBasicButton);
 		bottomPanel.add(modeProButton);
 		bottomPanel.add(modeSimButton);
+		bottomPanel.add(Box.createRigidArea(new Dimension(30, 0))); //std value 30,0
+		bottomPanel.add(context.getWorkspaceController().getSearchBar(uiMessageBundle.getString("ardublock.ui.search"), uiMessageBundle.getString("ardublock.ui.search.tooltip")));
 		
-		bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0
-		bottomPanel.add(context.getWorkspaceController().getSearchBar());
-		
-		bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0
+		//bottomPanel.add(blockreferenceButton);
+		//bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0
 		//bottomPanel.add(zoomSlider);
 		//bottomPanel.add(zoomInButton);
 		//bottomPanel.add(zoomResetButton);
 		//bottomPanel.add(zoomOutButton);
-		bottomPanel.add(Box.createRigidArea(new Dimension(5, 0)));//std value 30,0
-		bottomPanel.add(copyButton);
-		bottomPanel.add(pasteButton);
-		bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0
-		bottomPanel.add(saveImageButton);
-		bottomPanel.add(saveDefaultButton);
-		bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0
-		bottomPanel.add(versionLabel);
-		bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0
-		bottomPanel.add(websiteButton);
+		//bottomPanel.add(Box.createRigidArea(new Dimension(5, 0)));//std value 30,0
+		//bottomPanel.add(copyButton);
+		//bottomPanel.add(pasteButton);
+		//bottomPanel.add(Box.createRigidArea(new Dimension(30, 0))); //std value 30,0
+		//bottomPanel.add(saveImageButton);
+		//bottomPanel.add(saveDefaultButton);
+		//bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0
+		//bottomPanel.add(versionLabel);
+		//bottomPanel.add(Box.createRigidArea(new Dimension(5, 0))); //std value 30,0
+		//bottomPanel.add(websiteButton);
 		
 		
 		//bottomPanel.add(lmssiteButton);
diff --git a/src/main/java/com/ardublock/ui/listener/ButtonMouseListener.java b/src/main/java/com/ardublock/ui/listener/ButtonMouseListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..313ac1fb3882ddfc7712c5ac038c9fb9b56404a6
--- /dev/null
+++ b/src/main/java/com/ardublock/ui/listener/ButtonMouseListener.java
@@ -0,0 +1,60 @@
+package com.ardublock.ui.listener;
+
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+
+
+public class ButtonMouseListener extends MouseAdapter {
+	
+	ImageIcon iconPressed;
+	ImageIcon iconHover;
+	ImageIcon iconButton;
+	ImageIcon iconSelected;
+	
+	boolean selected = false;
+	
+	public ButtonMouseListener(ImageIcon iconButton, ImageIcon iconHover, ImageIcon iconPressed, ImageIcon iconSelected) {
+		this.iconButton = iconButton;
+		this.iconHover = iconHover;
+		this.iconPressed = iconPressed;
+		this.iconSelected = iconSelected;
+	}
+	
+	public ButtonMouseListener(ImageIcon iconButton, ImageIcon iconHover, ImageIcon iconPressed) {
+		this(iconButton, iconHover, iconPressed, iconButton);
+	}
+	
+	@Override
+	public void mouseEntered(MouseEvent e) {
+		JButton button = (JButton)e.getSource();
+		button.setIcon(iconHover);
+	}
+
+	@Override
+	public void mouseExited(MouseEvent e) {
+		JButton button = (JButton)e.getSource();
+		if(selected) {
+			button.setIcon(iconSelected);
+		}else {
+			button.setIcon(iconButton);
+		}		
+	}
+	
+	@Override
+	public void mousePressed(MouseEvent e) {
+		JButton button = (JButton)e.getSource();
+		button.setIcon(iconPressed);
+		super.mousePressed(e);
+	}
+	
+	public void setSelected(boolean selected) {
+		this.selected = selected;
+	}
+
+}
+
+
+
diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties
index 212bcea6c71cbb1936b255c78f7816b044ec18c7..c304c6b4702cf81b62cb0d360ecd0ccdff99b7ca 100644
--- a/src/main/resources/com/ardublock/block/ardublock.properties
+++ b/src/main/resources/com/ardublock/block/ardublock.properties
@@ -9,6 +9,12 @@ ardublock.file.suffix=Ardublock Program File(*.abp)
 
 #UI
 #****************************
+ardublock.ui.menu.file=File
+ardublock.ui.menu.program=Program
+ardublock.ui.menu.tools=Tools
+ardublock.ui.menu.blocks=Blocks
+ardublock.ui.menu.about=About
+
 ardublock.ui.new=New
 ardublock.ui.new.tooltip=new program
 ardublock.ui.save=Save
@@ -21,7 +27,6 @@ ardublock.ui.upload=Upload
 ardublock.ui.upload.tooltip=Upload to Arduino
 ardublock.ui.clone=Clone (rightclick-Ctrl)
 ardublock.ui.clone_all=Clone following (rightclick-Shift-Ctrl)
-ardublock.ui.reference=open block reference
 ardublock.ui.add_comment=Add Comment
 ardublock.ui.delete_comment=Delete Comment
 ardublock.ui.organize_blocks=Organize all blocks
@@ -31,16 +36,21 @@ ardublock.ui.website.domain=https://letsgoing.org
 ardublock.ui.website.tooltip=goto letsgoING project-page
 ardublock.ui.lmssite=Online LMS
 ardublock.ui.lmssite.domain=moodle.letsgoing.org
-ardublock.ui.lmssite.tooltip=goto letsgoING online-LMS
-ardublock.ui.blockReference=Block Reference
-ardublock.ui.blockReference.domain=http://blockreference.letsgoing.org
-ardublock.ui.blockReference.tooltip=open block reference
+ardublock.ui.lmssite.tooltip=go to letsgoING online-LMS
+ardublock.ui.reference=open block reference
+ardublock.ui.blockreference=open block reference
+ardublock.ui.blockreference.domain=https://blockreferenz.letsgoing.org/
+ardublock.ui.blockreference.tooltip=open block reference
+ardublock.ui.website.repository=https://gitlab.reutlingen-university.de/letsgoing/ardublock
+ardublock.ui.website.repository.tooltip=go to ArduBlock Repository
 ardublock.ui.mode.expert=Pro
 ardublock.ui.mode.expert.tooltip=Mehr Blöcke und komplexere Funktionen fuer Fortgeschrittene
 ardublock.ui.mode.standard=Basic
 ardublock.ui.mode.standard.tooltip=Die wichtigsten Blöcke für den Einstieg
 ardublock.ui.mode.sim=Sim
 ardublock.ui.mode.sim.tooltip=ArduBlock Basic mit Simulation "letsgoING-Grundlagen-Hardware"
+ardublock.ui.search=search block
+ardublock.ui.search.tooltip=Search for blocks in the drawers and workspace
 ardublock.ui.serialMonitor=Serial Monitor
 ardublock.ui.serialMonitor.tooltip=open Serial Monitor
 ardublock.ui.serialPlotter=Serial Plotter
@@ -72,7 +82,7 @@ ardublock.ui.simulatorHelp.text=
 
 ardublock.ui.version=v2.2 beta3 nBF
 
-ardublock.ui.appprefix.standard=
+ardublock.ui.appprefix.standard=Basic
 ardublock.ui.appprefix.pro=Pro
 ardublock.ui.appprefix.sim=Simulator
 
diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties
index e35de1cd8f63a60f437c9e8bd5e04fca84ad3b14..3278b5c70ad0952ff3a45476b150f8b02e486017 100644
--- a/src/main/resources/com/ardublock/block/ardublock_de.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_de.properties
@@ -9,6 +9,12 @@ ardublock.file.suffix=Ardublock Programmdatei (*.abp)
 
 #UI
 #****************************
+ardublock.ui.menu.file=Datei
+ardublock.ui.menu.program=Programm
+ardublock.ui.menu.tools=Werkzeuge
+ardublock.ui.menu.blocks=Blöcke
+ardublock.ui.menu.about=Über
+
 ardublock.ui.new=Neu
 ardublock.ui.new.tooltip=Neues Programm erstellen
 ardublock.ui.save=Speichern
@@ -21,26 +27,30 @@ ardublock.ui.upload=Hochladen auf den Arduino
 ardublock.ui.upload.tooltip=Programm auf Arduino laden
 ardublock.ui.clone=klonen (Strg-Rechtsklick)
 ardublock.ui.clone_all=folgende klonen (Strg-Shift-Rechtsklick)
-ardublock.ui.reference=Block-Referenz öffnen 
 ardublock.ui.add_comment=Kommentar hinzufügen
 ardublock.ui.delete_comment=Kommentar löschen
 ardublock.ui.organize_blocks=Alle Blöcke neu anordnen
 ardublock.ui.create_refer=Verweis erstellen
-ardublock.ui.website=letsgoING
+ardublock.ui.website=letsgoING (Web)
 ardublock.ui.website.domain=https://letsgoing.org
 ardublock.ui.website.tooltip=öffnet die letsgoING-Homepage
-ardublock.ui.lmssite=Online Lernen
+ardublock.ui.lmssite=Online Lernen (Web)
 ardublock.ui.lmssite.domain=moodle.letsgoing.org
 ardublock.ui.lmssite.tooltip=öffnet die letsgoING-Lernseiten
-ardublock.ui.blockReference=Block Referenz
-ardublock.ui.blockReference.domain=http://blockreference.letsgoing.org
-ardublock.ui.blockReference.tooltip=öffnet die Blockreferenz 
+ardublock.ui.reference=Block-Referenz öffnen 
+ardublock.ui.blockreference=Übersicht Block-Referenz öffnen (Web)
+ardublock.ui.blockreference.domain=https://blockreferenz.letsgoing.org/
+ardublock.ui.blockreference.tooltip=öffnet die Blockreferenz
+ardublock.ui.repository=https://gitlab.reutlingen-university.de/letsgoing/ardublock
+ardublock.ui.repository.tooltip=gehe zur ArduBlock Repository
 ardublock.ui.mode.expert=Pro
 ardublock.ui.mode.expert.tooltip=Mehr Blöcke und komplexere Funktionen fuer Fortgeschrittene
 ardublock.ui.mode.standard=Basic
 ardublock.ui.mode.standard.tooltip=Die wichtigsten Blöcke für den Einstieg
 ardublock.ui.mode.sim=Sim
 ardublock.ui.mode.sim.tooltip=ArduBlock Basic mit Simulation "letsgoING-Grundlagen-Hardware"
+ardublock.ui.search=suche Blöcke
+ardublock.ui.search.tooltip=Suche im Arbeitsfenster und den Menüs nach Blöcken
 
 #ardublock.ui.modeButton.mode.tooltip=umschalten zwischen Grundlagen- und Projektblöcken
 ardublock.ui.serialMonitor=Serieller Monitor
@@ -51,7 +61,7 @@ ardublock.ui.undo=Undo
 ardublock.ui.undo.tooltip=Rückgängig
 ardublock.ui.redo=Redo
 ardublock.ui.redo.tooltip=Wiederherstellen
-ardublock.ui.saveImage=Bild speichern
+ardublock.ui.saveImage=Als Bild speichern
 ardublock.ui.saveImage.tooltip=Speichert ein Bild des aktuellen Programms
 ardublock.ui.saveDefaultProgram=Als Vorlage speichern
 ardublock.ui.saveDefaultProgram.tooltip=Speichert aktuelles Programm als Vorlage für neue Programme
@@ -61,12 +71,12 @@ ardublock.ui.zoomOut=-
 ardublock.ui.zoomOut.tooltip=verkleinere Programm
 ardublock.ui.zoomReset=0
 ardublock.ui.zoomReset.tooltip=zurücksetzen
-ardublock.ui.copy=kopieren
+ardublock.ui.copy=Programm kopieren
 ardublock.ui.copy.tooltip=kopiere gesamtes Programm in Zwischenablage
-ardublock.ui.paste=einfügen
+ardublock.ui.paste=Programm einfügen
 ardublock.ui.paste.tooltip=füge gesamtes Programm aus Zwischenablage ein
 ardublock.ui.simulation=Hochladen auf den Simulator
-ardublock.ui.simulation.tooltip=Starte den Simulator fuer die letsgoING-GrundlagenModule
+ardublock.ui.simulation.tooltip=Starte den Simulator und lade das Programm hoch
 ardublock.ui.simulatorHelp=Hilfe
 ardublock.ui.simulatorHelp.tooltip=Infos zum letsgoING-Simulator
 ardublock.ui.simulatorHelp.title=Infos zum letsgoING-Simulator
@@ -74,7 +84,7 @@ ardublock.ui.simulatorHelp.text=TASTER\n**********************\nlinke Maustaste
 
 ardublock.ui.version=v2.2 beta3 nBF
 
-ardublock.ui.appprefix.standard=
+ardublock.ui.appprefix.standard=Basic
 ardublock.ui.appprefix.pro=Pro
 ardublock.ui.appprefix.sim=Simulator
 
diff --git a/src/main/resources/com/ardublock/block/basic1.png b/src/main/resources/com/ardublock/block/basic1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a12eef429dcc5e5dfd4f835ad96ef45f42d5d43
Binary files /dev/null and b/src/main/resources/com/ardublock/block/basic1.png differ
diff --git a/src/main/resources/com/ardublock/block/basic2.png b/src/main/resources/com/ardublock/block/basic2.png
new file mode 100644
index 0000000000000000000000000000000000000000..be2bd645209bd5657a0aae6c523a6a445c3fb445
Binary files /dev/null and b/src/main/resources/com/ardublock/block/basic2.png differ
diff --git a/src/main/resources/com/ardublock/block/basic3.png b/src/main/resources/com/ardublock/block/basic3.png
new file mode 100644
index 0000000000000000000000000000000000000000..7127953f92db2e735c72070b7554d4dab16dd5ee
Binary files /dev/null and b/src/main/resources/com/ardublock/block/basic3.png differ
diff --git a/src/main/resources/com/ardublock/block/basic4.png b/src/main/resources/com/ardublock/block/basic4.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b8463fb1dbb95ec76e812b4d7ff6923956f542e
Binary files /dev/null and b/src/main/resources/com/ardublock/block/basic4.png differ
diff --git a/src/main/resources/com/ardublock/block/button1.png b/src/main/resources/com/ardublock/block/button1.png
new file mode 100644
index 0000000000000000000000000000000000000000..72ead779b8c5362fadcbcecf66731aab0342d2f4
Binary files /dev/null and b/src/main/resources/com/ardublock/block/button1.png differ
diff --git a/src/main/resources/com/ardublock/block/button2.png b/src/main/resources/com/ardublock/block/button2.png
new file mode 100644
index 0000000000000000000000000000000000000000..52c4b01872ee06901f43bafd81eca75d763e0826
Binary files /dev/null and b/src/main/resources/com/ardublock/block/button2.png differ
diff --git a/src/main/resources/com/ardublock/block/button3.png b/src/main/resources/com/ardublock/block/button3.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf0f31dc1e3d4a268427bd0c7ea4ea672aec4c24
Binary files /dev/null and b/src/main/resources/com/ardublock/block/button3.png differ
diff --git a/src/main/resources/com/ardublock/block/help1.png b/src/main/resources/com/ardublock/block/help1.png
new file mode 100644
index 0000000000000000000000000000000000000000..5080c8c4c47a97650ac94413b9c830de5360d5fa
Binary files /dev/null and b/src/main/resources/com/ardublock/block/help1.png differ
diff --git a/src/main/resources/com/ardublock/block/help2.png b/src/main/resources/com/ardublock/block/help2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ade6d6e97ea7296a870e1726d0e3aba786998737
Binary files /dev/null and b/src/main/resources/com/ardublock/block/help2.png differ
diff --git a/src/main/resources/com/ardublock/block/help3.png b/src/main/resources/com/ardublock/block/help3.png
new file mode 100644
index 0000000000000000000000000000000000000000..278cfe04c8383f49665237c7933d41e2ad39ed60
Binary files /dev/null and b/src/main/resources/com/ardublock/block/help3.png differ
diff --git a/src/main/resources/com/ardublock/block/helpSim1.png b/src/main/resources/com/ardublock/block/helpSim1.png
new file mode 100644
index 0000000000000000000000000000000000000000..5080c8c4c47a97650ac94413b9c830de5360d5fa
Binary files /dev/null and b/src/main/resources/com/ardublock/block/helpSim1.png differ
diff --git a/src/main/resources/com/ardublock/block/helpSim2.png b/src/main/resources/com/ardublock/block/helpSim2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ade6d6e97ea7296a870e1726d0e3aba786998737
Binary files /dev/null and b/src/main/resources/com/ardublock/block/helpSim2.png differ
diff --git a/src/main/resources/com/ardublock/block/helpSim3.png b/src/main/resources/com/ardublock/block/helpSim3.png
new file mode 100644
index 0000000000000000000000000000000000000000..278cfe04c8383f49665237c7933d41e2ad39ed60
Binary files /dev/null and b/src/main/resources/com/ardublock/block/helpSim3.png differ
diff --git a/src/main/resources/com/ardublock/block/new1.png b/src/main/resources/com/ardublock/block/new1.png
new file mode 100644
index 0000000000000000000000000000000000000000..cef4e6e8db912ca0443247b7e1c0e0e7ba6f7227
Binary files /dev/null and b/src/main/resources/com/ardublock/block/new1.png differ
diff --git a/src/main/resources/com/ardublock/block/new2.png b/src/main/resources/com/ardublock/block/new2.png
new file mode 100644
index 0000000000000000000000000000000000000000..6016caa608fca456fecee1d7d33f13fcd9826747
Binary files /dev/null and b/src/main/resources/com/ardublock/block/new2.png differ
diff --git a/src/main/resources/com/ardublock/block/new3.png b/src/main/resources/com/ardublock/block/new3.png
new file mode 100644
index 0000000000000000000000000000000000000000..64bbe05d58ecc824c4aeeb957090d3ac45d0805c
Binary files /dev/null and b/src/main/resources/com/ardublock/block/new3.png differ
diff --git a/src/main/resources/com/ardublock/block/open1.png b/src/main/resources/com/ardublock/block/open1.png
new file mode 100644
index 0000000000000000000000000000000000000000..43f85f57414dd9c0caef96b98575edeb0374214d
Binary files /dev/null and b/src/main/resources/com/ardublock/block/open1.png differ
diff --git a/src/main/resources/com/ardublock/block/open2.png b/src/main/resources/com/ardublock/block/open2.png
new file mode 100644
index 0000000000000000000000000000000000000000..399c91a35f00182cd66a77238b2c7b961b3bbb1b
Binary files /dev/null and b/src/main/resources/com/ardublock/block/open2.png differ
diff --git a/src/main/resources/com/ardublock/block/open3.png b/src/main/resources/com/ardublock/block/open3.png
new file mode 100644
index 0000000000000000000000000000000000000000..725a8ccaefeafe44a0eca8f31ca70fc79dca3309
Binary files /dev/null and b/src/main/resources/com/ardublock/block/open3.png differ
diff --git a/src/main/resources/com/ardublock/block/pro1.png b/src/main/resources/com/ardublock/block/pro1.png
new file mode 100644
index 0000000000000000000000000000000000000000..9218d808a9bbf5cc0c983b96ec29a97ce496c852
Binary files /dev/null and b/src/main/resources/com/ardublock/block/pro1.png differ
diff --git a/src/main/resources/com/ardublock/block/pro2.png b/src/main/resources/com/ardublock/block/pro2.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ed80bce4d9afc2aabc5cfd6aaef77c450742c1a
Binary files /dev/null and b/src/main/resources/com/ardublock/block/pro2.png differ
diff --git a/src/main/resources/com/ardublock/block/pro3.png b/src/main/resources/com/ardublock/block/pro3.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa7164946a837fc3404bd4d3c30869d208b2ead0
Binary files /dev/null and b/src/main/resources/com/ardublock/block/pro3.png differ
diff --git a/src/main/resources/com/ardublock/block/pro4.png b/src/main/resources/com/ardublock/block/pro4.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f598d45274f271c6657746a0a275eaa02522a6d
Binary files /dev/null and b/src/main/resources/com/ardublock/block/pro4.png differ
diff --git a/src/main/resources/com/ardublock/block/save1.png b/src/main/resources/com/ardublock/block/save1.png
new file mode 100644
index 0000000000000000000000000000000000000000..7fef52e879d9c405b31037a7ede2ca472ff60d6a
Binary files /dev/null and b/src/main/resources/com/ardublock/block/save1.png differ
diff --git a/src/main/resources/com/ardublock/block/save2.png b/src/main/resources/com/ardublock/block/save2.png
new file mode 100644
index 0000000000000000000000000000000000000000..82b4a232db173e9ae4c9d9b819f9f7b140fd1be7
Binary files /dev/null and b/src/main/resources/com/ardublock/block/save2.png differ
diff --git a/src/main/resources/com/ardublock/block/save3.png b/src/main/resources/com/ardublock/block/save3.png
new file mode 100644
index 0000000000000000000000000000000000000000..87a6fc4946e9c65cb3f24bf0fe069b114d3fd63b
Binary files /dev/null and b/src/main/resources/com/ardublock/block/save3.png differ
diff --git a/src/main/resources/com/ardublock/block/serialMonitor1.png b/src/main/resources/com/ardublock/block/serialMonitor1.png
new file mode 100644
index 0000000000000000000000000000000000000000..584311efc36325fdab70d921595049a51d80181a
Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialMonitor1.png differ
diff --git a/src/main/resources/com/ardublock/block/serialMonitor2.png b/src/main/resources/com/ardublock/block/serialMonitor2.png
new file mode 100644
index 0000000000000000000000000000000000000000..123f85460a81aa83c45693766c52e1013c50402d
Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialMonitor2.png differ
diff --git a/src/main/resources/com/ardublock/block/serialMonitor3.png b/src/main/resources/com/ardublock/block/serialMonitor3.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad21602b5dfba5315abed9f8605c32982e04b71d
Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialMonitor3.png differ
diff --git a/src/main/resources/com/ardublock/block/serialPlotter1.png b/src/main/resources/com/ardublock/block/serialPlotter1.png
new file mode 100644
index 0000000000000000000000000000000000000000..87ede5be94dd5666f95121a1d59e1d5546d50134
Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialPlotter1.png differ
diff --git a/src/main/resources/com/ardublock/block/serialPlotter2.png b/src/main/resources/com/ardublock/block/serialPlotter2.png
new file mode 100644
index 0000000000000000000000000000000000000000..a151c3e9f1e67f3c0dc86498928d7af483c814c0
Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialPlotter2.png differ
diff --git a/src/main/resources/com/ardublock/block/serialPlotter3.png b/src/main/resources/com/ardublock/block/serialPlotter3.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6f6c381126ae2cfdb3823a93f3469fe68465c01
Binary files /dev/null and b/src/main/resources/com/ardublock/block/serialPlotter3.png differ
diff --git a/src/main/resources/com/ardublock/block/sim1.png b/src/main/resources/com/ardublock/block/sim1.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ac8c5a3c6c245ee2cf0c54f4f36425215769e63
Binary files /dev/null and b/src/main/resources/com/ardublock/block/sim1.png differ
diff --git a/src/main/resources/com/ardublock/block/sim2.png b/src/main/resources/com/ardublock/block/sim2.png
new file mode 100644
index 0000000000000000000000000000000000000000..47bf280ef4f406058a144099ca00c0568470cd1c
Binary files /dev/null and b/src/main/resources/com/ardublock/block/sim2.png differ
diff --git a/src/main/resources/com/ardublock/block/sim3.png b/src/main/resources/com/ardublock/block/sim3.png
new file mode 100644
index 0000000000000000000000000000000000000000..be11bf21bc5a098da9d4be752b88a02b51fcf679
Binary files /dev/null and b/src/main/resources/com/ardublock/block/sim3.png differ
diff --git a/src/main/resources/com/ardublock/block/sim4.png b/src/main/resources/com/ardublock/block/sim4.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d8ad35c5eb759a3c9aa50e0dd320792b32fa103
Binary files /dev/null and b/src/main/resources/com/ardublock/block/sim4.png differ
diff --git a/src/main/resources/com/ardublock/block/upload1.png b/src/main/resources/com/ardublock/block/upload1.png
new file mode 100644
index 0000000000000000000000000000000000000000..92b790ec54cb1f1df3f312a401ce7b1409d6d540
Binary files /dev/null and b/src/main/resources/com/ardublock/block/upload1.png differ
diff --git a/src/main/resources/com/ardublock/block/upload2.png b/src/main/resources/com/ardublock/block/upload2.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1bc63bfa10bec015952f42ad2837320d8a300e3
Binary files /dev/null and b/src/main/resources/com/ardublock/block/upload2.png differ
diff --git a/src/main/resources/com/ardublock/block/upload3.png b/src/main/resources/com/ardublock/block/upload3.png
new file mode 100644
index 0000000000000000000000000000000000000000..2e79b00b35ccc18b68146e0ef16aa003cf634ba6
Binary files /dev/null and b/src/main/resources/com/ardublock/block/upload3.png differ
diff --git a/src/main/resources/com/ardublock/block/uploadSim1.png b/src/main/resources/com/ardublock/block/uploadSim1.png
new file mode 100644
index 0000000000000000000000000000000000000000..0aa8ae0af0d6659daf89293b725392250ebb1630
Binary files /dev/null and b/src/main/resources/com/ardublock/block/uploadSim1.png differ
diff --git a/src/main/resources/com/ardublock/block/uploadSim2.png b/src/main/resources/com/ardublock/block/uploadSim2.png
new file mode 100644
index 0000000000000000000000000000000000000000..f46b182b4862a1d453e3c9c93bbc62b8dc02cf38
Binary files /dev/null and b/src/main/resources/com/ardublock/block/uploadSim2.png differ
diff --git a/src/main/resources/com/ardublock/block/uploadSim3.png b/src/main/resources/com/ardublock/block/uploadSim3.png
new file mode 100644
index 0000000000000000000000000000000000000000..a311c6df74a334b9f2015948dd69b085229839db
Binary files /dev/null and b/src/main/resources/com/ardublock/block/uploadSim3.png differ