diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
index 1ad02a367c7a457e081958a4693bd4964f761953..f241aa5b02bf8f45962edc1c81b78279efcc3c39 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
+++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
@@ -21,6 +21,7 @@ main.menuitem.about=
 main.menuitem.website=Webseite besuchen...
 main.menuitem.senderror=Fehler senden...
 main.menuitem.fullScreen=Vollbild
+main.menuitem.layout=Layout
 
 main.label.live=Live
 
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml
index b4012e7bca10de9bd6c952530f19e84091e153ae..a46415f06e9ba5bea9ef83657e28d61e9a18dee0 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml
@@ -61,6 +61,7 @@
       </Menu>
       <Menu mnemonicParsing="false" text="%main.menu.view">
          <items>
+                  <Menu fx:id="layoutMenu" mnemonicParsing="false" text="%main.menuitem.layout" />
             <CheckMenuItem fx:id="alwaysOnTopItem" mnemonicParsing="false" onAction="#alwaysOnTopItemHandler" text="%main.menuitem.onTop" />
             <CheckMenuItem fx:id="fullScreenMenuItem" mnemonicParsing="false" onAction="#fullScreenMenuItemHandler" text="%main.menuitem.fullScreen">
                <accelerator>
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/main/touch/header.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/main/touch/header.fxml
index b2c6aada340f2af7f12bb425ed9960707314ff58..6bfb1a31f55408e838d5f8bb5d506aefb4f7077b 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/view/main/touch/header.fxml
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/main/touch/header.fxml
@@ -6,7 +6,6 @@
 <?import javafx.scene.input.*?>
 <?import javafx.scene.text.*?>
 
-
 <HBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <children>
 <MenuBar fx:id="menuBar" maxHeight="1.7976931348623157E308" prefWidth="600.0" HBox.hgrow="ALWAYS">
@@ -63,6 +62,7 @@
       </Menu>
       <Menu mnemonicParsing="false" text="%main.menu.view">
          <items>
+                  <Menu fx:id="layoutMenu" mnemonicParsing="false" text="%main.menuitem.layout" />
             <CheckMenuItem fx:id="alwaysOnTopItem" mnemonicParsing="false" onAction="#alwaysOnTopItemHandler" text="%main.menuitem.onTop" />
             <CheckMenuItem fx:id="fullScreenMenuItem" mnemonicParsing="false" onAction="#fullScreenMenuItemHandler" text="%main.menuitem.fullScreen">
                <accelerator>
diff --git a/PlayWall/src/de/tobias/playpad/PlayPadMain.java b/PlayWall/src/de/tobias/playpad/PlayPadMain.java
index 191db4720c2d3ca11aaf8e0d5f1c28679619f0ae..dbf437a19b17e708d86a77cc6fb249076d25a634 100644
--- a/PlayWall/src/de/tobias/playpad/PlayPadMain.java
+++ b/PlayWall/src/de/tobias/playpad/PlayPadMain.java
@@ -253,6 +253,7 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pr
 			registryCollection.getMappers().loadComponentsFromFile("de/tobias/playpad/components/Mapper.xml");
 			registryCollection.getPadContents().loadComponentsFromFile("de/tobias/playpad/components/PadContent.xml");
 			registryCollection.getTriggerItems().loadComponentsFromFile("de/tobias/playpad/components/Trigger.xml");
+			registryCollection.getMainLayouts().loadComponentsFromFile("de/tobias/playpad/components/Layout.xml");
 
 			// Set Default
 			registryCollection.getAudioHandlers().setDefaultID(JavaFXAudioHandler.NAME);
diff --git a/PlayWall/src/de/tobias/playpad/RegistryCollectionImpl.java b/PlayWall/src/de/tobias/playpad/RegistryCollectionImpl.java
index adbf609507f9911b26550ad8face01e7ed85959a..672126602794356c2ed5400a396c02301adb8f41 100644
--- a/PlayWall/src/de/tobias/playpad/RegistryCollectionImpl.java
+++ b/PlayWall/src/de/tobias/playpad/RegistryCollectionImpl.java
@@ -11,6 +11,7 @@ import de.tobias.playpad.registry.DefaultComponentRegistry;
 import de.tobias.playpad.registry.DefaultRegistry;
 import de.tobias.playpad.registry.Registry;
 import de.tobias.playpad.tigger.TriggerItemConnect;
+import de.tobias.playpad.view.main.MainLayoutConnect;
 
 public class RegistryCollectionImpl implements RegistryCollection {
 
@@ -21,6 +22,7 @@ public class RegistryCollectionImpl implements RegistryCollection {
 	private Registry<MapperConnect> mapperRegistry;
 	private PadContentRegistry padContentRegistry;
 	private Registry<TriggerItemConnect> triggerItemRegistry;
+	private Registry<MainLayoutConnect> mainLayoutRegistry;
 
 	public RegistryCollectionImpl() {
 		actionRegistry = new ComponentRegistry<>("Action");
@@ -30,62 +32,47 @@ public class RegistryCollectionImpl implements RegistryCollection {
 		mapperRegistry = new ComponentRegistry<>("Mapper");
 		padContentRegistry = new PadContentRegistry("PadContent");
 		triggerItemRegistry = new ComponentRegistry<>("Trigger");
+		mainLayoutRegistry = new ComponentRegistry<>("MainLayout");
 	}
 
-	/* (non-Javadoc)
-	 * @see de.tobias.playpad.RegistryCollection#getActionRegistry()
-	 */
 	@Override
 	public Registry<ActionConnect> getActions() {
 		return actionRegistry;
 	}
 
-	/* (non-Javadoc)
-	 * @see de.tobias.playpad.RegistryCollection#getAudioHandlerRegistry()
-	 */
 	@Override
 	public AudioRegistry getAudioHandlers() {
 		return audioHandlerRegistry;
 	}
 
-	/* (non-Javadoc)
-	 * @see de.tobias.playpad.RegistryCollection#getDragModeRegistry()
-	 */
 	@Override
 	public Registry<PadDragMode> getDragModes() {
 		return dragModeRegistry;
 	}
 
-	/* (non-Javadoc)
-	 * @see de.tobias.playpad.RegistryCollection#getLayoutRegistry()
-	 */
 	@Override
 	public DefaultRegistry<DesignConnect> getDesigns() {
 		return layoutRegistry;
 	}
 
-	/* (non-Javadoc)
-	 * @see de.tobias.playpad.RegistryCollection#getMapperRegistry()
-	 */
 	@Override
 	public Registry<MapperConnect> getMappers() {
 		return mapperRegistry;
 	}
 
-	/* (non-Javadoc)
-	 * @see de.tobias.playpad.RegistryCollection#getPadContentRegistry()
-	 */
 	@Override
 	public PadContentRegistry getPadContents() {
 		return padContentRegistry;
 	}
 
-	/* (non-Javadoc)
-	 * @see de.tobias.playpad.RegistryCollection#getTriggerItemRegistry()
-	 */
 	@Override
 	public Registry<TriggerItemConnect> getTriggerItems() {
 		return triggerItemRegistry;
 	}
+	
+	@Override
+	public Registry<MainLayoutConnect> getMainLayouts() {
+		return mainLayoutRegistry;
+	}
 
 }
diff --git a/PlayWall/src/de/tobias/playpad/components/Layout.xml b/PlayWall/src/de/tobias/playpad/components/Layout.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8829c91086e0ec442b99b8deb875e8cd24952de8
--- /dev/null
+++ b/PlayWall/src/de/tobias/playpad/components/Layout.xml
@@ -0,0 +1,4 @@
+<Actions>
+	<Component id="Desktop">de.tobias.playpad.layout.desktop.DesktopMainLayoutConnect</Component>
+	<Component id="Touch">de.tobias.playpad.layout.touch.TouchMainLayoutConnect</Component>
+</Actions>
\ No newline at end of file
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java
index 1fe791e98f5879311fe8bae04c53aae6d4b404a4..ab47b0db75b41ca03ed53f0977481eb6d350216b 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java
@@ -14,7 +14,7 @@ public class DesktopMainLayoutConnect implements MainLayoutConnect {
 
 	@Override
 	public String name() {
-		return null;
+		return "Desktop Modus"; // TODO Localize
 	}
 
 	@Override
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index 2b9352380dd3ca2addf045b8381dfbdf91283275..d053ee3719343657172ebc40c99edea966a26b08 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -10,10 +10,12 @@ import de.tobias.playpad.settings.ProfileNotFoundException;
 import de.tobias.playpad.settings.ProfileSettings;
 import de.tobias.playpad.view.main.MenuType;
 import de.tobias.playpad.viewcontroller.dialog.ImportDialog;
+import de.tobias.playpad.viewcontroller.main.BasicMenuToolbarViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.utils.util.Localization;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
+import javafx.scene.Node;
 import javafx.scene.control.Button;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.Slider;
@@ -48,7 +50,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 
 	@Override
 	public void setLocked(boolean looked) {
-		// TODO Implement
+		dndModeMenuItem.setDisable(looked);
 	}
 
 	@Override
@@ -60,32 +62,49 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	public void removeToolbarIcon(Image icon) {
 		// TODO Implement
 	}
+	
+	@Override
+	public void addToolbarItem(Node node) {
+		iconHbox.getChildren().add(node);
+	}
+	
+	@Override
+	public void removeToolbarItem(Node node) {
+		iconHbox.getChildren().remove(node);
+	}
 
 	@Override
 	public void addMenuItem(MenuItem item, MenuType type) {
-		// TODO Implement
+		if (type == MenuType.EXTENSION) {
+			extensionMenu.getItems().add(item);
+		} else if (type == MenuType.SETTINGS) {			
+			// TODO Implement
+		}
 	}
 
 	@Override
 	public void removeMenuItem(MenuItem item) {
+		if (extensionMenu.getItems().contains(item))
+			extensionMenu.getItems().remove(item);
+		
 		// TODO Implement
 	}
 
 	@Override
 	public boolean isAlwaysOnTopActive() {
-		// TODO Imeplement
-		return false;
+		return alwaysOnTopItem.isSelected();
 	}
 
 	@Override
 	public boolean isFullscreenActive() {
-		//TODO Implement
-		return false;
+		return fullScreenMenuItem.isSelected();
 	}
 
 	@Override
 	public void deinit() {
-		// TODO Implement
+		super.deinit();
+		toolbarHBox.prefWidthProperty().unbind();
+		toolbarHBox.prefHeightProperty().unbind();
 	}
 	
 	@Override
diff --git a/PlayWall/src/de/tobias/playpad/layout/touch/TouchMainLayoutConnect.java b/PlayWall/src/de/tobias/playpad/layout/touch/TouchMainLayoutConnect.java
index 7a4351cfdc65841020a1da47e4f6f0193b5de484..8b231ae891e57d9da36367c854c5757f55ccb307 100644
--- a/PlayWall/src/de/tobias/playpad/layout/touch/TouchMainLayoutConnect.java
+++ b/PlayWall/src/de/tobias/playpad/layout/touch/TouchMainLayoutConnect.java
@@ -14,7 +14,7 @@ public class TouchMainLayoutConnect implements MainLayoutConnect {
 
 	@Override
 	public String name() {
-		return null;
+		return "Touch Modus"; // TODO Localize
 	}
 
 	@Override
diff --git a/PlayWall/src/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
index ed5995a8e00b133464174fc9c3968efe8d99e726..eea53c7dd3d9abe8fc3c625901b9b0379a5777a7 100644
--- a/PlayWall/src/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
@@ -1,10 +1,11 @@
 package de.tobias.playpad.layout.touch;
 
 import de.tobias.playpad.PlayPadMain;
-import de.tobias.playpad.layout.desktop.BasicMenuToolbarViewController;
 import de.tobias.playpad.view.main.MenuType;
+import de.tobias.playpad.viewcontroller.main.BasicMenuToolbarViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import javafx.event.ActionEvent;
+import javafx.scene.Node;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.Slider;
 import javafx.scene.image.Image;
@@ -35,6 +36,18 @@ public class TouchMenuToolbarViewController extends BasicMenuToolbarViewControll
 
 	}
 
+	@Override
+	public void addToolbarItem(Node node) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void removeToolbarItem(Node node) {
+		// TODO Auto-generated method stub
+
+	}
+
 	@Override
 	public void addMenuItem(MenuItem item, MenuType type) {
 
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/BasicMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
similarity index 86%
rename from PlayWall/src/de/tobias/playpad/layout/desktop/BasicMenuToolbarViewController.java
rename to PlayWall/src/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
index 40506594ff84fae081f337b7821715e11b5a5cc4..7f6a66274c4f2a69a75e48bd5e691ba5daf8f9dc 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/BasicMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
@@ -1,4 +1,4 @@
-package de.tobias.playpad.layout.desktop;
+package de.tobias.playpad.viewcontroller.main;
 
 import java.awt.Desktop;
 import java.io.IOException;
@@ -9,16 +9,19 @@ import java.util.ResourceBundle;
 
 import de.tobias.playpad.AppUserInfoStrings;
 import de.tobias.playpad.PlayPadMain;
+import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.Strings;
 import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.pad.view.IPadViewV2;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.project.ProjectNotFoundException;
 import de.tobias.playpad.project.ProjectReference;
+import de.tobias.playpad.registry.NoSuchComponentException;
+import de.tobias.playpad.registry.Registry;
 import de.tobias.playpad.settings.Profile;
-import de.tobias.playpad.settings.ProfileListener;
 import de.tobias.playpad.settings.ProfileNotFoundException;
 import de.tobias.playpad.settings.ProfileSettings;
+import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.dialog.ImportDialog;
 import de.tobias.playpad.viewcontroller.dialog.NewProjectDialog;
@@ -26,8 +29,6 @@ import de.tobias.playpad.viewcontroller.dialog.PluginViewController;
 import de.tobias.playpad.viewcontroller.dialog.PrintDialog;
 import de.tobias.playpad.viewcontroller.dialog.ProfileViewController;
 import de.tobias.playpad.viewcontroller.dialog.ProjectManagerDialog;
-import de.tobias.playpad.viewcontroller.main.IMainViewController;
-import de.tobias.playpad.viewcontroller.main.MenuToolbarViewController;
 import de.tobias.playpad.viewcontroller.option.SettingsViewController;
 import de.tobias.playpad.viewcontroller.pad.PadDragListener;
 import de.tobias.utils.application.ApplicationInfo;
@@ -40,8 +41,6 @@ import de.tobias.utils.util.Localization;
 import de.tobias.utils.util.Worker;
 import de.tobias.utils.util.net.FileUpload;
 import javafx.application.Platform;
-import javafx.beans.value.ChangeListener;
-import javafx.beans.value.ObservableValue;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.fxml.FXML;
@@ -52,13 +51,15 @@ import javafx.scene.control.Label;
 import javafx.scene.control.Menu;
 import javafx.scene.control.MenuBar;
 import javafx.scene.control.MenuItem;
+import javafx.scene.control.RadioMenuItem;
 import javafx.scene.control.Slider;
+import javafx.scene.control.ToggleGroup;
 import javafx.scene.control.ToolBar;
 import javafx.scene.layout.HBox;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 
-public abstract class BasicMenuToolbarViewController extends MenuToolbarViewController implements ProfileListener, EventHandler<ActionEvent> {
+public abstract class BasicMenuToolbarViewController extends MenuToolbarViewController implements EventHandler<ActionEvent> {
 
 	// Menu
 	@FXML protected Label volumeUpLabel;
@@ -78,11 +79,7 @@ public abstract class BasicMenuToolbarViewController extends MenuToolbarViewCont
 	@FXML protected Label volumeDownLabel;
 	@FXML protected CheckMenuItem dndModeMenuItem;
 	@FXML protected CheckMenuItem alwaysOnTopItem;
-
-	// Toolbar
-	private Label lockedLabel;
-
-	private ChangeListener<Boolean> lockedListener;
+	@FXML protected Menu layoutMenu;
 
 	// window references
 	private IMainViewController mainViewController;
@@ -91,27 +88,10 @@ public abstract class BasicMenuToolbarViewController extends MenuToolbarViewCont
 	public BasicMenuToolbarViewController(String name, String path, ResourceBundle localization, IMainViewController mainViewController) {
 		super(name, path, localization);
 		this.mainViewController = mainViewController;
+	}
 
-		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
-		Profile.registerListener(this); // Update, wenn sich das Profil ändert (remove Listener & add Listener)
-
-		// Listener
-		lockedListener = new ChangeListener<Boolean>() {
-
-			@Override
-			public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
-				dndModeMenuItem.setDisable(newValue);
-			}
-		};
-		profileSettings.lockedProperty().addListener(lockedListener);
-		lockedListener.changed(profileSettings.lockedProperty(), null, profileSettings.isLocked());
-
-		// Info Icons
-		lockedLabel = new Label();
-		lockedLabel.setGraphic(new FontIcon(FontAwesomeType.LOCK));
-		lockedListener.changed(profileSettings.lockedProperty(), null, profileSettings.isLocked());
-
-		// Icons Volume
+	@Override
+	public void init() {
 		volumeDownLabel.setGraphic(new FontIcon("volume-item", FontAwesomeType.VOLUME_DOWN));
 		volumeUpLabel.setGraphic(new FontIcon("volume-item", FontAwesomeType.VOLUME_UP));
 
@@ -120,22 +100,29 @@ public abstract class BasicMenuToolbarViewController extends MenuToolbarViewCont
 			volumeSlider.setValue(volumeSlider.getValue() - ev.getDeltaY() * 0.001);
 			volumeSlider.setValue(volumeSlider.getValue() + ev.getDeltaX() * 0.001);
 		});
-		
-		volumeSlider.valueProperty().addListener((a, b, c) ->
-		{
-			mainViewController.setPadVolume(c.doubleValue());
-		});
+
+		Registry<MainLayoutConnect> mainLayouts = PlayPadPlugin.getRegistryCollection().getMainLayouts();
+		ToggleGroup group = new ToggleGroup();
+
+		for (String layoutType : mainLayouts.getTypes()) {
+			try {
+				MainLayoutConnect connect = mainLayouts.getComponent(layoutType);
+
+				RadioMenuItem item = new RadioMenuItem(connect.name());
+				group.getToggles().add(item);
+				item.setOnAction((e) ->
+				{
+					mainViewController.setMainLayout(connect);
+				});
+				layoutMenu.getItems().add(item);
+			} catch (NoSuchComponentException e) {
+				e.printStackTrace();
+			}
+		}
 	}
 
-	// Profile Listener
 	@Override
-	public void reloadSettings(Profile oldProfile, Profile currentProfile) {
-		if (oldProfile != null) {
-			oldProfile.getProfileSettings().lockedProperty().removeListener(lockedListener);
-		}
-		ProfileSettings profileSettings = currentProfile.getProfileSettings();
-		profileSettings.lockedProperty().addListener(lockedListener);
-		lockedListener.changed(profileSettings.lockedProperty(), null, profileSettings.isLocked());
+	public void deinit() {
 	}
 
 	// Basic Event Handler
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/LockedListener.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/LockedListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7b8dbacdc22c070b2a5601f1c8b08876c78cfd4
--- /dev/null
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/LockedListener.java
@@ -0,0 +1,34 @@
+package de.tobias.playpad.viewcontroller.main;
+
+import de.tobias.utils.ui.icon.FontAwesomeType;
+import de.tobias.utils.ui.icon.FontIcon;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.scene.control.Label;
+
+public class LockedListener implements ChangeListener<Boolean> {
+
+	private IMainViewController mainViewController;
+
+	private Label lockedLabel;
+
+	public LockedListener(IMainViewController mainViewController) {
+		this.mainViewController = mainViewController;
+
+		lockedLabel = new Label();
+		lockedLabel.setGraphic(new FontIcon(FontAwesomeType.LOCK));
+	}
+
+	@Override
+	public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
+		if (mainViewController.getMenuToolbarController() != null) {
+			MenuToolbarViewController menuToolbarViewController = mainViewController.getMenuToolbarController();
+			menuToolbarViewController.setLocked(newValue);
+			if (newValue) {
+				menuToolbarViewController.addToolbarItem(lockedLabel);
+			} else {
+				menuToolbarViewController.removeToolbarItem(lockedLabel);
+			}
+		}
+	}
+}
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
index 9b2537d7a4460e35280f456428a888cd46e7e7e6..6cc641e9b9b0f28a0e591a06c1889cf232382184 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
@@ -33,6 +33,7 @@ import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileListener;
 import de.tobias.playpad.settings.ProfileSettings;
 import de.tobias.playpad.view.PadView;
+import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.playpad.viewcontroller.IPadView;
 import de.tobias.playpad.viewcontroller.dialog.ErrorSummaryDialog;
 import de.tobias.playpad.viewcontroller.pad.PadDragListener;
@@ -609,7 +610,8 @@ public class MainViewController extends ViewController implements IMainViewContr
 			{
 				try {
 					Thread.sleep(PlayPadMain.displayTimeMillis * 2);
-				} catch (Exception e) {}
+				} catch (Exception e) {
+				}
 				Platform.runLater(() ->
 				{
 					toolbarController.getToolbarHBox().setOpacity(1);
@@ -731,4 +733,10 @@ public class MainViewController extends ViewController implements IMainViewContr
 		// TODO Auto-generated method stub
 		return null;
 	}
+
+	@Override
+	public void setMainLayout(MainLayoutConnect mainLayoutConnect) {
+		// TODO Auto-generated method stub
+
+	}
 }
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
index 752fb052d3b21c0d3132a31394179b02cc11d0aa..ed2fa39868b0897924f5a00085734f73871b2922 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
@@ -84,12 +84,20 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 	// Style
 	private Color gridColor;
 
+	// Listener
+	private VolumeChangeListener volumeChangeListener;
+	private LockedListener lockedListener;
+
 	public MainViewControllerV2(List<WindowListener<IMainViewController>> listener) {
 		super("mainViewV2", "de/tobias/playpad/assets/view/main/", null, PlayPadMain.getUiResourceBundle());
 		padViews = new ArrayList<>();
 
 		setMainLayout(new DesktopMainLayoutConnect()); // DEBUG
 
+		// Init Listener
+		volumeChangeListener = new VolumeChangeListener(this);
+		lockedListener = new LockedListener(this);
+
 		Profile.registerListener(this);
 		reloadSettings(null, Profile.currentProfile());
 
@@ -430,27 +438,36 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 	public void reloadSettings(Profile old, Profile currentProfile) {
 		createPadViews();
 
-		final DoubleProperty valueProperty = menuToolbarViewController.getVolumeSlider().valueProperty();
+		final DoubleProperty volumeFaderValueProperty = menuToolbarViewController.getVolumeSlider().valueProperty();
 
 		if (old != null) {
 			// Unbind Volume Slider
-			valueProperty.unbindBidirectional(old.getProfileSettings().volumeProperty());
+			volumeFaderValueProperty.unbindBidirectional(old.getProfileSettings().volumeProperty());
+			volumeFaderValueProperty.removeListener(volumeChangeListener);
+
 			// Clear Feedback on Devie (LaunchPad Light off)
 			old.getMappings().getActiveMapping().getActions().forEach(action -> action.clearFeedback());
+			
+			// LockedListener
+			old.getProfileSettings().lockedProperty().removeListener(lockedListener);
 		}
 
 		// Volume
-		valueProperty.bindBidirectional(currentProfile.getProfileSettings().volumeProperty());
+		volumeFaderValueProperty.bindBidirectional(currentProfile.getProfileSettings().volumeProperty());
+		volumeFaderValueProperty.addListener(volumeChangeListener);
 
-		final ProfileSettings profilSettings = currentProfile.getProfileSettings();
+		final ProfileSettings profileSettings = currentProfile.getProfileSettings();
 		final Mapping activeMapping = currentProfile.getMappings().getActiveMapping();
+		
+		// LockedListener
+		profileSettings.lockedProperty().addListener(lockedListener);
 
 		// MIDI
-		if (profilSettings.isMidiActive() && profilSettings.getMidiDevice() != null) {
+		if (profileSettings.isMidiActive() && profileSettings.getMidiDevice() != null) {
 			// Load known MIDI Device
 			Worker.runLater(() ->
 			{
-				loadMidiDevice(profilSettings.getMidiDevice());
+				loadMidiDevice(profileSettings.getMidiDevice());
 
 				applyColorsToMappers();
 
@@ -464,7 +481,7 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 				});
 			});
 		}
-		
+
 		loadUserCss();
 		if (old != null && currentProfile != null) {
 			showPage(currentPageShowing);
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/VolumeChangeListener.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/VolumeChangeListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..4549271bf4fcc3fdee3d56e6af04d85b76a54af7
--- /dev/null
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/VolumeChangeListener.java
@@ -0,0 +1,18 @@
+package de.tobias.playpad.viewcontroller.main;
+
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+
+public class VolumeChangeListener implements ChangeListener<Number> {
+
+	private IMainViewController mainViewController;
+
+	public VolumeChangeListener(IMainViewController mainViewController) {
+		this.mainViewController = mainViewController;
+	}
+
+	@Override
+	public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
+		mainViewController.setPadVolume(newValue.doubleValue());
+	}
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/RegistryCollection.java b/PlayWallCore/src/de/tobias/playpad/RegistryCollection.java
index 43f0017afa74b66f6087534c57355b6cc7f90784..3030315552ee1c4f37f28b1f96518a76e9e9b79e 100644
--- a/PlayWallCore/src/de/tobias/playpad/RegistryCollection.java
+++ b/PlayWallCore/src/de/tobias/playpad/RegistryCollection.java
@@ -9,6 +9,7 @@ import de.tobias.playpad.pad.drag.PadDragMode;
 import de.tobias.playpad.registry.DefaultRegistry;
 import de.tobias.playpad.registry.Registry;
 import de.tobias.playpad.tigger.TriggerItemConnect;
+import de.tobias.playpad.view.main.MainLayoutConnect;
 
 /**
  * Schnittstelle für die einzelen Registry. Hier sind alle Registries gesammelt, damit Komponenten registriert werden können. Die
@@ -34,4 +35,5 @@ public interface RegistryCollection {
 
 	public Registry<TriggerItemConnect> getTriggerItems();
 
+	public Registry<MainLayoutConnect> getMainLayouts();
 }
\ No newline at end of file
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
index 8727d7b22a7c2121f96ed64972dd42986b05751c..52582987afb9676152faca61a6cca2a09302220d 100644
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
@@ -5,6 +5,7 @@ import java.util.List;
 import de.tobias.playpad.midi.MidiListener;
 import de.tobias.playpad.pad.view.IPadViewV2;
 import de.tobias.playpad.project.Project;
+import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.utils.ui.NotificationHandler;
 import javafx.event.EventHandler;
 import javafx.event.EventType;
@@ -73,4 +74,6 @@ public interface IMainViewController extends NotificationHandler {
 	public MenuToolbarViewController getMenuToolbarController();
 
 	public void setPadVolume(double doubleValue);
+	
+	public void setMainLayout(MainLayoutConnect mainLayoutConnect);
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
index b28e343d23d923315f125c2ac7e88d1db25788a9..1bd8bf92067a6042a0394334ca7d8b99ad15256e 100644
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
@@ -5,12 +5,14 @@ import java.util.ResourceBundle;
 import de.tobias.playpad.settings.ProfileSettings;
 import de.tobias.playpad.view.main.MenuType;
 import de.tobias.utils.ui.ContentViewController;
+import javafx.scene.Node;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.Slider;
 import javafx.scene.image.Image;
 
 /**
- * Abstrakter ViewController für das Menu und die Toolbar des Hauptfenster. Jede Implementierung kann die GUI selbst bestimmen.
+ * Abstrakter ViewController für das Menu und die Toolbar des Hauptfenster. Jede Implementierung kann die GUI selbst
+ * bestimmen.
  * 
  * @author tobias
  *
@@ -45,8 +47,8 @@ public abstract class MenuToolbarViewController extends ContentViewController {
 	}
 
 	/**
-	 * Wird von MainViwController aufgerufen, wenn die Buttons für die einzelnen Seiten neu erstellt werden müssen. Das ist der Fall beim
-	 * laden eines Projektes und bei Änderungen an den Einstellungen.
+	 * Wird von MainViwController aufgerufen, wenn die Buttons für die einzelnen Seiten neu erstellt werden müssen. Das
+	 * ist der Fall beim laden eines Projektes und bei Änderungen an den Einstellungen.
 	 */
 	public abstract void initPageButtons();
 
@@ -55,8 +57,8 @@ public abstract class MenuToolbarViewController extends ContentViewController {
 	 */
 
 	/**
-	 * Mit dieser Methode werden mögliche Eingaben vom Nutzer geblocked (Beispiel: GUI Element disable). Diese Methode wird bei Änderung der
-	 * Einstellung aufgerufen.
+	 * Mit dieser Methode werden mögliche Eingaben vom Nutzer geblocked (Beispiel: GUI Element disable). Diese Methode
+	 * wird bei Änderung der Einstellung aufgerufen.
 	 * 
 	 * @param looked
 	 *            true locked, false unlocked
@@ -74,6 +76,14 @@ public abstract class MenuToolbarViewController extends ContentViewController {
 	 */
 	public abstract void addToolbarIcon(Image icon);
 
+	/**
+	 * Fügt ein Node zur Toolbar hinzu.
+	 * 
+	 * @param node
+	 *            node
+	 */
+	public abstract void addToolbarItem(Node node);
+
 	/**
 	 * Entfernt ein spezielles Icon von der GUI.
 	 * 
@@ -82,6 +92,15 @@ public abstract class MenuToolbarViewController extends ContentViewController {
 	 */
 	public abstract void removeToolbarIcon(Image icon);
 
+	/**
+	 * Entfernt das Toolbar Item.
+	 * 
+	 * @param node
+	 *            node
+	 * @see MenuToolbarViewController#addToolbarItem(Node)
+	 */
+	public abstract void removeToolbarItem(Node node);
+
 	// Menu Item
 	/**
 	 * Fügt ein MenuItem zu einem speziellen Menu hinzu.