diff --git a/src/main/scala/de/tobias/playpad/server/project/settings/PadSettings.scala b/src/main/scala/de/tobias/playpad/server/project/settings/PadSettings.scala
new file mode 100644
index 0000000000000000000000000000000000000000..45d3f973672614d7dfc32f6e91a83a27cbffcf7f
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/project/settings/PadSettings.scala
@@ -0,0 +1,32 @@
+package de.tobias.playpad.server.project.settings
+
+import java.util.UUID
+import javafx.util.Duration
+
+import de.tobias.playpad.server.json._
+import de.tobias.playpad.server.project.{Design, Pad}
+
+class PadSettings {
+
+	@JsonName(value = "id", handler = classOf[UUIDSerializerHandler])
+	var id: UUID = UUID.randomUUID()
+
+	@JsonName(value = "volume", handler = classOf[DoubleSerializerHandler])
+	var volume: Double = _
+	@JsonName(value = "loop", handler = classOf[BooleanSerializerHandler])
+	var loop: Boolean = _
+
+	@JsonName("timeMode")
+	var timeMode: String = _ // In PlayWallDesktop ENUM
+
+	@JsonObj("fade")
+	var fade: Fade = _
+	@JsonName(value = "warning", handler = classOf[DurationSerializerHandler])
+	var warning: Duration = _
+
+	@JsonObj("design")
+	var design: Design = _
+
+	@JsonParent
+	var pad: Pad = _
+}
diff --git a/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala b/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala
index 198c8b55e3263e3ee0069109ad9a02a9e2074521..ba527fe6f318720971f48830d239f2f841f84503 100644
--- a/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/utils/SqlDef.scala
@@ -32,8 +32,14 @@ object SqlDef {
 
 	val DESIGN = "Design"
 	val DESIGN_ID = "id"
-	val DESIGN_PAD_REF = "pad_id"
+	val DESIGN_PAD_REF = "settings_id"
 	val DESIGN_BACKGROUND_COLOR = "background_color"
 	val DESIGN_PLAY_COLOR = "play_color"
 
+	val PAD_SETTINGS = "PadSettings"
+	val PAD_SETTINGS_PAD_REF = "pad_id"
+	val PAD_SETTINGS_VOLUME = "volume"
+	val PAD_SETTINGS_LOOP = "looping"
+	val PAD_SETTINGS_TIME_MODE = "timemode"
+	val PAD_SETTINGS_WARNING = "warning"
 }
diff --git a/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala b/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala
index c19a5c065fad3f01bb7106c55770393ec97cce35..f306ae6d2c166e243d392ffb1c3082803921b2f9 100644
--- a/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala
@@ -32,8 +32,13 @@ object SqlHelper {
 				preparedStatement.setString(2, value)
 				preparedStatement.setString(3, value)
 			case value: Boolean =>
-				preparedStatement.setBoolean(2, value)
-				preparedStatement.setBoolean(3, value)
+				val v = if (value) {
+					1
+				} else {
+					0
+				}
+				preparedStatement.setInt(2, v)
+				preparedStatement.setInt(3, v)
 			case value: Int =>
 				preparedStatement.setInt(2, value)
 				preparedStatement.setInt(3, value)
@@ -51,7 +56,6 @@ object SqlHelper {
 				preparedStatement.setNull(3, NULL)
 
 		}
-
 		preparedStatement
 	}
 
@@ -96,66 +100,67 @@ object SqlHelper {
 			  |  `project_id` varchar(48) DEFAULT NULL,
 			  |  PRIMARY KEY (`id`),
 			  |  UNIQUE KEY `id` (`id`),
-			  |  CONSTRAINT `Page_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `Project` (`id`) ON DELETE CASCADE
+			  |  KEY `project_id` (`project_id`),
+			  |  CONSTRAINT `Page_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `Project` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 			  |) ENGINE=InnoDB DEFAULT CHARSET=latin1;""".stripMargin)
 
 		createTable(
-			"""CREATE TABLE IF NOT EXISTS `Fade` (
+			"""CREATE TABLE IF NOT EXISTS `Pad` (
 			  |  `id` varchar(48) NOT NULL DEFAULT '',
-			  |  `fadeIn` int(11) DEFAULT NULL,
-			  |  `fadeOut` int(11) DEFAULT NULL,
-			  |  `fadeInStart` tinyint(1) DEFAULT NULL,
-			  |  `fadeInPause` tinyint(1) DEFAULT NULL,
-			  |  `fadeOutPause` tinyint(1) DEFAULT NULL,
-			  |  `fadeOutStop` tinyint(1) DEFAULT NULL,
-			  |  PRIMARY KEY (`id`)
+			  |  `name` varchar(255) DEFAULT NULL,
+			  |  `position` int(11) DEFAULT NULL,
+			  |  `content_type` varchar(100) DEFAULT NULL,
+			  |  `page_id` varchar(48) DEFAULT NULL,
+			  |  PRIMARY KEY (`id`),
+			  |  UNIQUE KEY `id` (`id`),
+			  |  KEY `Pad_ibfk_1` (`page_id`),
+			  |  CONSTRAINT `Pad_ibfk_1` FOREIGN KEY (`page_id`) REFERENCES `Page` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 			  |) ENGINE=InnoDB DEFAULT CHARSET=latin1;""".stripMargin)
 		createTable(
-			"""CREATE TABLE IF NOT EXISTS `Design` (
+			"""CREATE TABLE IF NOT EXISTS `Path` (
 			  |  `id` varchar(40) NOT NULL DEFAULT '',
-			  |  `background_color` varchar(20) DEFAULT NULL,
-			  |  `play_color` varchar(20) DEFAULT NULL,
-			  |  PRIMARY KEY (`id`)
+			  |  `filename` text,
+			  |  `pad_id` varchar(40) DEFAULT NULL,
+			  |  PRIMARY KEY (`id`),
+			  |  KEY `pad_id` (`pad_id`),
+			  |  CONSTRAINT `Path_ibfk_1` FOREIGN KEY (`pad_id`) REFERENCES `Pad` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 			  |) ENGINE=InnoDB DEFAULT CHARSET=latin1;""".stripMargin)
+
 		createTable(
 			"""CREATE TABLE IF NOT EXISTS `PadSettings` (
 			  |  `id` varchar(48) NOT NULL DEFAULT '',
 			  |  `volume` double DEFAULT NULL,
 			  |  `loop` tinyint(1) DEFAULT NULL,
 			  |  `timeMode` varchar(20) DEFAULT NULL,
-			  |  `fade` varchar(48) DEFAULT NULL,
 			  |  `warning` int(11) DEFAULT NULL,
-			  |  `design` varchar(48) DEFAULT NULL,
+			  |  `pad_id` varchar(48) DEFAULT NULL,
 			  |  PRIMARY KEY (`id`),
-			  |  KEY `fade` (`fade`),
-			  |  KEY `design` (`design`),
-			  |  CONSTRAINT `PadSettings_ibfk_2` FOREIGN KEY (`design`) REFERENCES `Design` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
-			  |  CONSTRAINT `PadSettings_ibfk_1` FOREIGN KEY (`fade`) REFERENCES `Fade` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+			  |  KEY `pad_id` (`pad_id`),
+			  |  CONSTRAINT `PadSettings_ibfk_1` FOREIGN KEY (`pad_id`) REFERENCES `Pad` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 			  |) ENGINE=InnoDB DEFAULT CHARSET=latin1;""".stripMargin)
-
 		createTable(
-			"""CREATE TABLE IF NOT EXISTS `Pad` (
-			  |  `id` varchar(48) NOT NULL DEFAULT '',
-			  |  `name` varchar(255) DEFAULT NULL,
-			  |  `position` int(11) DEFAULT NULL,
-			  |  `content_type` varchar(100) DEFAULT NULL,
-			  |  `page_id` varchar(48) DEFAULT NULL,
+			"""CREATE TABLE IF NOT EXISTS `Design` (
+			  |  `id` varchar(40) NOT NULL DEFAULT '',
+			  |  `background_color` varchar(20) DEFAULT NULL,
+			  |  `play_color` varchar(20) DEFAULT NULL,
 			  |  `settings_id` varchar(48) DEFAULT NULL,
 			  |  PRIMARY KEY (`id`),
-			  |  UNIQUE KEY `id` (`id`),
-			  |  KEY `Pad_ibfk_1` (`page_id`),
 			  |  KEY `settings_id` (`settings_id`),
-			  |  CONSTRAINT `Pad_ibfk_2` FOREIGN KEY (`settings_id`) REFERENCES `PadSettings` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
-			  |  CONSTRAINT `Pad_ibfk_1` FOREIGN KEY (`page_id`) REFERENCES `Page` (`id`) ON DELETE CASCADE
+			  |  CONSTRAINT `Design_ibfk_1` FOREIGN KEY (`settings_id`) REFERENCES `PadSettings` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 			  |) ENGINE=InnoDB DEFAULT CHARSET=latin1;""".stripMargin)
 		createTable(
-			"""CREATE TABLE IF NOT EXISTS `Path` (
-			  |  `id` varchar(40) NOT NULL DEFAULT '',
-			  |  `filename` text,
-			  |  `pad_id` varchar(40) DEFAULT NULL,
+			"""CREATE TABLE IF NOT EXISTS `Fade` (
+			  |  `id` varchar(48) NOT NULL DEFAULT '',
+			  |  `fadeIn` int(11) DEFAULT NULL,
+			  |  `fadeOut` int(11) DEFAULT NULL,
+			  |  `fadeInStart` tinyint(1) DEFAULT NULL,
+			  |  `fadeInPause` tinyint(1) DEFAULT NULL,
+			  |  `fadeOutPause` tinyint(1) DEFAULT NULL,
+			  |  `fadeOutStop` tinyint(1) DEFAULT NULL,
+			  |  `padSettings_id` varchar(48) DEFAULT NULL,
 			  |  PRIMARY KEY (`id`),
-			  |  KEY `pad_id` (`pad_id`),
-			  |  CONSTRAINT `Path_ibfk_1` FOREIGN KEY (`pad_id`) REFERENCES `Pad` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+			  |  KEY `padSettings_id` (`padSettings_id`),
+			  |  CONSTRAINT `Fade_ibfk_1` FOREIGN KEY (`padSettings_id`) REFERENCES `PadSettings` (`id`)
 			  |) ENGINE=InnoDB DEFAULT CHARSET=latin1;""".stripMargin)
 	}
 }
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/ProjectSyncHandler.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/ProjectSyncHandler.scala
index 58b8518361ca76ea8cb197c447ed4b609e714ca7..fd6f98722bd31a9ac9d83303978db79d3f2ab846 100644
--- a/src/main/scala/de/tobias/playpad/server/server/project/sync/ProjectSyncHandler.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/ProjectSyncHandler.scala
@@ -10,6 +10,7 @@ import de.tobias.playpad.server.account.Account
 import de.tobias.playpad.server.project.utils.SqlDef
 import de.tobias.playpad.server.server.SqlHelper
 import de.tobias.playpad.server.server.project.sync.listener.design.{DesignAddListener, DesignUpdateListener}
+import de.tobias.playpad.server.server.project.sync.listener.pad.settings.{PadSettingsAddListener, PadSettingsUpdateListener}
 import de.tobias.playpad.server.server.project.sync.listener.pad.{PadAddListener, PadClearListener, PadRemoveListener, PadUpdateListener}
 import de.tobias.playpad.server.server.project.sync.listener.page.{PageAddListener, PageRemoveListener, PageUpdateListener}
 import de.tobias.playpad.server.server.project.sync.listener.path.{PathAddListener, PathRemoveListener}
@@ -47,7 +48,10 @@ import scala.collection.{Map, mutable}
 		"path-rm" -> new PathRemoveListener(),
 
 		"design-add" -> new DesignAddListener(),
-		"design-update" -> new DesignUpdateListener()
+		"design-update" -> new DesignUpdateListener(),
+
+		"pad-settings-add" -> new PadSettingsAddListener(),
+		"pad-settings-update" -> new PadSettingsUpdateListener()
 	)
 
 	@OnWebSocketConnect def onConnect(serverSession: Session): Unit = {
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala
index 825e9d00a24c0a8da4dc535ec877c70e7f26a4ac..4c89fab018e8ac2e39ea831cc422314bb6c5482d 100644
--- a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala
@@ -15,11 +15,11 @@ import de.tobias.playpad.server.server.project.sync.listener.Listener
 class DesignAddListener extends Listener {
 	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
 		val designId = UUID.fromString(json.get("id").getAsString)
-		val padId = UUID.fromString(json.get("pad").getAsString)
+		val padSettingsId = UUID.fromString(json.get("pad_settings").getAsString)
 		val backgroundColor = json.get("background_color").getAsString
 		val playColor = json.get("play_color").getAsString
 
-		SqlHelper.insertOrUpdate(connection, SqlDef.DESIGN, designId, SqlDef.DESIGN_PAD_REF, padId)
+		SqlHelper.insertOrUpdate(connection, SqlDef.DESIGN, designId, SqlDef.DESIGN_PAD_REF, padSettingsId)
 		SqlHelper.insertOrUpdate(connection, SqlDef.DESIGN, designId, SqlDef.DESIGN_BACKGROUND_COLOR, backgroundColor)
 		SqlHelper.insertOrUpdate(connection, SqlDef.DESIGN, designId, SqlDef.DESIGN_PLAY_COLOR, playColor)
 	}
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala
index f856bc9de5c9688f05553dc9e5fa1ab4e4c8f4da..b937ddd896c439bc02cbc95a5671af3386a9c512 100644
--- a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala
@@ -15,14 +15,14 @@ import de.tobias.playpad.server.server.project.sync.listener.Listener
 class DesignUpdateListener extends Listener {
 	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
 		val designId = UUID.fromString(json.get("id").getAsString)
-		val padId = UUID.fromString(json.get("pad").getAsString)
+		val padSettingsId = UUID.fromString(json.get("pad_settings").getAsString)
 		val field = json.get("field").getAsString
 
-		SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_PAD_REF, padId)
+		SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_PAD_REF, padSettingsId)
 
 		field match {
 			case "background_color" => SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_BACKGROUND_COLOR, json.get("value").getAsString)
-			case "play_color" => SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_PLAY_COLOR, json.get("value").getAsInt)
+			case "play_color" => SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_PLAY_COLOR, json.get("value").getAsString)
 		}
 	}
 }
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/pad/settings/PadSettingsAddListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/pad/settings/PadSettingsAddListener.scala
new file mode 100644
index 0000000000000000000000000000000000000000..bb389e10916db0ce6de3a25bb6844815b6a09aed
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/pad/settings/PadSettingsAddListener.scala
@@ -0,0 +1,33 @@
+package de.tobias.playpad.server.server.project.sync.listener.pad.settings
+
+import java.sql.Connection
+import java.util.UUID
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.server.account.Session
+import de.tobias.playpad.server.project.utils.SqlDef
+import de.tobias.playpad.server.server.SqlHelper
+import de.tobias.playpad.server.server.project.sync.listener.Listener
+
+class PadSettingsAddListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val padSettingsId = UUID.fromString(json.get("id").getAsString)
+		val padId = UUID.fromString(json.get("pad_id").getAsString)
+		val volume = json.get("volume").getAsDouble
+		val loop = json.get("loop").getAsBoolean
+
+		SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, padSettingsId, SqlDef.PAD_SETTINGS_PAD_REF, padId)
+		SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, padSettingsId, SqlDef.PAD_SETTINGS_VOLUME, volume)
+		SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, padSettingsId, SqlDef.PAD_SETTINGS_LOOP, loop)
+
+		if (json.get("time_mode") != null) {
+			val timeMode = json.get("time_mode").getAsString
+			SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, padSettingsId, SqlDef.PAD_SETTINGS_TIME_MODE, timeMode)
+		}
+
+		if (json.get("warning") != null) {
+			val warning = json.get("warning").getAsInt
+			SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, padSettingsId, SqlDef.PAD_SETTINGS_WARNING, warning)
+		}
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/pad/settings/PadSettingsUpdateListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/pad/settings/PadSettingsUpdateListener.scala
new file mode 100644
index 0000000000000000000000000000000000000000..a1b9790a0d6f553c6b1d0fba57509aa8b3edfe50
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/pad/settings/PadSettingsUpdateListener.scala
@@ -0,0 +1,39 @@
+package de.tobias.playpad.server.server.project.sync.listener.pad.settings
+
+import java.sql.Connection
+import java.util.UUID
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.server.account.Session
+import de.tobias.playpad.server.project.utils.SqlDef
+import de.tobias.playpad.server.server.SqlHelper
+import de.tobias.playpad.server.server.project.sync.listener.Listener
+
+class PadSettingsUpdateListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val settingsId = UUID.fromString(json.get("id").getAsString)
+		val padId = UUID.fromString(json.get("pad_id").getAsString)
+		val field = json.get("field").getAsString
+
+		SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, settingsId, SqlDef.PAD_SETTINGS_PAD_REF, padId)
+
+		field match {
+			case "volume" => SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, settingsId, SqlDef.PAD_SETTINGS_VOLUME, json.get("value").getAsDouble)
+			case "loop" => SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, settingsId, SqlDef.PAD_SETTINGS_LOOP, json.get("value").getAsBoolean)
+			case "time_mode" =>
+				val value = if (!json.get("value").isJsonNull) {
+					json.get("value").getAsString
+				} else {
+					null
+				}
+				SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, settingsId, SqlDef.PAD_SETTINGS_TIME_MODE, value)
+			case "warning" =>
+				val value = if (!json.get("value").isJsonNull) {
+					json.get("value").getAsInt
+				} else {
+					null
+				}
+				SqlHelper.insertOrUpdate(connection, SqlDef.PAD_SETTINGS, settingsId, SqlDef.PAD_SETTINGS_WARNING, value)
+		}
+	}
+}