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 073819277159c23cc022a3c8eab2aa9da87397d9..883a13e0edf2c5c7c76ffaa083f2989ca1983184 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
+++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
@@ -17,8 +17,9 @@ main.menuitem.onTop=Fenster im Vordergrund
 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.projectSettings=Projekt Einstellungen...
+main.menuitem.profileSettings=Profil Einstellungen...
+main.menuitem.globalSettings=Globale (Programm) Einstellungen
 main.menuitem.about=�ber Play Wall...
 main.menuitem.website=Webseite besuchen...
 main.menuitem.senderror=Fehler senden...
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/actions/cartActions.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/actions/cartActions.fxml
index f51a447b46c39cce3eed03f403278af7ff0e9b40..58435207ea126084a7a545740393ec06917a404c 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/view/actions/cartActions.fxml
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/actions/cartActions.fxml
@@ -5,10 +5,8 @@
 <?import java.lang.*?>
 <?import javafx.scene.layout.*?>
 
-
 <VBox fx:id="buttonVbox" spacing="7.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <children>
-      <HBox fx:id="pageHbox" minHeight="20.0" spacing="7.0" VBox.vgrow="NEVER" />
       <GridPane fx:id="gridPane" alignment="CENTER" hgap="7.0" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" vgap="7.0" VBox.vgrow="NEVER">
         <columnConstraints>
           <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
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 df64599e49b9d652ec185132b564556c386e34a3..1c152d8540b4a2c2aae51f400625b556b9d4b17e 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
@@ -52,12 +52,13 @@
             <SeparatorMenuItem mnemonicParsing="false" />
             <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">
+                  <MenuItem fx:id="projectSettingsMenuItem" mnemonicParsing="false" onAction="#projectSettingsHandler" text="%main.menuitem.projectSettings" />
+            <MenuItem fx:id="profileSettingsMenuItem" mnemonicParsing="false" onAction="#profileSettingsHandler" text="%main.menuitem.profileSettings">
                <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">
+                  <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>
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/generalTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/generalTab.fxml
index c37bccfea43073122df709a2f0ec317b880e795f..e0e5718c6711d59122866c0304a39bfb2068f745 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/generalTab.fxml
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/profile/generalTab.fxml
@@ -5,111 +5,88 @@
 <?import javafx.scene.control.*?>
 <?import javafx.scene.layout.*?>
 
-<ScrollPane fitToWidth="true" prefHeight="775.0" prefWidth="590.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
-   <content>
-      <VBox spacing="14.0">
+
+<VBox spacing="14.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <Label text="%settings.gen.label.additional" underline="true" />
+      <HBox spacing="14.0">
+         <children>
+            <Label alignment="BASELINE_RIGHT" maxWidth="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.liveMode" />
+            <CheckBox fx:id="liveModeCheckBox" layoutX="30.0" layoutY="269.0" mnemonicParsing="false" text="%settings.gen.checkbox.liveMode" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="269.0" />
+         </children>
+      </HBox>
+      <HBox spacing="14.0">
+         <children>
+            <Label prefWidth="150.0" text="%settings.gen.label.liveMode.pageChange" />
+            <RadioButton fx:id="pageEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" />
+            <RadioButton fx:id="pageDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" />
+         </children>
+         <VBox.margin>
+            <Insets left="164.0" />
+         </VBox.margin>
+      </HBox>
+      <HBox spacing="14.0">
+         <children>
+            <Label prefWidth="150.0" text="%settings.gen.label.liveMode.dragPads" />
+            <RadioButton fx:id="dragEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" />
+            <RadioButton fx:id="dragDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" />
+         </children>
+         <VBox.margin>
+            <Insets left="164.0" />
+         </VBox.margin>
+      </HBox>
+      <HBox spacing="14.0">
+         <VBox.margin>
+            <Insets left="164.0" />
+         </VBox.margin>
+         <children>
+            <Label prefWidth="150.0" text="%settings.gen.label.liveMode.media" />
+            <RadioButton fx:id="fileEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" />
+            <RadioButton fx:id="fileDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" />
+         </children>
+      </HBox>
+      <HBox spacing="14.0">
+         <VBox.margin>
+            <Insets left="164.0" />
+         </VBox.margin>
+         <children>
+            <Label prefWidth="150.0" text="%settings.gen.label.liveMode.settings" />
+            <RadioButton fx:id="settingsEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" />
+            <RadioButton fx:id="settingsDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" />
+         </children>
+      </HBox>
+      <Label text="%settings.gen.label.liveModeInfo" wrapText="true">
+         <VBox.margin>
+            <Insets left="164.0" />
+         </VBox.margin>
+      </Label>
+      <HBox spacing="14.0">
+         <children>
+            <Label alignment="BASELINE_RIGHT" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.cache.label" />
+            <TextField fx:id="cacheTextField" promptText="C:\Users\Max\Cache" HBox.hgrow="ALWAYS" />
+            <Button mnemonicParsing="false" onAction="#cacheChooseHandler" text="%settings.gen.cache.button.choose" />
+         </children>
+      </HBox>
+      <HBox alignment="CENTER_LEFT" spacing="14.0">
          <children>
-            <Label text="%settings.gen.label.view" underline="true" />
-            <HBox spacing="14.0">
-               <children>
-                  <Label alignment="BASELINE_RIGHT" layoutX="21.0" layoutY="40.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.pages" />
-                  <TextField fx:id="pageCountTextField" prefWidth="50.0" />
-               </children>
-            </HBox>
-            <HBox spacing="14.0">
-               <children>
-                  <Label alignment="BASELINE_RIGHT" layoutX="20.0" layoutY="68.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.columns" />
-                  <TextField fx:id="columnTextField" prefWidth="50.0" />
-               </children>
-            </HBox>
-            <HBox spacing="14.0">
-               <children>
-                  <Label alignment="BASELINE_RIGHT" layoutX="18.0" layoutY="96.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.rows" />
-                  <TextField fx:id="rowTextField" prefWidth="50.0" />
-               </children>
-            </HBox>
-            <Separator prefHeight="2.0" prefWidth="600.0" />
-            <Label text="%settings.gen.label.additional" underline="true" />
-            <HBox spacing="14.0">
-               <children>
-                  <Label alignment="BASELINE_RIGHT" maxWidth="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.liveMode" />
-                  <CheckBox fx:id="liveModeCheckBox" layoutX="30.0" layoutY="269.0" mnemonicParsing="false" text="%settings.gen.checkbox.liveMode" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="269.0" />
-               </children>
-            </HBox>
-            <HBox spacing="14.0">
-               <children>
-                  <Label prefWidth="150.0" text="%settings.gen.label.liveMode.pageChange" />
-                  <RadioButton fx:id="pageEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" />
-                  <RadioButton fx:id="pageDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" />
-               </children>
-               <VBox.margin>
-                  <Insets left="164.0" />
-               </VBox.margin>
-            </HBox>
-            <HBox spacing="14.0">
-               <children>
-                  <Label prefWidth="150.0" text="%settings.gen.label.liveMode.dragPads" />
-                  <RadioButton fx:id="dragEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" />
-                  <RadioButton fx:id="dragDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" />
-               </children>
-               <VBox.margin>
-                  <Insets left="164.0" />
-               </VBox.margin>
-            </HBox>
-            <HBox spacing="14.0">
-               <VBox.margin>
-                  <Insets left="164.0" />
-               </VBox.margin>
-               <children>
-                  <Label prefWidth="150.0" text="%settings.gen.label.liveMode.media" />
-                  <RadioButton fx:id="fileEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" />
-                  <RadioButton fx:id="fileDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" />
-               </children>
-            </HBox>
-            <HBox spacing="14.0">
-               <VBox.margin>
-                  <Insets left="164.0" />
-               </VBox.margin>
-               <children>
-                  <Label prefWidth="150.0" text="%settings.gen.label.liveMode.settings" />
-                  <RadioButton fx:id="settingsEnable" mnemonicParsing="false" prefWidth="125.0" text="%settings.gen.radio.liveMode.enable" />
-                  <RadioButton fx:id="settingsDisable" mnemonicParsing="false" prefWidth="100.0" text="%settings.gen.radio.liveMode.disable" />
-               </children>
-            </HBox>
-            <Label text="%settings.gen.label.liveModeInfo" wrapText="true">
-               <VBox.margin>
-                  <Insets left="164.0" />
-               </VBox.margin>
-            </Label>
-            <HBox spacing="14.0">
-               <children>
-                  <Label alignment="BASELINE_RIGHT" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.cache.label" />
-                  <TextField fx:id="cacheTextField" promptText="C:\Users\Max\Cache" HBox.hgrow="ALWAYS" />
-                  <Button mnemonicParsing="false" onAction="#cacheChooseHandler" text="%settings.gen.cache.button.choose" />
-               </children>
-            </HBox>
-            <HBox alignment="CENTER_LEFT" spacing="14.0">
-               <children>
-                  <Label prefWidth="150.0" />
-                  <Button mnemonicParsing="false" onAction="#cacheResetButtonHandler" text="%settings.gen.cache.button.reset" />
-                  <Label fx:id="cacheSizeLabel" text="Label" />
-               </children>
-            </HBox>
-            <Label text="%settings.gen.cache.label.info" wrapText="true">
-               <VBox.margin>
-                  <Insets left="164.0" />
-               </VBox.margin>
-            </Label>
-            <Separator prefWidth="200.0" />
-            <Button alignment="TOP_LEFT" mnemonicParsing="false" onAction="#resetDialogs" text="%settings.gen.warning.button.reset">
-               <VBox.margin>
-                  <Insets left="164.0" />
-               </VBox.margin>
-            </Button>
+            <Label prefWidth="150.0" />
+            <Button mnemonicParsing="false" onAction="#cacheResetButtonHandler" text="%settings.gen.cache.button.reset" />
+            <Label fx:id="cacheSizeLabel" text="Label" />
          </children>
-         <padding>
-            <Insets bottom="14.0" left="14.0" right="14.0" top="14.0" />
-         </padding>
-      </VBox>
-   </content>
-</ScrollPane>
+      </HBox>
+      <Label text="%settings.gen.cache.label.info" wrapText="true">
+         <VBox.margin>
+            <Insets left="164.0" />
+         </VBox.margin>
+      </Label>
+      <Separator prefWidth="200.0" />
+      <Button alignment="TOP_LEFT" mnemonicParsing="false" onAction="#resetDialogs" text="%settings.gen.warning.button.reset">
+         <VBox.margin>
+            <Insets left="164.0" />
+         </VBox.margin>
+      </Button>
+   </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/project/generalTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/project/generalTab.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..846711017bc96d87dc8447291d4c5d1bcec0184a
--- /dev/null
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/project/generalTab.fxml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.*?>
+<?import java.lang.*?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.layout.*?>
+
+
+<VBox spacing="14.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <Label text="%settings.gen.label.view" underline="true" />
+      <HBox spacing="14.0">
+         <children>
+            <Label alignment="BASELINE_RIGHT" layoutX="21.0" layoutY="40.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.pages" />
+            <TextField fx:id="pageCountTextField" prefWidth="50.0" />
+         </children>
+      </HBox>
+      <HBox spacing="14.0">
+         <children>
+            <Label alignment="BASELINE_RIGHT" layoutX="20.0" layoutY="68.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.columns" />
+            <TextField fx:id="columnTextField" prefWidth="50.0" />
+         </children>
+      </HBox>
+      <HBox spacing="14.0">
+         <children>
+            <Label alignment="BASELINE_RIGHT" layoutX="18.0" layoutY="96.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%settings.gen.label.rows" />
+            <TextField fx:id="rowTextField" prefWidth="50.0" />
+         </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/project/projectSettingsView.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/project/projectSettingsView.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..23efae52a75f75d6b931db277299917bba3eea67
--- /dev/null
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/project/projectSettingsView.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/src/application.yml b/PlayWall/src/application.yml
index 2289010683445f25ef0b0f5837f49826c95409e3..29f0ca1f41e61c9d00f8740f489200bbedff362f 100644
--- a/PlayWall/src/application.yml
+++ b/PlayWall/src/application.yml
@@ -1,6 +1,6 @@
 name: PlayWall
 version: 5.0.1
-build: 32
+build: 33
 identifier: de.tobias.playpad
 main: de.tobias.playpad.PlayPadMain
 author: Tobias Ullerich
diff --git a/PlayWall/src/de/tobias/playpad/VersionUpdater.java b/PlayWall/src/de/tobias/playpad/VersionUpdater.java
index 6ad83209efd3bf78e38e8c92f0bf370ac310d94f..7cc6280d1f22f6614e5207f330a1a37afc2f2e0e 100644
--- a/PlayWall/src/de/tobias/playpad/VersionUpdater.java
+++ b/PlayWall/src/de/tobias/playpad/VersionUpdater.java
@@ -1,13 +1,76 @@
 package de.tobias.playpad;
 
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.UUID;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.SAXReader;
+import org.dom4j.io.XMLWriter;
+
+import de.tobias.playpad.project.ProjectSettings;
 import de.tobias.utils.application.App;
+import de.tobias.utils.application.container.PathType;
 import de.tobias.utils.application.update.UpdateService;
 
 public class VersionUpdater implements UpdateService {
 
 	@Override
 	public void update(App app, long oldVersion, long newVersion) {
-		
+		try {
+			if (newVersion >= 33 && oldVersion < 33)
+				update33(app);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void update33(App app) throws DocumentException, IOException {
+		SAXReader reader = new SAXReader();
+
+		Document projectsDocument = reader.read(Files.newInputStream(app.getPath(PathType.CONFIGURATION, "Projects.xml")));
+		for (Object obj : projectsDocument.getRootElement().elements("Project")) {
+			if (obj instanceof Element) {
+				Element element = (Element) obj;
+
+				UUID profile = UUID.fromString(element.attributeValue("profile"));
+				UUID project = UUID.fromString(element.attributeValue("uuid"));
+
+				updateProject(profile, project, app);
+			}
+		}
+	}
+
+	private void updateProject(UUID profile, UUID project, App app) throws DocumentException, IOException {
+		Path profileSettings = app.getPath(PathType.CONFIGURATION, profile.toString(), "ProfileSettings.xml");
+		SAXReader reader = new SAXReader();
+
+		Document document = reader.read(Files.newInputStream(profileSettings));
+		Element rootElement = document.getRootElement();
+
+		int pages = Integer.valueOf(rootElement.element("PageCount").getStringValue());
+		int rows = Integer.valueOf(rootElement.element("Rows").getStringValue());
+		int columns = Integer.valueOf(rootElement.element("Columns").getStringValue());
+
+		Path projectSettings = app.getPath(PathType.DOCUMENTS, project.toString() + ".xml");
+		Document projectDocument = reader.read(Files.newInputStream(projectSettings));
+		Element rootProjectElement = projectDocument.getRootElement();
+		Element settingsElement = rootProjectElement.addElement("Settings");
+
+		ProjectSettings projectSettings2 = new ProjectSettings();
+		projectSettings2.setColumns(columns);
+		projectSettings2.setRows(rows);
+		projectSettings2.setPageCount(pages);
+
+		projectSettings2.save(settingsElement);
+
+		XMLWriter writer = new XMLWriter(Files.newOutputStream(projectSettings), OutputFormat.createPrettyPrint());
+		writer.write(projectDocument);
+		writer.close();
 	}
 
 }
diff --git a/PlayWall/src/de/tobias/playpad/components/Keys.xml b/PlayWall/src/de/tobias/playpad/components/Keys.xml
index 23b7dabb82853c7f34a41fc89055920fa8f9d483..d5f0239e01f66870f30a2311003816151f3532af 100644
--- a/PlayWall/src/de/tobias/playpad/components/Keys.xml
+++ b/PlayWall/src/de/tobias/playpad/components/Keys.xml
@@ -1,3 +1,4 @@
+
 <Keys>
 	<Windows>
 		<Key id="new_proj" name="main.menuitem.new" key="N" ctrl="true" alt="false" meta="false" shift="false"/>
@@ -8,8 +9,9 @@
 		<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="project_settings" name="main.menuitem.projectSettings" key="Comma" ctrl="true" alt="true" meta="false" shift="false"/>
+		<Key id="profile_settings" name="main.menuitem.profileSettings" key="Comma" ctrl="true" alt="false" meta="false" shift="false"/>
+		<Key id="global_settings" name="main.menuitem.globalSettings" key="Comma" 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"/>
@@ -24,8 +26,9 @@
 		<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="project_settings" name="main.menuitem.projectSettings" key="Comma" ctrl="false" alt="true" meta="true" shift="false"/>
+		<Key id="profile_settings" name="main.menuitem.profileSettings" key="Comma" ctrl="false" alt="false" meta="true" shift="false"/>
+		<Key id="global_settings" name="main.menuitem.globalSettings" key="Comma" 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"/>
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index 442bc599da42bf91ebd29b9d46f223472811fe1d..adc1a04d9b370bd22cfa28997bad275ccfba4b13 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -41,8 +41,10 @@ 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.ProfileSettingsTabViewController;
+import de.tobias.playpad.viewcontroller.option.ProjectSettingsTabViewController;
 import de.tobias.playpad.viewcontroller.option.global.GlobalSettingsViewController;
-import de.tobias.playpad.viewcontroller.option.profile.SettingsViewController;
+import de.tobias.playpad.viewcontroller.option.profile.ProfileSettingsViewController;
+import de.tobias.playpad.viewcontroller.option.project.ProjectSettingsViewController;
 import de.tobias.playpad.viewcontroller.pad.PadDragListener;
 import de.tobias.utils.application.ApplicationInfo;
 import de.tobias.utils.application.ApplicationUtils;
@@ -89,7 +91,9 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	@FXML protected CheckMenuItem dndModeMenuItem;
 	@FXML protected MenuItem errorMenu;
 	@FXML protected MenuItem pluginMenu;
-	@FXML protected MenuItem settingsMenuItem;
+
+	@FXML protected MenuItem projectSettingsMenuItem;
+	@FXML protected MenuItem profileSettingsMenuItem;
 	@FXML protected MenuItem globalSettingsMenuItem;
 
 	@FXML protected CheckMenuItem fullScreenMenuItem;
@@ -105,7 +109,9 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	@FXML protected Label liveLabel;
 
 	private IMainViewController mainViewController;
-	private SettingsViewController settingsViewController;
+
+	private ProjectSettingsViewController projectSettingsViewController;
+	private ProfileSettingsViewController profileSettingsViewController;
 	private GlobalSettingsViewController globalSettingsViewController;
 
 	public DesktopMenuToolbarViewController(IMainViewController controller) {
@@ -203,7 +209,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		setKeyBindingForMenu(dndModeMenuItem, keys.getKey("dnd"));
 		setKeyBindingForMenu(errorMenu, keys.getKey("errors"));
 		setKeyBindingForMenu(pluginMenu, keys.getKey("plugins"));
-		setKeyBindingForMenu(settingsMenuItem, keys.getKey("profile_settings"));
+		setKeyBindingForMenu(projectSettingsMenuItem, keys.getKey("project_settings"));
+		setKeyBindingForMenu(profileSettingsMenuItem, keys.getKey("profile_settings"));
 		setKeyBindingForMenu(globalSettingsMenuItem, keys.getKey("global_settings"));
 
 		setKeyBindingForMenu(fullScreenMenuItem, keys.getKey("window_fullscreen"));
@@ -218,7 +225,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		dndModeMenuItem.setDisable(false);
 		errorMenu.setDisable(false);
 		pluginMenu.setDisable(false);
-		settingsMenuItem.setDisable(false);
+		projectSettingsMenuItem.setDisable(false);
+		profileSettingsMenuItem.setDisable(false);
 		globalSettingsMenuItem.setDisable(false);
 
 		fullScreenMenuItem.setDisable(false);
@@ -288,7 +296,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		dndModeMenuItem.setDisable(true);
 		errorMenu.setDisable(true);
 		pluginMenu.setDisable(true);
-		settingsMenuItem.setDisable(true);
+		projectSettingsMenuItem.setDisable(true);
+		profileSettingsMenuItem.setDisable(true);
 		globalSettingsMenuItem.setDisable(true);
 
 		fullScreenMenuItem.setDisable(true);
@@ -457,7 +466,38 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	}
 
 	@FXML
-	void settingsHandler(ActionEvent event) {
+	void projectSettingsHandler(ActionEvent event) {
+		Midi midi = Midi.getInstance();
+		Project currentProject = PlayPadMain.getProgramInstance().getCurrentProject();
+
+		if (projectSettingsViewController == null) {
+			Stage mainStage = mainViewController.getStage();
+
+			Runnable onFinish = () ->
+			{
+				midi.setListener(mainViewController.getMidiHandler());
+
+				for (ProjectSettingsTabViewController controller : projectSettingsViewController.getTabs()) {
+					if (controller.needReload()) {
+						controller.reload(currentProject.getSettings(), currentProject, mainViewController);
+					}
+				}
+
+				profileSettingsViewController = null;
+				mainStage.toFront();
+			};
+
+			projectSettingsViewController = new ProjectSettingsViewController(mainViewController.getScreen(), mainStage, currentProject,
+					onFinish);
+
+			projectSettingsViewController.getStage().show();
+		} else if (projectSettingsViewController.getStage().isShowing()) {
+			projectSettingsViewController.getStage().toFront();
+		}
+	}
+
+	@FXML
+	void profileSettingsHandler(ActionEvent event) {
 		Midi midi = Midi.getInstance();
 		Project currentProject = PlayPadMain.getProgramInstance().getCurrentProject();
 
@@ -468,7 +508,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 			return;
 		}
 
-		if (settingsViewController == null) {
+		if (profileSettingsViewController == null) {
 			Stage mainStage = mainViewController.getStage();
 
 			Runnable onFinish = () ->
@@ -476,7 +516,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 				midi.setListener(mainViewController.getMidiHandler());
 
 				boolean change = false;
-				for (ProfileSettingsTabViewController controller : settingsViewController.getTabs()) {
+				for (ProfileSettingsTabViewController controller : profileSettingsViewController.getTabs()) {
 					if (controller.needReload()) {
 						change = true;
 						controller.reload(Profile.currentProfile(), currentProject, mainViewController);
@@ -487,15 +527,16 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 					PlayPadMain.getProgramInstance().getSettingsListener().forEach(l -> l.onChange(Profile.currentProfile()));
 				}
 
-				settingsViewController = null;
+				profileSettingsViewController = null;
 				mainStage.toFront();
 			};
 
-			settingsViewController = new SettingsViewController(midi, mainViewController.getScreen(), mainStage, currentProject, onFinish);
+			profileSettingsViewController = new ProfileSettingsViewController(midi, mainViewController.getScreen(), mainStage, currentProject,
+					onFinish);
 
-			settingsViewController.getStage().show();
-		} else if (settingsViewController.getStage().isShowing()) {
-			settingsViewController.getStage().toFront();
+			profileSettingsViewController.getStage().show();
+		} else if (profileSettingsViewController.getStage().isShowing()) {
+			profileSettingsViewController.getStage().toFront();
 		}
 	}
 
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java
index 1df903b3f42497a8e98c4577f7280a65634d2dfd..6326b9c7015b56a4e6510a47bde8cd42676311bd 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java
@@ -5,7 +5,6 @@ import java.util.List;
 import org.controlsfx.control.SegmentedButton;
 
 import de.tobias.playpad.PlayPadMain;
-import de.tobias.playpad.Strings;
 import de.tobias.playpad.action.Mapping;
 import de.tobias.playpad.action.cartaction.CartAction;
 import de.tobias.playpad.action.connect.CartActionConnect;
@@ -13,13 +12,11 @@ import de.tobias.playpad.project.Project;
 import de.tobias.playpad.project.ProjectSettings;
 import de.tobias.playpad.viewcontroller.IMappingTabViewController;
 import de.tobias.utils.ui.ContentViewController;
-import de.tobias.utils.util.Localization;
 import javafx.fxml.FXML;
 import javafx.scene.control.ToggleButton;
 import javafx.scene.control.ToggleGroup;
 import javafx.scene.layout.ColumnConstraints;
 import javafx.scene.layout.GridPane;
-import javafx.scene.layout.HBox;
 import javafx.scene.layout.Priority;
 import javafx.scene.layout.RowConstraints;
 import javafx.scene.layout.VBox;
@@ -36,7 +33,6 @@ import javafx.scene.layout.VBox;
 public class CartActionsViewController extends ContentViewController {
 
 	@FXML private VBox buttonVbox;
-	@FXML private HBox pageHbox;
 
 	private ToggleGroup cartsToggle;
 	@FXML private GridPane gridPane;
@@ -56,21 +52,6 @@ public class CartActionsViewController extends ContentViewController {
 
 		showCartButtons(settings, 0);
 		VBox.setVgrow(gridPane, Priority.ALWAYS);
-
-		SegmentedButton segmentedButton = new SegmentedButton();
-		for (int i = 0; i < settings.getPageCount(); i++) {
-			ToggleButton button = new ToggleButton(Localization.getString(Strings.UI_Window_Main_PageButton, i + 1));
-			button.setOnAction(e ->
-			{
-				int page = Integer.valueOf(((ToggleButton) e.getSource()).getUserData().toString());
-				showCartButtons(settings, page);
-			});
-			button.setUserData(i);
-			segmentedButton.getButtons().add(button);
-		}
-		segmentedButton.getStyleClass().add(SegmentedButton.STYLE_CLASS_DARK);
-		pageHbox.getChildren().add(segmentedButton);
-		segmentedButton.getButtons().get(0).setSelected(true); // Select First Toggle
 	}
 
 	@Override
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/SettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
similarity index 95%
rename from PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/SettingsViewController.java
rename to PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
index 760d8c50be1e1ff894b88e426a48eeb9f7fcd70f..e24d1316bf4a65ef2549a4f37374007e1c24291f 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/SettingsViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
@@ -28,7 +28,7 @@ import javafx.stage.Screen;
 import javafx.stage.Stage;
 import javafx.stage.Window;
 
-public class SettingsViewController extends ViewController implements IProfileSettingsViewController {
+public class ProfileSettingsViewController extends ViewController implements IProfileSettingsViewController {
 
 	@FXML private TabPane tabPane;
 	@FXML private ToggleButton lockedButton;
@@ -38,7 +38,7 @@ public class SettingsViewController extends ViewController implements IProfileSe
 
 	private Runnable onFinish;
 
-	public SettingsViewController(Midi midiHandler, Screen currentScreen, Window owner, Project project, Runnable onFinish) {
+	public ProfileSettingsViewController(Midi midiHandler, Screen currentScreen, Window owner, Project project, Runnable onFinish) {
 		super("settingsView", "de/tobias/playpad/assets/view/option/profile/", null, PlayPadMain.getUiResourceBundle());
 		this.onFinish = onFinish;
 
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java
index 8787a0bb0a2eb2ec93ed72bba20b51d6997c1430..455df6387579b36758fa7a28dc6cbf4a5ed3ae4d 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/ProjectSettingsViewController.java
@@ -5,6 +5,7 @@ import java.util.List;
 
 import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.Strings;
+import de.tobias.playpad.project.Project;
 import de.tobias.playpad.project.ProjectSettings;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.viewcontroller.option.IProjectSettingsViewController;
@@ -17,6 +18,7 @@ import javafx.scene.control.Button;
 import javafx.scene.control.Tab;
 import javafx.scene.control.TabPane;
 import javafx.scene.control.ToggleButton;
+import javafx.stage.Screen;
 import javafx.stage.Stage;
 import javafx.stage.Window;
 
@@ -31,12 +33,15 @@ public class ProjectSettingsViewController extends ViewController implements IPr
 
 	private Runnable onFinish;
 
-	public ProjectSettingsViewController(Window owner, ProjectSettings settings, Runnable onFinish) {
+	public ProjectSettingsViewController(Screen currentScreen, Window owner, Project project, Runnable onFinish) {
 		super("projectSettingsView", "de/tobias/playpad/assets/view/option/project/", null, PlayPadMain.getUiResourceBundle());
 		this.onFinish = onFinish;
-		this.settings = settings;
+		this.settings = project.getSettings();
 
 		getStage().initOwner(owner);
+		boolean activePlayer = project.hasPlayedPlayers();
+
+		addTab(new GeneralTabViewController(currentScreen, this, activePlayer));
 
 		// Show Current Settings
 		loadTabs(settings);
diff --git a/PlayWallCore/src/de/tobias/playpad/project/ProjectSettings.java b/PlayWallCore/src/de/tobias/playpad/project/ProjectSettings.java
index 64dd0940888b32c78b061ce00b87180a785708d4..36bff9faf9d91baac19e74b26be963bf73a742b9 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/ProjectSettings.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/ProjectSettings.java
@@ -43,10 +43,14 @@ public class ProjectSettings {
 	}
 
 	public void setColumns(int columns) {
+		if (columns > MAX_COLUMNS)
+			columns = MAX_COLUMNS;
 		this.columns = columns;
 	}
 
 	public void setRows(int rows) {
+		if (rows > MAX_ROWS)
+			rows = MAX_ROWS;
 		this.rows = rows;
 	}
 
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java
index bb8111f0867057b8bde2f400120c5effc66c1df7..da58fd57101aaad3bffefe01a6134597289b20da 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java
@@ -1,9 +1,9 @@
 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;
+import javafx.scene.input.KeyCombination;
 
 public class Key implements Displayable {
 
@@ -105,12 +105,10 @@ public class Key implements Displayable {
 
 	@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();
-		}
+		if (!getKeyCode().isEmpty())
+			return KeyCombination.valueOf(getKeyCode()).getDisplayText();
+		else
+			return "";
 	}
 
 	private StringProperty displayProperty = new SimpleStringProperty();