diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties
index 6e553fe7b55f64165bef092e56959af31f7551a3..9d1ef416099bc0f14fe5a98243cfd5bf81b02e33 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties
+++ b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties
@@ -22,6 +22,7 @@ UI.Dialog.Launch.Title=Projekt w
 UI.Window.Main.Title=Play Wall [Projekt: {} - Profil: {}]
 UI.Window.Changelog.Title=Was ist neu?
 UI.Window.Settings.Title=Einstellungen - {}
+UI.Window.GlobalSettings.Title=Programm Einstellungen
 UI.Window.PadSettings.Title=Kachel Einstellungen - {} | {}
 UI.Window.PadSettings.Title.Empty=Kachel Einstellungen - {}
 UI.Dialog.DragAndDrop.Title=Drag and Drop
@@ -175,6 +176,9 @@ Mapper.Midi.toString=Midi {}
 # Das ist Midi und Tastatur gemeinsam
 Info.Mapper.PressKey=Dr�cken Sie eine Taste auf dem Ger�t.
 
+#UI - Settings - Alerts
+UI.Settings.Alert.NewKeyShortcut.Text=Dr�cken Sie bitte die gew�nschte Tastenkombination. (Erlaubt sind Buchstaben, Ziffern und Funktionstasten).
+
 # UI - Window - PadSettings
 UI.Window.PadSettings.General.Title=Allgemein
 UI.Window.PadSettings.Player.Title=Player
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 cd795228fbeda47c5c6fb90924bd95065b6bf5db..47b3ca8394b5967a3d91c2933efd33959882dd22 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
+++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
@@ -17,6 +17,7 @@ main.menuitem.plugins=Erweiterungen...
 main.menuitem.dnd=Bearbeitungsmodus
 main.menuitem.errors=Fehlerbericht anzeigen...
 main.menuitem.settings=Einstellungen...
+main.menuitem.globalsettings=Globale (Programm) Einstellungen
 main.menuitem.about=�ber Play Wall...
 main.menuitem.website=Webseite besuchen...
 main.menuitem.senderror=Fehler senden...
@@ -75,6 +76,14 @@ settings.update.label.channel=Update Kanal:
 settings.update.label.infoC=Program
 settings.update.label.infoE=Erweiterung
 
+settings.keys.label.headline=Tastenkombinationen
+settings.keys.label.name=Name:
+settings.keys.label.shortcut=Kurzbefehl:
+settings.keys.button.change=Neu
+settings.keys.table.name=Name
+settings.keys.table.shortcut=Kurzbefehl
+settings.keys.textfieldsearch=Suchen...
+
 settings.button.finish=Fertig
 settings.checkbox.activate=Aktivieren
 
diff --git a/PlayWall/assets/de/tobias/playpad/assets/modern_style.css b/PlayWall/assets/de/tobias/playpad/assets/modern_style.css
index e6696ef97cc54d85301cd95b4ee53c8d2789b095..84ae1898d566a5f64fa01c995e0619c2c561284f 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/modern_style.css
+++ b/PlayWall/assets/de/tobias/playpad/assets/modern_style.css
@@ -146,4 +146,4 @@
 
 .progress-indicator .percentage {
     -fx-fill: white;
-}
\ No newline at end of file
+}
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 9d5745755f8bbe303e3d406e6f8b4d0a8ea6c951..28fd4171e78dfaae93f973a26f6e21f1c64c1f94 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
@@ -12,18 +12,18 @@
    <menus>
       <Menu mnemonicParsing="false" text="%main.menu.file">
          <items>
-            <MenuItem mnemonicParsing="false" onAction="#newDocumentHandler" text="%main.menuitem.new">
+            <MenuItem fx:id="newProjectMenuItem" mnemonicParsing="false" onAction="#newDocumentHandler" text="%main.menuitem.new">
                <accelerator>
                   <KeyCodeCombination alt="UP" code="N" control="UP" meta="UP" shift="UP" shortcut="DOWN" />
                </accelerator>
             </MenuItem>
             <Menu fx:id="recentOpenMenu" mnemonicParsing="false" text="%main.menuitem.recentFiles" />
-            <MenuItem mnemonicParsing="false" onAction="#openDocumentHandler" text="%main.menuitem.project">
+            <MenuItem fx:id="openProjectMenuItem" mnemonicParsing="false" onAction="#openDocumentHandler" text="%main.menuitem.project">
                <accelerator>
                   <KeyCodeCombination alt="UP" code="O" control="UP" meta="UP" shift="UP" shortcut="DOWN" />
                </accelerator>
             </MenuItem>
-            <MenuItem fx:id="saveMenuItem" mnemonicParsing="false" onAction="#saveMenuHandler" text="%main.menuitem.save">
+            <MenuItem fx:id="saveProjectMenuItem" mnemonicParsing="false" onAction="#saveMenuHandler" text="%main.menuitem.save">
                <accelerator>
                   <KeyCodeCombination alt="UP" code="S" control="UP" meta="UP" shift="UP" shortcut="DOWN" />
                </accelerator>
@@ -31,7 +31,7 @@
             <SeparatorMenuItem mnemonicParsing="false" />
             <MenuItem fx:id="profileMenu" mnemonicParsing="false" onAction="#profileMenuHandler" text="%main.menuitem.profile" />
             <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem mnemonicParsing="false" onAction="#printMenuHandler" text="%main.menuitem.print">
+            <MenuItem fx:id="printProjectMenuItem" mnemonicParsing="false" onAction="#printMenuHandler" text="%main.menuitem.print">
                <accelerator>
                   <KeyCodeCombination alt="UP" code="P" control="UP" meta="UP" shift="UP" shortcut="DOWN" />
                </accelerator></MenuItem>
@@ -50,13 +50,18 @@
                </accelerator>
             </MenuItem>
             <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem mnemonicParsing="false" onAction="#pluginMenuItemHandler" text="%main.menuitem.plugins" />
+            <MenuItem fx:id="pluginMenu" mnemonicParsing="false" onAction="#pluginMenuItemHandler" text="%main.menuitem.plugins" />
             <SeparatorMenuItem mnemonicParsing="false" />
             <MenuItem fx:id="settingsMenuItem" mnemonicParsing="false" onAction="#settingsHandler" text="%main.menuitem.settings">
                <accelerator>
                   <KeyCodeCombination alt="UP" code="COMMA" control="UP" meta="UP" shift="UP" shortcut="DOWN" />
                </accelerator>
             </MenuItem>
+                  <MenuItem fx:id="globalSettingsMenuItem" mnemonicParsing="false" onAction="#globalSettingsHandler" text="%main.menuitem.globalsettings">
+                     <accelerator>
+                        <KeyCodeCombination alt="UP" code="COMMA" control="UP" meta="UP" shift="DOWN" shortcut="DOWN" />
+                     </accelerator>
+                  </MenuItem>
          </items>
       </Menu>
       <Menu mnemonicParsing="false" text="%main.menu.view">
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/global/globalSettingsView.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/globalSettingsView.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..23efae52a75f75d6b931db277299917bba3eea67
--- /dev/null
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/globalSettingsView.fxml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.*?>
+<?import javafx.scene.control.*?>
+<?import java.lang.*?>
+<?import javafx.scene.layout.*?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="592.0" prefWidth="645.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <TabPane fx:id="tabPane" prefHeight="348.0" prefWidth="600.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="52.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+      <Button fx:id="finishButton" layoutX="508.0" layoutY="360.0" mnemonicParsing="false" onAction="#finishButtonHandler" text="%settings.button.finish" AnchorPane.bottomAnchor="14.0" AnchorPane.rightAnchor="14.0" />
+   </children>
+</AnchorPane>
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..5c068743d7c8ad9398c6d8c470e8fa42fdf169a1
--- /dev/null
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.*?>
+<?import javafx.scene.control.*?>
+<?import java.lang.*?>
+<?import javafx.scene.layout.*?>
+
+<VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" spacing="14.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <Label text="%settings.keys.label.headline" underline="true" />
+      <TextField fx:id="searchTextField" promptText="%settings.keys.textfieldsearch" />
+      <TableView fx:id="table" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
+        <columns>
+          <TableColumn fx:id="nameTableColumn" editable="false" prefWidth="378.0" text="%settings.keys.table.name" />
+          <TableColumn fx:id="shortcutTableColumn" editable="false" minWidth="0.0" prefWidth="139.0" text="%settings.keys.table.shortcut" />
+        </columns>
+      </TableView>
+      <Separator prefWidth="200.0" />
+      <HBox spacing="14.0">
+         <children>
+            <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.keys.label.name" />
+            <Label fx:id="nameLabel" prefWidth="100.0" />
+         </children>
+      </HBox>
+      <HBox alignment="CENTER_LEFT" spacing="14.0">
+         <children>
+            <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.keys.label.shortcut" />
+            <Label fx:id="shortcutLabel" prefWidth="100.0" />
+            <Button fx:id="newShortcutButton" mnemonicParsing="false" onAction="#newShortcutButtonHandler" text="%settings.keys.button.change" />
+         </children>
+      </HBox>
+   </children>
+   <padding>
+      <Insets bottom="14.0" left="14.0" right="14.0" top="14.0" />
+   </padding>
+</VBox>
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/updateTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/updateTab.fxml
similarity index 100%
rename from PlayWall/assets/de/tobias/playpad/assets/view/option/updateTab.fxml
rename to PlayWall/assets/de/tobias/playpad/assets/view/option/global/updateTab.fxml
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/midiTab_old.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/midiTab_old.fxml
deleted file mode 100644
index 5923d8e0a7b57dd5fb8b9142528faf0ad80c962b..0000000000000000000000000000000000000000
--- a/PlayWall/assets/de/tobias/playpad/assets/view/option/midiTab_old.fxml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import javafx.scene.control.*?>
-<?import java.lang.*?>
-<?import javafx.scene.layout.*?>
-
-<AnchorPane fx:id="rootPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
-   <children>
-      <HBox layoutX="34.0" layoutY="34.0" prefHeight="67.0" prefWidth="523.0" spacing="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
-         <children>
-            <VBox alignment="CENTER_RIGHT" layoutX="9.0" layoutY="19.0" prefHeight="67.0" spacing="25.0" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="14.0">
-               <children>
-                  <Label layoutX="9.0" layoutY="19.0" text="%settings.midi.label.device" />
-                  <Label layoutX="11.0" layoutY="51.0" text="%settings.midi.label.preset" />
-               </children>
-            </VBox>
-            <VBox layoutX="127.0" layoutY="14.0" maxWidth="1.7976931348623157E308" spacing="14.0" HBox.hgrow="ALWAYS">
-               <children>
-                  <HBox alignment="CENTER_LEFT" layoutX="127.0" layoutY="14.0" maxWidth="1.7976931348623157E308" spacing="14.0" AnchorPane.leftAnchor="127.0" AnchorPane.rightAnchor="121.0" VBox.vgrow="ALWAYS">
-                     <children>
-                        <ComboBox fx:id="deviceComboBox" onAction="#deviceHandler" prefWidth="150.0" />
-                        <Pane HBox.hgrow="ALWAYS" />
-                        <CheckBox fx:id="midiActiveCheckBox" mnemonicParsing="false" text="%settings.checkbox.activate" />
-                     </children>
-                  </HBox>
-                  <HBox layoutX="127.0" layoutY="47.0" maxWidth="1.7976931348623157E308" spacing="14.0" VBox.vgrow="ALWAYS">
-                     <children>
-                        <ComboBox fx:id="presetsList" layoutX="127.0" layoutY="47.0" prefWidth="150.0" />
-                        <Button fx:id="presetsEditButton" layoutX="304.0" layoutY="47.0" mnemonicParsing="false" onAction="#presetsEditButtonHandler" text="%settings.midi.presetEdit" />
-                        <Button fx:id="activateButton" mnemonicParsing="false" onAction="#activateButtonHandler" text="%settings.midi.button.activate" />
-                     </children>
-                  </HBox>
-               </children>
-            </VBox>
-         </children>
-      </HBox>
-      <TreeView fx:id="contentTreeView" prefHeight="375.0" prefWidth="300.0" AnchorPane.bottomAnchor="135.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="90.0" />
-      <ComboBox fx:id="midiActionTypeComboBox" layoutX="312.0" layoutY="90.0" prefWidth="264.0" AnchorPane.leftAnchor="314.0" />
-      <AnchorPane fx:id="settingsAnchorPane" layoutX="306.0" layoutY="133.0" prefHeight="467.0" prefWidth="300.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="300.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="133.0" />
-      <HBox layoutX="14.0" layoutY="534.0" prefHeight="52.0" prefWidth="281.0" spacing="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0">
-         <children>
-            <VBox spacing="14.0">
-               <children>
-                  <Button fx:id="addMidiButton" defaultButton="true" layoutX="14.0" layoutY="319.0" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#addMidiButtonHandler" text="%settings.midi.button.add" AnchorPane.bottomAnchor="56.0" AnchorPane.leftAnchor="14.0" />
-                  <Button fx:id="addMidiDraftButton" layoutX="14.0" layoutY="354.0" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#addMidiDraftButtonHandler" text="%settings.midi.button.addDraft" AnchorPane.bottomAnchor="21.0" AnchorPane.leftAnchor="14.0" />
-                  <Button fx:id="draftButton" mnemonicParsing="false" onAction="#draftButtonHandler" text="%settings.midi.button.saveDraft" />
-               </children>
-            </VBox>
-            <VBox spacing="14.0">
-               <children>
-                  <Button fx:id="deleteMidiButton" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#deleteMidiButtonHandler" text="%settings.midi.button.delete" />
-                  <Button fx:id="clearMidiButton" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#clearMidiButtonHandler" prefHeight="26.0" prefWidth="68.0" text="%settings.midi.button.clear" />
-               </children>
-            </VBox>
-         </children>
-      </HBox>
-   </children>
-</AnchorPane>
diff --git a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
index d0a1828b92e8afb6a25a687366ca9812330e371b..1cf6ca0f90831a209b82a4a49d45ff105d4cd13d 100644
--- a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
+++ b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
@@ -18,10 +18,11 @@ import de.tobias.playpad.plugin.PadListener;
 import de.tobias.playpad.plugin.SettingsListener;
 import de.tobias.playpad.plugin.WindowListener;
 import de.tobias.playpad.project.Project;
+import de.tobias.playpad.settings.GlobalSettings;
 import de.tobias.playpad.viewcontroller.IPadSettingsViewController;
-import de.tobias.playpad.viewcontroller.ISettingsViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.playpad.viewcontroller.main.MainViewControllerV2;
+import de.tobias.playpad.viewcontroller.option.ISettingsViewController;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.application.container.PathType;
 import de.tobias.utils.util.Worker;
@@ -44,10 +45,13 @@ public class PlayPadImpl implements PlayPad {
 
 	private MainViewControllerV2 mainViewController;
 	private Project currentProject;
+	protected GlobalSettings globalSettings;
 
-	public PlayPadImpl() {
+	public PlayPadImpl(GlobalSettings globalSettings) {
 		pluginManager = PluginManagerFactory.createPluginManager();
 		deletedPlugins = new HashSet<>();
+		
+		this.globalSettings = globalSettings;
 	}
 
 	@Override
@@ -161,6 +165,11 @@ public class PlayPadImpl implements PlayPad {
 		pluginManager.addPluginsFrom(uri);
 	}
 
+	@Override
+	public GlobalSettings getGlobalSettings() {
+		return globalSettings;
+	}
+
 	public void openProject(Project project) {
 		if (mainViewController == null) {
 			mainViewController = new MainViewControllerV2(mainViewListeners);
diff --git a/PlayWall/src/de/tobias/playpad/PlayPadMain.java b/PlayWall/src/de/tobias/playpad/PlayPadMain.java
index 861720fe69d7cdf2a31cd6094a7d381bb4190d64..db41cdcf63dc2209d4430172e69b3ee19a0434b7 100644
--- a/PlayWall/src/de/tobias/playpad/PlayPadMain.java
+++ b/PlayWall/src/de/tobias/playpad/PlayPadMain.java
@@ -21,8 +21,7 @@ import de.tobias.playpad.midi.device.PD12;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.project.ProjectReference;
 import de.tobias.playpad.registry.NoSuchComponentException;
-import de.tobias.playpad.settings.Profile;
-import de.tobias.playpad.settings.ProfileListener;
+import de.tobias.playpad.settings.GlobalSettings;
 import de.tobias.playpad.settings.ProfileReference;
 import de.tobias.playpad.update.PlayPadUpdater;
 import de.tobias.playpad.update.UpdateRegistery;
@@ -73,7 +72,7 @@ import javafx.stage.Stage;
 // FEATURE lnk für Windows mit Dateiparameter
 // FEATURE Backups irgendwann löschen
 
-public class PlayPadMain extends Application implements LocalizationDelegate, ProfileListener {
+public class PlayPadMain extends Application implements LocalizationDelegate {
 
 	private static final String iconPath = "icon_small.png";
 	public static Optional<Image> stageIcon = Optional.empty();
@@ -110,7 +109,12 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pr
 
 	@Override
 	public void init() throws Exception {
-		impl = new PlayPadImpl();
+		App app = ApplicationUtils.getApplication();
+
+		Path globalSettingsPath = app.getPath(PathType.CONFIGURATION, "GlobalSettings.yml");
+		GlobalSettings globalSettings = GlobalSettings.load(globalSettingsPath);
+
+		impl = new PlayPadImpl(globalSettings);
 		PlayPadPlugin.setImplementation(impl);
 		PlayPadPlugin.setRegistryCollection(new RegistryCollectionImpl());
 
@@ -118,9 +122,9 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pr
 		setupLocalization();
 
 		// Console
-		if (!ApplicationUtils.getApplication().isDebug()) {
-			System.setOut(ConsoleUtils.streamToFile(ApplicationUtils.getApplication().getPath(PathType.LOG, "out.log")));
-			System.setErr(ConsoleUtils.streamToFile(ApplicationUtils.getApplication().getPath(PathType.LOG, "err.log")));
+		if (!app.isDebug()) {
+			System.setOut(ConsoleUtils.streamToFile(app.getPath(PathType.LOG, "out.log")));
+			System.setErr(ConsoleUtils.streamToFile(app.getPath(PathType.LOG, "err.log")));
 		}
 	}
 
@@ -131,8 +135,7 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pr
 			try {
 				Image stageIcon = new Image(iconPath);
 				PlayPadMain.stageIcon = Optional.of(stageIcon);
-			} catch (Exception e) {
-			}
+			} catch (Exception e) {}
 
 			/*
 			 * Setup
@@ -167,16 +170,46 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pr
 			}
 
 			ViewController.create(LaunchDialog.class, stage);
+
+			// Check Updates
+			checkUpdates(impl.globalSettings);
+
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 	}
 
+	private void checkUpdates(GlobalSettings globalSettings) {
+		if (globalSettings.isAutoUpdate()) {
+			Worker.runLater(() ->
+			{
+				UpdateRegistery.lookupUpdates(globalSettings.getUpdateChannel());
+				if (!UpdateRegistery.getAvailableUpdates().isEmpty()) {
+					Platform.runLater(() ->
+					{
+						Alert alert = new Alert(AlertType.CONFIRMATION);
+						alert.setHeaderText(Localization.getString(Strings.UI_Dialog_AutoUpdate_Header));
+						alert.setContentText(Localization.getString(Strings.UI_Dialog_AutoUpdate_Content));
+						alert.showAndWait().filter(item -> item == ButtonType.OK).ifPresent(result ->
+						{
+							try {
+								Updates.startUpdate();
+							} catch (IOException e) {
+								e.printStackTrace();
+							}
+						});
+					});
+				}
+			});
+		}
+	}
+
 	@Override
 	public void stop() throws Exception {
 		try {
 			ProfileReference.saveProfiles();
 			ProjectReference.saveProjects();
+			impl.getGlobalSettings().save();
 		} catch (Exception e) {
 			e.printStackTrace(); // Speichern Fehler
 		}
@@ -196,8 +229,6 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pr
 		// Midi
 		DeviceRegistry.getFactoryInstance().registerDevice(PD12.NAME, PD12.class);
 
-		Profile.registerListener(this);
-
 		try {
 			// Load Components
 			RegistryCollection registryCollection = PlayPadPlugin.getRegistryCollection();
@@ -219,6 +250,10 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pr
 			e.printStackTrace();
 		}
 
+		// Key Bindings
+		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		globalSettings.getKeyCollection().loadDefaultFromFile("de/tobias/playpad/components/Keys.xml", uiResourceBundle);
+
 		// Mapper
 		MapperRegistry.setOverviewViewController(new MapperOverviewViewController());
 	}
@@ -238,36 +273,6 @@ public class PlayPadMain extends Application implements LocalizationDelegate, Pr
 		uiResourceBundle = Localization.loadBundle("de/tobias/playpad/assets/lang/ui", getClass().getClassLoader());
 	}
 
-	/**
-	 * Handle Auto Update on profile reload
-	 */
-	@Override
-	public void reloadSettings(Profile oldProfile, Profile newProfile) {
-		// Update PlayWall
-		if (newProfile.getProfileSettings().isAutoUpdate()) {
-			Worker.runLater(() ->
-			{
-				UpdateRegistery.lookupUpdates(newProfile.getProfileSettings().getUpdateChannel());
-				if (!UpdateRegistery.getAvailableUpdates().isEmpty()) {
-					Platform.runLater(() ->
-					{
-						Alert alert = new Alert(AlertType.CONFIRMATION);
-						alert.setHeaderText(Localization.getString(Strings.UI_Dialog_AutoUpdate_Header));
-						alert.setContentText(Localization.getString(Strings.UI_Dialog_AutoUpdate_Content));
-						alert.showAndWait().filter(item -> item == ButtonType.OK).ifPresent(result ->
-						{
-							try {
-								Updates.startUpdate();
-							} catch (IOException e) {
-								e.printStackTrace();
-							}
-						});
-					});
-				}
-			});
-		}
-	}
-
 	@Override
 	public String getBaseResource() {
 		return "de/tobias/playpad/assets/lang/";
diff --git a/PlayWall/src/de/tobias/playpad/Strings.java b/PlayWall/src/de/tobias/playpad/Strings.java
index 57939d09a2c2bce4bdf1d6224442c71a52bc7070..7234c38e9af7f4ac4488865c2033ee586f12a52b 100644
--- a/PlayWall/src/de/tobias/playpad/Strings.java
+++ b/PlayWall/src/de/tobias/playpad/Strings.java
@@ -21,6 +21,7 @@ public class Strings {
 	public static final String UI_Window_Main_Title = "UI.Window.Main.Title";
 	public static final String UI_Window_Changelog_Title = "UI.Window.Changelog.Title";
 	public static final String UI_Window_Settings_Title = "UI.Window.Settings.Title";
+	public static final String UI_Window_GlobalSettings_Title = "UI.Window.GlobalSettings.Title";
 	public static final String UI_Window_PadSettings_Title = "UI.Window.PadSettings.Title";
 	public static final String UI_Window_PadSettings_Title_Empty = "UI.Window.PadSettings.Title.Empty";
 	public static final String UI_Dialog_DragAndDrop_Title = "UI.Dialog.DragAndDrop.Title";
@@ -167,6 +168,10 @@ public class Strings {
 	// Info - Mapper
 	public static final String Info_Mapper_PressKey = "Info.Mapper.PressKey";
 
+	// UI - Settings - Aler
+	
+	public static final String UI_Settings_Alert_NewKeyShortcut_Text = "UI.Settings.Alert.NewKeyShortcut.Text";
+	
 	// UI - Window - PadSettings
 	public static final String UI_Window_PadSettings_General_Title = "UI.Window.PadSettings.General.Title";
 	public static final String UI_Window_PadSettings_Player_Title = "UI.Window.PadSettings.Player.Title";
diff --git a/PlayWall/src/de/tobias/playpad/components/Keys.xml b/PlayWall/src/de/tobias/playpad/components/Keys.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e874f5b9c11597c4fa3517008958ac6d867cba9b
--- /dev/null
+++ b/PlayWall/src/de/tobias/playpad/components/Keys.xml
@@ -0,0 +1,32 @@
+<Keys>
+	<Windows>
+		<Key id="new_proj" name="main.menuitem.new" key="N" ctrl="true" alt="false" meta="false" shift="false"/>
+		<Key id="open_proj" name="main.menuitem.project" key="O" ctrl="true" alt="false" meta="false" shift="false"/>
+		<Key id="save_proj" name="main.menuitem.save" key="S" ctrl="true" alt="false" meta="false" shift="false"/>
+		<Key id="print_proj" name="main.menuitem.print" key="P" ctrl="true" alt="false" meta="false" shift="false"/>
+		
+		<Key id="dnd" name="main.menuitem.dnd" key="M" ctrl="true" alt="false" meta="false" shift="false"/>
+		<Key id="errors" name="main.menuitem.errors" key="E" ctrl="true" alt="false" meta="false" shift="false"/>
+		<Key id="plugins" name="main.menuitem.plugins"/>
+		<Key id="profile_settings" name="main.menuitem.settings" key="," ctrl="true" alt="false" meta="false" shift="false"/>
+		<Key id="global_settings" name="main.menuitem.globalsettings" key="," ctrl="true" alt="false" meta="false" shift="true"/>
+
+		<Key id="window_top" name="main.menuitem.onTop"/>
+		<Key id="window_fullscreen" name="main.menuitem.fullScreen" key="F" ctrl="true" alt="false" meta="false" shift="true"/>
+	</Windows>
+	<Mac>
+		<Key id="new_proj" name="main.menuitem.new" key="N" ctrl="false" alt="false" meta="true" shift="false"/>
+		<Key id="open_proj" name="main.menuitem.project" key="O" ctrl="false" alt="false" meta="true" shift="false"/>
+		<Key id="save_proj" name="main.menuitem.save" key="S" ctrl="false" alt="false" meta="true" shift="false"/>
+		<Key id="print_proj" name="main.menuitem.print" key="P" ctrl="false" alt="false" meta="true" shift="false"/>
+		
+		<Key id="dnd" name="main.menuitem.dnd" key="M" ctrl="false" alt="false" meta="true" shift="false"/>
+		<Key id="errors" name="main.menuitem.errors" key="E" ctrl="false" alt="false" meta="true" shift="false"/>
+		<Key id="plugins" name="main.menuitem.plugins"/>
+		<Key id="profile_settings" name="main.menuitem.settings" key="," ctrl="false" alt="false" meta="true" shift="false"/>
+		<Key id="global_settings" name="main.menuitem.globalsettings" key="," ctrl="false" alt="false" meta="true" shift="true"/>
+
+		<Key id="window_top" name="main.menuitem.onTop"/>
+		<Key id="window_fullscreen" name="main.menuitem.fullScreen" key="F" ctrl="false" alt="false" meta="true" shift="true"/>
+	</Mac>
+</Keys>
\ No newline at end of file
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index 94adf0b7a44dbc70bbe7a16caa25e75e4279f9fd..1abb14457d876c41953cac103adcefd82aab0b82 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -17,12 +17,13 @@ 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.GlobalSettings;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileNotFoundException;
 import de.tobias.playpad.settings.ProfileSettings;
+import de.tobias.playpad.settings.keys.KeyCollection;
 import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.playpad.view.main.MenuType;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.dialog.ImportDialog;
 import de.tobias.playpad.viewcontroller.dialog.NewProjectDialog;
 import de.tobias.playpad.viewcontroller.dialog.PluginViewController;
@@ -31,7 +32,10 @@ import de.tobias.playpad.viewcontroller.dialog.ProfileViewController;
 import de.tobias.playpad.viewcontroller.dialog.ProjectManagerDialog;
 import de.tobias.playpad.viewcontroller.main.BasicMenuToolbarViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
+import de.tobias.playpad.viewcontroller.option.GlobalSettingsTabViewController;
+import de.tobias.playpad.viewcontroller.option.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.option.SettingsViewController;
+import de.tobias.playpad.viewcontroller.option.global.GlobalSettingsViewController;
 import de.tobias.playpad.viewcontroller.pad.PadDragListener;
 import de.tobias.utils.application.ApplicationInfo;
 import de.tobias.utils.application.ApplicationUtils;
@@ -65,14 +69,21 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	// meuBar
 	@FXML protected MenuBar menuBar;
 
-	@FXML protected MenuItem saveMenuItem;
+	@FXML protected MenuItem newProjectMenuItem;
+	@FXML protected MenuItem openProjectMenuItem;
+	@FXML protected MenuItem saveProjectMenuItem;
 	@FXML protected MenuItem profileMenu;
+	@FXML protected MenuItem printProjectMenuItem;
 
+	@FXML protected CheckMenuItem dndModeMenuItem;
 	@FXML protected MenuItem errorMenu;
+	@FXML protected MenuItem pluginMenu;
 	@FXML protected MenuItem settingsMenuItem;
-	@FXML protected CheckMenuItem dndModeMenuItem;
+	@FXML protected MenuItem globalSettingsMenuItem;
+
 	@FXML protected CheckMenuItem fullScreenMenuItem;
 	@FXML protected CheckMenuItem alwaysOnTopItem;
+
 	@FXML protected Menu layoutMenu;
 
 	@FXML protected Menu extensionMenu;
@@ -81,6 +92,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 
 	private IMainViewController mainViewController;
 	private SettingsViewController settingsViewController;
+	private GlobalSettingsViewController globalSettingsViewController;
 
 	public DesktopMenuToolbarViewController(IMainViewController controller) {
 		super("header", "de/tobias/playpad/assets/view/main/desktop/", PlayPadMain.getUiResourceBundle(), controller);
@@ -151,6 +163,23 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		}
 	}
 
+	@Override
+	public void loadKeybinding(KeyCollection keys) {
+		newProjectMenuItem.setAccelerator(KeyCombination.valueOf(keys.getKey("new_proj").getKeyCode()));
+		openProjectMenuItem.setAccelerator(KeyCombination.valueOf(keys.getKey("open_proj").getKeyCode()));
+		saveProjectMenuItem.setAccelerator(KeyCombination.valueOf(keys.getKey("save_proj").getKeyCode()));
+		printProjectMenuItem.setAccelerator(KeyCombination.valueOf(keys.getKey("print_proj").getKeyCode()));
+
+		dndModeMenuItem.setAccelerator(KeyCombination.valueOf(keys.getKey("dnd").getKeyCode()));
+		errorMenu.setAccelerator(KeyCombination.valueOf(keys.getKey("errors").getKeyCode()));
+		pluginMenu.setAccelerator(KeyCombination.valueOf(keys.getKey("plugins").getKeyCode()));
+		settingsMenuItem.setAccelerator(KeyCombination.valueOf(keys.getKey("profile_settings").getKeyCode()));
+		globalSettingsMenuItem.setAccelerator(KeyCombination.valueOf(keys.getKey("global_settings").getKeyCode()));
+
+		fullScreenMenuItem.setAccelerator(KeyCombination.valueOf(keys.getKey("window_fullscreen").getKeyCode()));
+		alwaysOnTopItem.setAccelerator(KeyCombination.valueOf(keys.getKey("window_top").getKeyCode()));
+	}
+
 	@Override
 	public void setLocked(boolean looked) {
 		dndModeMenuItem.setDisable(looked);
@@ -246,7 +275,6 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	}
 
 	// EventHandler
-	// Basic Event Handler
 	@FXML
 	void newDocumentHandler(ActionEvent event) {
 		doAction(() ->
@@ -385,7 +413,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		if (settingsViewController == null) {
 			Stage mainStage = mainViewController.getStage();
 
-			settingsViewController = new SettingsViewController(midi, mainViewController.getScreen(), mainStage, currentProject, () ->
+			Runnable onFinish = () ->
 			{
 				midi.setListener(mainViewController.getMidiHandler());
 
@@ -403,13 +431,41 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 
 				settingsViewController = null;
 				mainStage.toFront();
-			});
+			};
+
+			settingsViewController = new SettingsViewController(midi, mainViewController.getScreen(), mainStage, currentProject, onFinish);
 
 			settingsViewController.getStage().show();
 		} else if (settingsViewController.getStage().isShowing()) {
 			settingsViewController.getStage().toFront();
 		}
+	}
 
+	@FXML
+	void globalSettingsHandler(ActionEvent event) {
+		if (globalSettingsViewController == null) {
+
+			Stage mainStage = mainViewController.getStage();
+			Runnable onFinish = () ->
+			{
+				Project currentProject = PlayPadMain.getProgramInstance().getCurrentProject();
+				GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+
+				for (GlobalSettingsTabViewController controller : globalSettingsViewController.getTabs()) {
+					if (controller.needReload()) {
+						controller.reload(globalSettings, currentProject, mainViewController);
+					}
+				}
+
+				globalSettingsViewController = null;
+				mainStage.toFront();
+			};
+
+			globalSettingsViewController = new GlobalSettingsViewController(mainStage, onFinish);
+			globalSettingsViewController.getStage().show();
+		} else {
+			globalSettingsViewController.getStage().toFront();
+		}
 	}
 
 	@FXML
diff --git a/PlayWall/src/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
index 34f32b4c40276eafa94da850f641ea32d2a45909..3e463aeb64931b9edbc97607f127bcfea036426f 100644
--- a/PlayWall/src/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
@@ -5,10 +5,12 @@ import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.Strings;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileSettings;
+import de.tobias.playpad.settings.keys.KeyCollection;
 import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.playpad.view.main.MenuType;
 import de.tobias.playpad.viewcontroller.main.BasicMenuToolbarViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
+import de.tobias.utils.ui.icon.FontIcon;
 import de.tobias.utils.util.Localization;
 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
@@ -18,7 +20,6 @@ import javafx.scene.control.CheckMenuItem;
 import javafx.scene.control.Label;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.Slider;
-import javafx.scene.image.Image;
 
 public class TouchMenuToolbarViewController extends BasicMenuToolbarViewController {
 
@@ -38,8 +39,14 @@ public class TouchMenuToolbarViewController extends BasicMenuToolbarViewControll
 		toolbarHBox.prefHeightProperty().bind(toolbar.minHeightProperty());
 
 		showLiveInfo(false);
-	}
-
+		
+		// Schriftgröße Icons
+		FontIcon icon = (FontIcon) volumeDownLabel.getGraphic();
+		icon.setSize(35);
+		icon = (FontIcon) volumeUpLabel.getGraphic();
+		icon.setSize(35);
+	}
+	
 	@Override
 	public void initPageButtons() {
 		pageHBox.getChildren().clear();
@@ -56,9 +63,12 @@ public class TouchMenuToolbarViewController extends BasicMenuToolbarViewControll
 	}
 
 	@Override
-	public void setLocked(boolean looked) {
-
+	public void loadKeybinding(KeyCollection keys) {
+		
 	}
+	
+	@Override
+	public void setLocked(boolean looked) {}
 
 	@Override
 	public void setAlwaysOnTopActive(boolean alwaysOnTopActive) {
diff --git a/PlayWall/src/de/tobias/playpad/pad/content/AudioContentConnect.java b/PlayWall/src/de/tobias/playpad/pad/content/AudioContentConnect.java
index c111f13bee8d9a7c49f937d741697f31363270c2..61451e4075039196f109511cb713ba93be7a075d 100644
--- a/PlayWall/src/de/tobias/playpad/pad/content/AudioContentConnect.java
+++ b/PlayWall/src/de/tobias/playpad/pad/content/AudioContentConnect.java
@@ -5,8 +5,8 @@ import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.conntent.PadContent;
 import de.tobias.playpad.pad.conntent.PadContentConnect;
 import de.tobias.playpad.pad.view.IPadContentView;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.option.AudioTabViewController;
+import de.tobias.playpad.viewcontroller.option.SettingsTabViewController;
 import de.tobias.utils.ui.icon.FontAwesomeType;
 import de.tobias.utils.ui.icon.FontIcon;
 import de.tobias.utils.util.Localization;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/PluginViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/PluginViewController.java
index dbe7f9aefae577b2c99d0e62bc95747d84c760df..42341a2c4ebd3b53e96a89c1f079945e4337f675 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/PluginViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/PluginViewController.java
@@ -8,9 +8,11 @@ import org.bukkit.configuration.MemorySection;
 
 import de.tobias.playpad.AppUserInfoStrings;
 import de.tobias.playpad.PlayPadMain;
+import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.Strings;
 import de.tobias.playpad.plugin.Plugin;
 import de.tobias.playpad.plugin.Plugins;
+import de.tobias.playpad.settings.GlobalSettings;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.update.UpdateChannel;
 import de.tobias.playpad.viewcontroller.cell.PluginCell;
@@ -44,9 +46,10 @@ public class PluginViewController extends ViewController {
 			try {
 				String pluginInfoURL = null;
 
-				MemorySection userInfo = ApplicationUtils.getApplication().getInfo().getUserInfo();
-				UpdateChannel updateChannel = Profile.currentProfile().getProfileSettings().getUpdateChannel();
+				GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+				UpdateChannel updateChannel = globalSettings.getUpdateChannel();
 
+				MemorySection userInfo = ApplicationUtils.getApplication().getInfo().getUserInfo();
 				if (updateChannel == UpdateChannel.STABLE) {
 					pluginInfoURL = userInfo.getString(AppUserInfoStrings.PLUGINS_URL_STABLE);
 				} else if (updateChannel == UpdateChannel.BETA) {
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
index ef839e189a4f7c97131584c9d3f38e30c093ecb5..51e2c9ffe6cdb931fb08bf9a10c41d2ebdfd493f 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
@@ -23,9 +23,11 @@ import de.tobias.playpad.plugin.WindowListener;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.registry.DefaultRegistry;
 import de.tobias.playpad.registry.NoSuchComponentException;
+import de.tobias.playpad.settings.GlobalSettings;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileListener;
 import de.tobias.playpad.settings.ProfileSettings;
+import de.tobias.playpad.settings.keys.KeyCollection;
 import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.playpad.view.main.MainLayoutHandler;
 import de.tobias.playpad.viewcontroller.pad.PadDragListener;
@@ -193,7 +195,7 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 		ProfileSettings settings = Profile.currentProfile().getProfileSettings();
 
 		if (menuToolbarViewController != null) {
-			menuToolbarViewController.deinit();
+			// menuToolbarViewController.deinit();
 
 			menuToolbarViewController.getVolumeSlider().valueProperty().unbindBidirectional(settings.volumeProperty());
 			menuToolbarViewController.getVolumeSlider().valueProperty().removeListener(volumeChangeListener);
@@ -215,6 +217,10 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 		menuToolbarViewController.getVolumeSlider().valueProperty().bindBidirectional(settings.volumeProperty());
 		menuToolbarViewController.getVolumeSlider().valueProperty().addListener(volumeChangeListener);
 
+		// Keyboard Shortcuts
+		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+		menuToolbarViewController.loadKeybinding(globalSettings.getKeyCollection());
+
 		createPadViews();
 		showPage(currentPageShowing);
 
@@ -512,8 +518,7 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 			{
 				try {
 					Thread.sleep(PlayPadMain.displayTimeMillis * 2);
-				} catch (Exception e) {
-				}
+				} catch (Exception e) {}
 				Platform.runLater(() ->
 				{
 					if (menuToolbarViewController != null)
@@ -587,6 +592,13 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 		}
 	}
 
+	@Override
+	public void loadKeybinding(KeyCollection keys) {
+		if (menuToolbarViewController != null) {
+			menuToolbarViewController.loadKeybinding(keys);
+		}
+	}
+
 	@Override
 	public void setGridColor(Color color) {
 		this.gridColor = color;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/AudioTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/AudioTabViewController.java
index 2bcf1adfeadcc7c8dae598ebab78031c6bfee1a0..f27e3ae3f111bdacd6c81be80a23c357d9bbea38 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/AudioTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/AudioTabViewController.java
@@ -9,7 +9,6 @@ import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileSettings;
 import de.tobias.playpad.viewcontroller.AudioTypeViewController;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.utils.util.Localization;
 import de.tobias.utils.util.Worker;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/DesignTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/DesignTabViewController.java
index 5f5370b232bb22aa79b8d5a58456a1cf47431853..e466e4a0a3ad2cccae08cfe66505302c711abda1 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/DesignTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/DesignTabViewController.java
@@ -9,7 +9,6 @@ import de.tobias.playpad.project.Project;
 import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.viewcontroller.GlobalDesignViewController;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.cell.DisplayableCell;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.utils.util.Localization;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/GeneralTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/GeneralTabViewController.java
index 2dde64d74fb173af212708537f4779fc61e09a91..594a1e1f2711d6eb8fa45eb17aa1bb703ee17b82 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/GeneralTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/GeneralTabViewController.java
@@ -13,7 +13,6 @@ import de.tobias.playpad.design.GlobalDesign;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileSettings;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.application.container.PathType;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/MappingTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/MappingTabViewController.java
index 5d07685f255278a9352ccee1173c36ccb8277de0..3f86e36edf496c79165ed322e412d9dbd43572fb 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/MappingTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/MappingTabViewController.java
@@ -18,7 +18,6 @@ import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.viewcontroller.IMapperOverviewViewController;
 import de.tobias.playpad.viewcontroller.IMappingTabViewController;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.cell.DisplayableCell;
 import de.tobias.playpad.viewcontroller.cell.DisplayableTreeCell;
 import de.tobias.playpad.viewcontroller.dialog.MappingListViewController;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/MidiTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/MidiTabViewController.java
index 0c6e45c2e1c371685cd8d0ba349f51a78f3eaddb..b6eb72a750fde0fd5b4fbb599ed3ccfe67711c9e 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/MidiTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/MidiTabViewController.java
@@ -9,7 +9,6 @@ import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileSettings;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.utils.util.Localization;
 import javafx.event.ActionEvent;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/PlayerTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/PlayerTabViewController.java
index 94713e8a15dba9fae93ac619173bdf5eebfd416a..a8545938921566807f10785031e530859889eea5 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/PlayerTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/PlayerTabViewController.java
@@ -6,7 +6,6 @@ import de.tobias.playpad.pad.TimeMode;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileSettings;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.cell.EnumCell;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.playpad.viewcontroller.settings.FadeViewController;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/SettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/SettingsViewController.java
index 11755e500c8f8d62fd5f374ee1083897f53fc7f2..642c15a2d220e67884f10b7ba66537db2a27ea31 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/SettingsViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/SettingsViewController.java
@@ -12,8 +12,6 @@ import de.tobias.playpad.project.Project;
 import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileSettings;
-import de.tobias.playpad.viewcontroller.ISettingsViewController;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.utils.ui.ViewController;
 import de.tobias.utils.ui.icon.FontAwesomeType;
 import de.tobias.utils.ui.icon.FontIcon;
@@ -64,8 +62,6 @@ public class SettingsViewController extends ViewController implements ISettingsV
 			}
 		}
 
-		addTab(new UpdateTabViewController());
-
 		getStage().initOwner(owner);
 
 		// Show Current Settings
@@ -159,7 +155,8 @@ public class SettingsViewController extends ViewController implements ISettingsV
 		}
 
 		saveTabs();
-		onFinish.run(); // Reload MainViewController Settings
+		if (onFinish != null)
+			onFinish.run(); // Reload MainViewController Settings
 		return true;
 	}
 
@@ -173,6 +170,7 @@ public class SettingsViewController extends ViewController implements ISettingsV
 		tabPane.setDisable(isLocked);
 	}
 
+	@Override
 	public void addTab(SettingsTabViewController controller) {
 		tabs.add(controller);
 		tabPane.getTabs().add(new Tab(controller.name(), controller.getParent()));
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java
new file mode 100644
index 0000000000000000000000000000000000000000..6534d2976f3b068c46f230e869c673b065712604
--- /dev/null
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java
@@ -0,0 +1,133 @@
+package de.tobias.playpad.viewcontroller.option.global;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.tobias.playpad.PlayPadMain;
+import de.tobias.playpad.PlayPadPlugin;
+import de.tobias.playpad.Strings;
+import de.tobias.playpad.settings.GlobalSettings;
+import de.tobias.playpad.settings.Profile;
+import de.tobias.playpad.viewcontroller.option.GlobalSettingsTabViewController;
+import de.tobias.playpad.viewcontroller.option.IGlobalSettingsViewController;
+import de.tobias.utils.ui.ViewController;
+import de.tobias.utils.util.Localization;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.scene.control.Button;
+import javafx.scene.control.Tab;
+import javafx.scene.control.TabPane;
+import javafx.scene.control.ToggleButton;
+import javafx.stage.Stage;
+import javafx.stage.Window;
+
+public class GlobalSettingsViewController extends ViewController implements IGlobalSettingsViewController {
+
+	@FXML private TabPane tabPane;
+	@FXML private ToggleButton lockedButton;
+	@FXML private Button finishButton;
+
+	protected List<GlobalSettingsTabViewController> tabs = new ArrayList<>();
+
+	private Runnable onFinish;
+
+	public GlobalSettingsViewController(Window owner, Runnable onFinish) {
+		super("globalSettingsView", "de/tobias/playpad/assets/view/option/global/", null, PlayPadMain.getUiResourceBundle());
+		this.onFinish = onFinish;
+
+		getStage().initOwner(owner);
+
+		addTab(new KeysTabViewController());
+		addTab(new UpdateTabViewController());
+
+		// Show Current Settings
+		loadTabs();
+	}
+
+	@Override
+	public void init() {
+		// KeyCode
+		addCloseKeyShortcut(() -> finishButton.fire());
+
+		finishButton.defaultButtonProperty().bind(finishButton.focusedProperty());
+	}
+
+	@Override
+	public void initStage(Stage stage) {
+		PlayPadMain.stageIcon.ifPresent(stage.getIcons()::add);
+
+		stage.setMinWidth(715);
+		stage.setMinHeight(700);
+		stage.setTitle(Localization.getString(Strings.UI_Window_GlobalSettings_Title));
+
+		Profile.currentProfile().currentLayout().applyCss(getStage());
+	}
+
+	/**
+	 * Zeigt die aktuellen Einstellungen für die Tabs an.
+	 */
+	private void loadTabs() {
+		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+
+		for (GlobalSettingsTabViewController controller : tabs) {
+			controller.loadSettings(globalSettings);
+		}
+	}
+
+	/**
+	 * Speichert die Einstellungen der Tabs.
+	 */
+	private void saveTabs() {
+		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+
+		for (GlobalSettingsTabViewController controller : tabs) {
+			controller.saveSettings(globalSettings);
+		}
+
+		try {
+			globalSettings.save();
+		} catch (Exception e) {
+			showErrorMessage(Localization.getString(Strings.Error_Profile_Save, e.getLocalizedMessage()));
+			e.printStackTrace();
+		}
+	}
+
+	public boolean closeRequest() {
+		return onFinish();
+	}
+
+	// Button Listener
+	@FXML
+	private void finishButtonHandler(ActionEvent event) {
+		onFinish();
+		getStage().close();
+	}
+
+	/**
+	 * Speichert alle Informationen.
+	 * 
+	 * @return <code>true</code>Alle Einstellungen sind Valid.
+	 */
+	private boolean onFinish() {
+		for (GlobalSettingsTabViewController controller : tabs) {
+			if (controller.validSettings() == false) {
+				return false;
+			}
+		}
+
+		saveTabs();
+		if (onFinish != null)
+			onFinish.run(); // Reload MainViewController Settings
+		return true;
+	}
+
+	@Override
+	public void addTab(GlobalSettingsTabViewController controller) {
+		tabs.add(controller);
+		tabPane.getTabs().add(new Tab(controller.name(), controller.getParent()));
+	}
+
+	public List<GlobalSettingsTabViewController> getTabs() {
+		return tabs;
+	}
+}
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java
new file mode 100644
index 0000000000000000000000000000000000000000..4781a824ebfe051e85448e3c3d7392c5d21b8320
--- /dev/null
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java
@@ -0,0 +1,145 @@
+package de.tobias.playpad.viewcontroller.option.global;
+
+import de.tobias.playpad.PlayPadMain;
+import de.tobias.playpad.PlayPadPlugin;
+import de.tobias.playpad.Strings;
+import de.tobias.playpad.project.Project;
+import de.tobias.playpad.settings.GlobalSettings;
+import de.tobias.playpad.settings.keys.Key;
+import de.tobias.playpad.viewcontroller.main.IMainViewController;
+import de.tobias.playpad.viewcontroller.option.GlobalSettingsTabViewController;
+import de.tobias.utils.util.Localization;
+import de.tobias.utils.util.OS;
+import javafx.application.Platform;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.scene.Scene;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Alert.AlertType;
+import javafx.scene.input.KeyCode;
+import javafx.scene.control.Button;
+import javafx.scene.control.ButtonType;
+import javafx.scene.control.Label;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.stage.Stage;
+
+public class KeysTabViewController extends GlobalSettingsTabViewController {
+
+	@FXML private TextField searchTextField;
+
+	@FXML private TableView<Key> table;
+	@FXML private TableColumn<Key, String> shortcutTableColumn;
+	@FXML private TableColumn<Key, String> nameTableColumn;
+
+	@FXML private Label nameLabel;
+	@FXML private Label shortcutLabel;
+	@FXML private Button newShortcutButton;
+
+	private Key currentKey;
+
+	public KeysTabViewController() {
+		super("keysTab", "de/tobias/playpad/assets/view/option/global/", PlayPadMain.getUiResourceBundle());
+	}
+
+	@Override
+	public void init() {
+		shortcutTableColumn.setCellValueFactory(param ->
+		{
+			return param.getValue().displayProperty();
+		});
+		nameTableColumn.setCellValueFactory(param ->
+		{
+			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			return new SimpleStringProperty(globalSettings.getKeyCollection().getName(param.getValue().getId()));
+		});
+
+		table.getSelectionModel().selectedItemProperty().addListener((a, b, c) ->
+		{
+			setDetailView(c);
+		});
+	}
+
+	private void setDetailView(Key key) {
+		currentKey = key;
+
+		if (key != null) {
+			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+
+			String name = globalSettings.getKeyCollection().getName(key.getId());
+			nameLabel.setText(name);
+
+			shortcutLabel.setText(key.toString());
+			newShortcutButton.setDisable(false);
+		} else {
+			nameLabel.setText("");
+			shortcutLabel.setText("");
+			newShortcutButton.setDisable(true);
+		}
+	}
+
+	@FXML
+	void newShortcutButtonHandler(ActionEvent event) {
+		Alert alert = new Alert(AlertType.NONE);
+		alert.setContentText(Localization.getString(Strings.UI_Settings_Alert_NewKeyShortcut_Text));
+		Scene scene = alert.getDialogPane().getScene();
+
+		scene.setOnKeyPressed(ev ->
+		{
+			boolean macCondition = ev.getCode().isLetterKey() || ev.getCode().isKeypadKey() || ev.getCode().isDigitKey()
+					|| ev.getCode().isFunctionKey() || ev.getCode() == KeyCode.PERIOD || ev.getCode() == KeyCode.COMMA;
+
+			if (OS.isWindows() || macCondition) {
+				String key = ev.getCode().getName();
+				currentKey.setKey(key);
+
+				currentKey.setAlt(ev.isAltDown());
+				currentKey.setMeta(ev.isMetaDown());
+				currentKey.setCtrl(ev.isControlDown());
+				currentKey.setShift(ev.isShiftDown());
+
+				shortcutLabel.setText(currentKey.toString());
+
+				Platform.runLater(() -> ((Stage) scene.getWindow()).close());
+			}
+		});
+
+		alert.getButtonTypes().add(ButtonType.CANCEL);
+		alert.initOwner(getWindow());
+		alert.showAndWait();
+	}
+
+	@Override
+	public void loadSettings(GlobalSettings settings) {
+		table.getItems().setAll(settings.getKeyCollection().getKeys());
+	}
+
+	@Override
+	public void saveSettings(GlobalSettings settings) {
+		// Passiert beim Drücken von Tasten automatisch
+	}
+
+	@Override
+	public boolean needReload() {
+		return true;
+	}
+	
+	@Override
+	public void reload(GlobalSettings settings, Project project, IMainViewController controller) {
+		controller.loadKeybinding(settings.getKeyCollection());
+	}
+
+	@Override
+	public boolean validSettings() {
+		return true;
+	}
+
+	@Override
+	public String name() {
+		// TODO Auto-generated method stub
+		return "Keyboard (I18N)";
+	}
+
+}
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/UpdateTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java
similarity index 78%
rename from PlayWall/src/de/tobias/playpad/viewcontroller/option/UpdateTabViewController.java
rename to PlayWall/src/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java
index 0bf463e78c590218e2303fee471d4475a84323ca..d457d9475fb51e867940fb3a8729824ae1603cf9 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/UpdateTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/UpdateTabViewController.java
@@ -1,19 +1,20 @@
-package de.tobias.playpad.viewcontroller.option;
+package de.tobias.playpad.viewcontroller.option.global;
 
 import java.io.IOException;
 
 import de.tobias.playpad.PlayPadMain;
+import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.Strings;
+import de.tobias.playpad.settings.GlobalSettings;
 import de.tobias.playpad.settings.Profile;
-import de.tobias.playpad.settings.ProfileSettings;
 import de.tobias.playpad.update.Updatable;
 import de.tobias.playpad.update.UpdateChannel;
 import de.tobias.playpad.update.UpdateRegistery;
 import de.tobias.playpad.update.Updates;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.cell.EnumCell;
 import de.tobias.playpad.viewcontroller.cell.UpdateCell;
 import de.tobias.playpad.viewcontroller.dialog.UpdaterDialog;
+import de.tobias.playpad.viewcontroller.option.GlobalSettingsTabViewController;
 import de.tobias.utils.application.ApplicationInfo;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.util.Localization;
@@ -29,7 +30,7 @@ import javafx.scene.control.ListView;
 import javafx.scene.control.ProgressIndicator;
 import javafx.scene.image.ImageView;
 
-public class UpdateTabViewController extends SettingsTabViewController {
+public class UpdateTabViewController extends GlobalSettingsTabViewController {
 
 	@FXML private Label currentVersionLabel;
 
@@ -49,10 +50,11 @@ public class UpdateTabViewController extends SettingsTabViewController {
 	private Label placeholderLabel;
 
 	public UpdateTabViewController() {
-		super("updateTab", "de/tobias/playpad/assets/view/option/", PlayPadMain.getUiResourceBundle());
+		super("updateTab", "de/tobias/playpad/assets/view/option/global/", PlayPadMain.getUiResourceBundle());
 
-		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
-		updateChannelComboBox.setValue(profileSettings.getUpdateChannel());
+		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+
+		updateChannelComboBox.setValue(globalSettings.getUpdateChannel());
 		openUpdateList.getItems().setAll(UpdateRegistery.getAvailableUpdates());
 		updateButton.setDisable(openUpdateList.getItems().isEmpty());
 
@@ -71,7 +73,8 @@ public class UpdateTabViewController extends SettingsTabViewController {
 
 		updateChannelComboBox.valueProperty().addListener((a, b, c) ->
 		{
-			Profile.currentProfile().getProfileSettings().setUpdateChannel(c);
+			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+			globalSettings.setUpdateChannel(c);
 		});
 
 		infoCLabel.setGraphic(new ImageView("de/tobias/playpad/assets/files/class_obj.png"));
@@ -98,7 +101,8 @@ public class UpdateTabViewController extends SettingsTabViewController {
 			Worker.runLater(() ->
 			{
 				// Search for updates
-				UpdateRegistery.lookupUpdates(profile.getProfileSettings().getUpdateChannel());
+				GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
+				UpdateRegistery.lookupUpdates(globalSettings.getUpdateChannel());
 
 				Platform.runLater(() ->
 				{
@@ -128,13 +132,13 @@ public class UpdateTabViewController extends SettingsTabViewController {
 
 	// Settings Tab Methods
 	@Override
-	public void loadSettings(Profile profile) {
-		automaticSearchCheckBox.setSelected(profile.getProfileSettings().isAutoUpdate());
+	public void loadSettings(GlobalSettings profile) {
+		automaticSearchCheckBox.setSelected(profile.isAutoUpdate());
 	}
 
 	@Override
-	public void saveSettings(Profile profile) {
-		profile.getProfileSettings().setAutoUpdate(automaticSearchCheckBox.isSelected());
+	public void saveSettings(GlobalSettings profile) {
+		profile.setAutoUpdate(automaticSearchCheckBox.isSelected());
 	}
 
 	@Override
diff --git a/PlayWallCore/src/de/tobias/playpad/PlayPad.java b/PlayWallCore/src/de/tobias/playpad/PlayPad.java
index ba0648a62c2a20fd92a59f98fe721460c17dfe31..7326cfbbde2f9e11be3ef46f1bb3670131f0eb8b 100644
--- a/PlayWallCore/src/de/tobias/playpad/PlayPad.java
+++ b/PlayWallCore/src/de/tobias/playpad/PlayPad.java
@@ -7,6 +7,7 @@ import java.util.Optional;
 import de.tobias.playpad.plugin.PadListener;
 import de.tobias.playpad.plugin.SettingsListener;
 import de.tobias.playpad.plugin.WindowListener;
+import de.tobias.playpad.settings.GlobalSettings;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import javafx.scene.image.Image;
 
@@ -105,4 +106,11 @@ public interface PlayPad {
 	 *            Quelle des Plugin
 	 */
 	public void loadPlugin(URI uri);
+
+	/**
+	 * Gibt die globalen Einstellungen zurück.
+	 * 
+	 * @return Global Settings
+	 */
+	public GlobalSettings getGlobalSettings();
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/conntent/PadContentConnect.java b/PlayWallCore/src/de/tobias/playpad/pad/conntent/PadContentConnect.java
index 88dccf7273cdff6a998b7d157d96af79f2745f61..eb3ebb8b41937a4a998ac51efd9aee7e04ea9704 100644
--- a/PlayWallCore/src/de/tobias/playpad/pad/conntent/PadContentConnect.java
+++ b/PlayWallCore/src/de/tobias/playpad/pad/conntent/PadContentConnect.java
@@ -6,7 +6,7 @@ import de.tobias.playpad.Displayable;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.view.IPadContentView;
 import de.tobias.playpad.viewcontroller.PadSettingsTabViewController;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
+import de.tobias.playpad.viewcontroller.option.SettingsTabViewController;
 import de.tobias.utils.util.FileUtils;
 import javafx.scene.layout.Pane;
 
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/GlobalSettings.java b/PlayWallCore/src/de/tobias/playpad/settings/GlobalSettings.java
new file mode 100644
index 0000000000000000000000000000000000000000..d597901378ecdc7230d8730573dd5f7ba58d0590
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/settings/GlobalSettings.java
@@ -0,0 +1,121 @@
+package de.tobias.playpad.settings;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.SAXReader;
+import org.dom4j.io.XMLWriter;
+
+import de.tobias.playpad.PlayPad;
+import de.tobias.playpad.settings.keys.KeyCollection;
+import de.tobias.playpad.update.UpdateChannel;
+
+/**
+ * Globale Einstellungen für das Programm. Eine Instanz von diesen Einstellungen wird in {@link PlayPad} verwaltet.
+ * 
+ * @author tobias
+ * 
+ * @since 5.1.0
+ * 
+ * @see PlayPad#getGlobalSettings()
+ *
+ */
+public class GlobalSettings {
+
+	private Path savePath;
+
+	private KeyCollection keyCollection = new KeyCollection();
+
+	private boolean autoUpdate = true;
+	private UpdateChannel updateChannel = UpdateChannel.STABLE;
+
+	// Getter
+	public boolean isAutoUpdate() {
+		return autoUpdate;
+	}
+
+	public UpdateChannel getUpdateChannel() {
+		return updateChannel;
+	}
+
+	public KeyCollection getKeyCollection() {
+		return keyCollection;
+	}
+
+	// Setter
+	public void setAutoUpdate(boolean autoUpdate) {
+		this.autoUpdate = autoUpdate;
+	}
+
+	public void setUpdateChannel(UpdateChannel updateChannel) {
+		this.updateChannel = updateChannel;
+	}
+
+	private static final String KEYS_ELEMENT = "Keys";
+	private static final String AUTO_UPDATE_ELEMENT = "AutoUpdate";
+	private static final String UPDATE_CHANNEL_ELEMENT = "UpdateChannel";
+
+	/**
+	 * Lädt eine neue Instanz der Globalen Einstellungen.
+	 * 
+	 * @return GlobalSettings
+	 * @throws DocumentException
+	 *             XML Fehler
+	 * @throws IOException
+	 *             Fehler bei IO
+	 */
+	public static GlobalSettings load(Path savePath) throws DocumentException, IOException {
+		GlobalSettings settings = new GlobalSettings();
+		settings.savePath = savePath;
+
+		if (Files.exists(savePath)) {
+			SAXReader reader = new SAXReader();
+			Document document = reader.read(Files.newInputStream(savePath));
+			Element root = document.getRootElement();
+
+			if (root.element(KEYS_ELEMENT) != null)
+				settings.keyCollection.load(root.element(KEYS_ELEMENT));
+
+			if (root.element(AUTO_UPDATE_ELEMENT) != null) {
+				settings.setAutoUpdate(Boolean.valueOf(root.element(AUTO_UPDATE_ELEMENT).getStringValue()));
+			}
+
+			if (root.element(UPDATE_CHANNEL_ELEMENT) != null) {
+				settings.setUpdateChannel(UpdateChannel.valueOf(root.element(UPDATE_CHANNEL_ELEMENT).getStringValue()));
+			}
+		}
+		return settings;
+	}
+
+	/**
+	 * Speichert die Globalen Einstellungen
+	 * 
+	 * @throws UnsupportedEncodingException
+	 *             Fehler bei XML
+	 * @throws IOException
+	 *             Fehler bei IO
+	 */
+	public void save() throws UnsupportedEncodingException, IOException {
+		Document document = DocumentHelper.createDocument();
+		Element root = document.addElement("Config");
+
+		// Keys
+		Element keyCollectionElement = root.addElement(KEYS_ELEMENT);
+		keyCollection.save(keyCollectionElement);
+
+		// Update
+		root.addElement(AUTO_UPDATE_ELEMENT).addText(String.valueOf(autoUpdate));
+		root.addElement(UPDATE_CHANNEL_ELEMENT).addText(updateChannel.name());
+
+		XMLWriter writer = new XMLWriter(Files.newOutputStream(savePath), OutputFormat.createPrettyPrint());
+		writer.write(document);
+		writer.close();
+	}
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/ProfileSettings.java b/PlayWallCore/src/de/tobias/playpad/settings/ProfileSettings.java
index ea0e10f48df2b66c8f59d11d31cdb2b0b0ba934f..676a8a8b67daa576513be27231d63e16eb7afca2 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/ProfileSettings.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/ProfileSettings.java
@@ -17,7 +17,6 @@ import org.dom4j.io.XMLWriter;
 
 import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.pad.TimeMode;
-import de.tobias.playpad.update.UpdateChannel;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.application.container.PathType;
 import de.tobias.utils.settings.SettingsSerializable;
@@ -73,10 +72,6 @@ public class ProfileSettings implements SettingsSerializable {
 	// Folder
 	@Storable private Path cachePath = ApplicationUtils.getApplication().getPath(PathType.CACHE);
 
-	// Update - TODO GlobalSettings
-	@Storable private boolean autoUpdate = true;
-	@Storable private UpdateChannel updateChannel = UpdateChannel.STABLE;
-
 	public boolean isLocked() {
 		return lockedProperty.get();
 	}
@@ -180,14 +175,6 @@ public class ProfileSettings implements SettingsSerializable {
 		return audioUserInfo;
 	}
 
-	public boolean isAutoUpdate() {
-		return autoUpdate;
-	}
-
-	public UpdateChannel getUpdateChannel() {
-		return updateChannel;
-	}
-
 	// Setter
 	public void setMidiDeviceName(String midiDevice) {
 		this.midiDevice = midiDevice;
@@ -267,14 +254,6 @@ public class ProfileSettings implements SettingsSerializable {
 		this.audioClass = audioClass;
 	}
 
-	public void setAutoUpdate(boolean autoUpdate) {
-		this.autoUpdate = autoUpdate;
-	}
-
-	public void setUpdateChannel(UpdateChannel updateChannel) {
-		this.updateChannel = updateChannel;
-	}
-
 	// Properties
 	public DoubleProperty volumeProperty() {
 		return volumeProperty;
@@ -282,8 +261,6 @@ public class ProfileSettings implements SettingsSerializable {
 
 	private static final String LOCKED_ELEMENT = "Locked";
 	private static final String ITEM_ELEMENT = "Item";
-	private static final String AUTO_UPDATE_ELEMENT = "AutoUpdate";
-	private static final String UPDATE_CHANNEL_ELEMENT = "UpdateChannel";
 	private static final String CACHE_PATH_ELEMENT = "Cache-Path";
 	private static final String VOLUME_ELEMENT = "Volume";
 	private static final String KEY_ATTRIBUTE = "key";
@@ -396,14 +373,6 @@ public class ProfileSettings implements SettingsSerializable {
 			if (root.element(CACHE_PATH_ELEMENT) != null) {
 				profileSettings.setCachePath(Paths.get(root.element(CACHE_PATH_ELEMENT).getStringValue()));
 			}
-
-			if (root.element(AUTO_UPDATE_ELEMENT) != null) {
-				profileSettings.setAutoUpdate(Boolean.valueOf(root.element(AUTO_UPDATE_ELEMENT).getStringValue()));
-			}
-
-			if (root.element(UPDATE_CHANNEL_ELEMENT) != null) {
-				profileSettings.setUpdateChannel(UpdateChannel.valueOf(root.element(UPDATE_CHANNEL_ELEMENT).getStringValue()));
-			}
 		}
 		return profileSettings;
 	}
@@ -452,10 +421,6 @@ public class ProfileSettings implements SettingsSerializable {
 		// Paths
 		root.addElement(CACHE_PATH_ELEMENT).addText(cachePath.toString());
 
-		// Update
-		root.addElement(AUTO_UPDATE_ELEMENT).addText(String.valueOf(autoUpdate));
-		root.addElement(UPDATE_CHANNEL_ELEMENT).addText(updateChannel.name());
-
 		XMLWriter writer = new XMLWriter(Files.newOutputStream(path), OutputFormat.createPrettyPrint());
 		writer.write(document);
 		writer.close();
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb8111f0867057b8bde2f400120c5effc66c1df7
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java
@@ -0,0 +1,123 @@
+package de.tobias.playpad.settings.keys;
+
+import de.tobias.playpad.Displayable;
+import de.tobias.utils.util.OS;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
+
+public class Key implements Displayable {
+
+	private String id;
+
+	private String key;
+	private boolean ctrl;
+	private boolean alt;
+	private boolean meta;
+	private boolean shift;
+
+	public Key(String id) {
+		this.id = id;
+	}
+
+	public Key(String id, String key, boolean ctrl, boolean alt, boolean meta, boolean shift) {
+		this.id = id;
+
+		this.key = key;
+		this.ctrl = ctrl;
+		this.alt = alt;
+		this.meta = meta;
+		this.shift = shift;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+
+		displayProperty.set(toString());
+	}
+
+	public boolean isCtrl() {
+		return ctrl;
+	}
+
+	public void setCtrl(boolean ctrl) {
+		this.ctrl = ctrl;
+
+		displayProperty.set(toString());
+	}
+
+	public boolean isAlt() {
+		return alt;
+	}
+
+	public void setAlt(boolean alt) {
+		this.alt = alt;
+
+		displayProperty.set(toString());
+	}
+
+	public boolean isMeta() {
+		return meta;
+	}
+
+	public void setMeta(boolean meta) {
+		this.meta = meta;
+
+		displayProperty.set(toString());
+	}
+
+	public boolean isShift() {
+		return shift;
+	}
+
+	public void setShift(boolean shift) {
+		this.shift = shift;
+
+		displayProperty.set(toString());
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public String getKeyCode() {
+		StringBuilder builder = new StringBuilder();
+
+		if (ctrl)
+			builder.append("ctrl+");
+
+		if (alt)
+			builder.append("alt+");
+
+		if (meta)
+			builder.append("meta+");
+
+		if (shift)
+			builder.append("shift+");
+
+		builder.append(key);
+
+		return builder.toString();
+	}
+
+	@Override
+	public String toString() {
+		if (OS.isMacOS()) {
+			return getKeyCode().replace("meta", String.valueOf((char) 8984)).replace("shift", String.valueOf((char) 8679))
+					.replace("ctrl", String.valueOf((char) 8963)).replace("alt", String.valueOf((char) 8997));
+		} else {
+			return getKeyCode();
+		}
+	}
+
+	private StringProperty displayProperty = new SimpleStringProperty();
+
+	@Override
+	public StringProperty displayProperty() {
+		displayProperty.set(toString());
+		return displayProperty;
+	}
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e41c287a6439f0f5515cfde3c3ca5820831a32b
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java
@@ -0,0 +1,115 @@
+package de.tobias.playpad.settings.keys;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import de.tobias.playpad.xml.XMLHandler;
+import de.tobias.utils.util.OS;
+
+public class KeyCollection {
+
+	// Schlüssel: ID, Value: Key
+	private HashMap<String, Key> keys;
+	private HashMap<String, String> names;
+
+	public KeyCollection() {
+		keys = new HashMap<>();
+		names = new HashMap<>();
+	}
+
+	public void register(Key key) {
+		if (!keys.containsKey(key.getId())) {
+			if (!keysConflict(key)) {
+				keys.put(key.getId(), key);
+			}
+		}
+	}
+
+	public String getName(String id) {
+		return names.get(id);
+	}
+
+	public Key getKey(String id) {
+		return keys.get(id);
+	}
+
+	public Collection<Key> getKeys() {
+		return keys.values();
+	}
+
+	public boolean keysConflict(Key key) {
+		for (Key k : keys.values()) {
+			if (k.getKeyCode().equals(key)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private static final String KEY_ELEMENT = "Key";
+
+	public void load(Element element) {
+		XMLHandler<Key> handler = new XMLHandler<>(element);
+		List<Key> keys = handler.loadElements(KEY_ELEMENT, new KeySerializer());
+		for (Key key : keys) {
+			register(key);
+		}
+	}
+
+	public void save(Element element) {
+		XMLHandler<Key> handler = new XMLHandler<>(element);
+		handler.saveElements(KEY_ELEMENT, getKeys(), new KeySerializer());
+	}
+
+	private static final String WINDOWS_KEYS = "Windows";
+	private static final String MAC_KEYS = "Mac";
+
+	public void loadDefaultFromFile(String classPath, ResourceBundle bundle) {
+		SAXReader reader = new SAXReader();
+		try {
+			Document document = reader.read(getClass().getClassLoader().getResourceAsStream(classPath));
+			Element rootElement = document.getRootElement();
+
+			Element keysElement = null;
+			if (OS.isWindows())
+				keysElement = rootElement.element(WINDOWS_KEYS);
+			else if (OS.isMacOS())
+				keysElement = rootElement.element(MAC_KEYS);
+
+			if (keysElement != null) {
+				KeySerializer keySerializer = new KeySerializer();
+
+				for (Object obj : keysElement.elements(KEY_ELEMENT)) {
+					if (obj instanceof Element) {
+						Element keyElement = (Element) obj;
+
+						String name = loadName(keyElement, bundle);
+						Key key = keySerializer.loadElement(keyElement);
+						
+						System.out.println(key);
+						
+						names.put(key.getId(), name);
+						register(key);
+					}
+				}
+			}
+		} catch (DocumentException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private String loadName(Element element, ResourceBundle bundle) {
+		String name = element.attributeValue("name");
+		if (name != null) {
+			return bundle.getString(name);
+		}
+		return null;
+	}
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb8e7fc7a9d30c60e6b56f769758fe81fd05e391
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java
@@ -0,0 +1,57 @@
+package de.tobias.playpad.settings.keys;
+
+import org.dom4j.Element;
+
+import de.tobias.playpad.xml.XMLDeserializer;
+import de.tobias.playpad.xml.XMLSerializer;
+
+public class KeySerializer implements XMLSerializer<Key>, XMLDeserializer<Key> {
+
+	private static final String ID_ATTR = "id";
+	private static final String KEY_ATTR = "key";
+	private static final String ALT_ATTR = "alt";
+	private static final String CTRL_ATTR = "ctrl";
+	private static final String META_ATTR = "meta";
+	private static final String SHIFT_ATTR = "shift";
+
+	public Key loadElement(Element element) {
+		boolean shift = false;
+		if (element.attributeValue(SHIFT_ATTR) != null) {
+			shift = Boolean.valueOf(element.attributeValue(SHIFT_ATTR));
+		}
+		boolean meta = false;
+		if (element.attributeValue(META_ATTR) != null) {
+			meta = Boolean.valueOf(element.attributeValue(META_ATTR));
+		}
+		boolean ctrl = false;
+		if (element.attributeValue(CTRL_ATTR) != null) {
+			ctrl = Boolean.valueOf(element.attributeValue(CTRL_ATTR));
+		}
+		boolean alt = false;
+		if (element.attributeValue(ALT_ATTR) != null) {
+			alt = Boolean.valueOf(element.attributeValue(ALT_ATTR));
+		}
+
+		String key = "";
+		if (element.attributeValue(KEY_ATTR) != null) {
+			key = element.attributeValue(KEY_ATTR);
+		}
+
+		String id = "";
+		if (element.attributeValue(ID_ATTR) != null) {
+			id = element.attributeValue(ID_ATTR);
+		}
+
+		return new Key(id, key, ctrl, alt, meta, shift);
+	}
+
+	@Override
+	public void saveElement(Element newElement, Key data) {
+		newElement.addAttribute(SHIFT_ATTR, String.valueOf(data.isShift()));
+		newElement.addAttribute(META_ATTR, String.valueOf(data.isMeta()));
+		newElement.addAttribute(CTRL_ATTR, String.valueOf(data.isCtrl()));
+		newElement.addAttribute(ALT_ATTR, String.valueOf(data.isAlt()));
+		newElement.addAttribute(KEY_ATTR, data.getKey());
+		newElement.addAttribute(ID_ATTR, data.getId());
+	}
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
index 8a31a01cc36a1dd5682a68275f537c9efa33058e..5a2331e2bc07205871230830573eae9c6effbf70 100644
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/IMainViewController.java
@@ -4,6 +4,7 @@ import java.util.List;
 
 import de.tobias.playpad.midi.MidiListener;
 import de.tobias.playpad.pad.view.IPadViewV2;
+import de.tobias.playpad.settings.keys.KeyCollection;
 import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.playpad.view.main.MainLayoutHandler;
 import de.tobias.utils.ui.NotificationHandler;
@@ -147,4 +148,12 @@ public interface IMainViewController extends NotificationHandler {
 	 *            Funktion
 	 */
 	public void performLayoutDependendAction(MainLayoutHandler runnable);
+
+	/**
+	 * Lädt die Tastenkombinationen für das Menü und co neu.
+	 * 
+	 * @param keys
+	 *            Einstellungen der Key Bindings
+	 */
+	public void loadKeybinding(KeyCollection keys);
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
index 9e2c066a3f8fa0275756c0d3234a1e916f51269d..623ba4aadac4676dd2628e1ef48d8fff2bea9cee 100644
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
@@ -3,6 +3,7 @@ package de.tobias.playpad.viewcontroller.main;
 import java.util.ResourceBundle;
 
 import de.tobias.playpad.settings.ProfileSettings;
+import de.tobias.playpad.settings.keys.KeyCollection;
 import de.tobias.playpad.view.main.MenuType;
 import de.tobias.utils.ui.ContentViewController;
 import javafx.scene.Node;
@@ -169,4 +170,11 @@ public abstract class MenuToolbarViewController extends ContentViewController {
 	 * @see IMainViewController#showPage(int)
 	 */
 	public abstract void hilightPageButton(int page);
+
+	/**
+	 * Lädt das Keyboard Binding.
+	 * 
+	 * @param keys Einstellungen der Keybinding
+	 */
+	public abstract void loadKeybinding(KeyCollection keys);
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/GlobalSettingsTabViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/GlobalSettingsTabViewController.java
new file mode 100644
index 0000000000000000000000000000000000000000..d68501939df07675382c8c8e3b00e02ad73cc37b
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/GlobalSettingsTabViewController.java
@@ -0,0 +1,77 @@
+package de.tobias.playpad.viewcontroller.option;
+
+import java.util.ResourceBundle;
+
+import de.tobias.playpad.project.Project;
+import de.tobias.playpad.settings.GlobalSettings;
+import de.tobias.playpad.settings.Profile;
+import de.tobias.playpad.viewcontroller.main.IMainViewController;
+import de.tobias.utils.ui.ContentViewController;
+
+public abstract class GlobalSettingsTabViewController extends ContentViewController {
+
+	/**
+	 * Erstellt einen neuen Tab.
+	 * 
+	 * @param name
+	 *            Name der FXML
+	 * @param path
+	 *            Pfad zu FXML (ohne Dateiname)
+	 * @param localization
+	 *            ResourceBundle oder null
+	 */
+	public GlobalSettingsTabViewController(String name, String path, ResourceBundle localization) {
+		super(name, path, localization);
+	}
+
+	/**
+	 * Lädt alle Einstellungen vom Model in die GUI.
+	 * 
+	 * @param settings
+	 *            Aktuelles GlobalSettings
+	 */
+	public abstract void loadSettings(GlobalSettings settings);
+
+	/**
+	 * Speichert alle Änderungen in das Model.
+	 * 
+	 * @param settings
+	 *            Aktuelles GlobalSettings
+	 */
+	public abstract void saveSettings(GlobalSettings settings);
+
+	/**
+	 * Gibt <code>true</code> zurück, wenn im Hauptprogramm etwas neu geladen werden muss. Der eigentliche Reload wird in
+	 * {@link #reload(Profile, Project, IMainViewController)} ausgeführt.
+	 * 
+	 * @return <code>true</code> Benötigt Reload
+	 */
+	public abstract boolean needReload();
+
+	/**
+	 * Lädt gestimmte Einstellungen für die GUI neu.
+	 * 
+	 * @param settings
+	 *            Aktuelles GlobalSettings
+	 * @param project
+	 *            Aktuelles Projekt
+	 * @param controller
+	 *            Main View Controller
+	 */
+	public void reload(GlobalSettings settings, Project project, IMainViewController controller) {}
+
+	/**
+	 * Prüft ob die eingetragen Einstellungen erlaubt sind. Bei falschen Eingaben können die Einstellungen nicht geschlossen werden.
+	 * 
+	 * @return <code>true</code> Einstellungen erlaubt. <code>false</code> Einstellungen fehlerhaft.
+	 */
+	public abstract boolean validSettings();
+
+	/**
+	 * Gibt den Namen für den Tab zurück.
+	 * 
+	 * @return Display Name des Tabs.
+	 */
+	public abstract String name();
+
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/IGlobalSettingsViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/IGlobalSettingsViewController.java
new file mode 100644
index 0000000000000000000000000000000000000000..3f1c8bf5ed47431bb2bd65581fc35cb6b7ba9f3d
--- /dev/null
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/IGlobalSettingsViewController.java
@@ -0,0 +1,20 @@
+package de.tobias.playpad.viewcontroller.option;
+
+/**
+ * Schnittstelle um die GlobalSettingsView zu ändern.
+ * 
+ * @author tobias
+ *
+ * @since 5.1.0
+ */
+public interface IGlobalSettingsViewController {
+
+	/**
+	 * Fügt en Tab hinzu.
+	 * 
+	 * @param globalSettingsTabViewController
+	 *            tab
+	 */
+	public void addTab(GlobalSettingsTabViewController globalSettingsTabViewController);
+
+}
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/ISettingsViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/ISettingsViewController.java
similarity index 54%
rename from PlayWallCore/src/de/tobias/playpad/viewcontroller/ISettingsViewController.java
rename to PlayWallCore/src/de/tobias/playpad/viewcontroller/option/ISettingsViewController.java
index 173055b25647b514d39da9f6005ea04a3959a80b..88ad688b75f497a3634169abb5411bfeb93e7308 100644
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/ISettingsViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/ISettingsViewController.java
@@ -1,4 +1,4 @@
-package de.tobias.playpad.viewcontroller;
+package de.tobias.playpad.viewcontroller.option;
 
 /**
  * Schnittstelle um die ProfileSettingsView zu ändern.
@@ -12,9 +12,9 @@ public interface ISettingsViewController {
 	/**
 	 * Fügt en Tab hinzu.
 	 * 
-	 * @param videoSettingsTabViewController
+	 * @param profileSettingsTabViewController
 	 *            tab
 	 */
-	public void addTab(SettingsTabViewController videoSettingsTabViewController);
+	public void addTab(SettingsTabViewController profileSettingsTabViewController);
 
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/SettingsTabViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/SettingsTabViewController.java
similarity index 97%
rename from PlayWallCore/src/de/tobias/playpad/viewcontroller/SettingsTabViewController.java
rename to PlayWallCore/src/de/tobias/playpad/viewcontroller/option/SettingsTabViewController.java
index a8b9338e66561e84b099b118c42ef8808b2551ee..96c9975d277d67de33af0aeb7dab5a5073683312 100644
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/SettingsTabViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/SettingsTabViewController.java
@@ -1,4 +1,4 @@
-package de.tobias.playpad.viewcontroller;
+package de.tobias.playpad.viewcontroller.option;
 
 import java.util.ResourceBundle;
 
diff --git a/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/main/impl/MediaSettingsTabViewController.java b/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/main/impl/MediaSettingsTabViewController.java
index 0ebe6c7e678a04fa952aba4b8a5eb60bff3ce694..bdc355b727f71a6f6bfbcb2be0bfac78fe95e97f 100644
--- a/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/main/impl/MediaSettingsTabViewController.java
+++ b/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/main/impl/MediaSettingsTabViewController.java
@@ -7,8 +7,8 @@ import java.util.ResourceBundle;
 import de.tobias.playpad.mediaplugin.main.VideoSettings;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.settings.Profile;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
+import de.tobias.playpad.viewcontroller.option.SettingsTabViewController;
 import javafx.fxml.FXML;
 import javafx.scene.control.CheckBox;
 import javafx.scene.control.ComboBox;
diff --git a/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/video/VideoContentConntect.java b/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/video/VideoContentConntect.java
index 65a48ac94219ed5e8bcf28e4f0d1db0da86d1f69..43807c789cc2e58ed52fa27b4f5532c17f28a733 100644
--- a/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/video/VideoContentConntect.java
+++ b/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/video/VideoContentConntect.java
@@ -8,7 +8,7 @@ import de.tobias.playpad.pad.conntent.PadContent;
 import de.tobias.playpad.pad.conntent.PadContentConnect;
 import de.tobias.playpad.pad.view.IPadContentView;
 import de.tobias.playpad.viewcontroller.PadSettingsTabViewController;
-import de.tobias.playpad.viewcontroller.SettingsTabViewController;
+import de.tobias.playpad.viewcontroller.option.SettingsTabViewController;
 import de.tobias.utils.ui.icon.FontAwesomeType;
 import de.tobias.utils.ui.icon.FontIcon;
 import javafx.beans.property.SimpleStringProperty;