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 cb503f2ecfca902190eb25a395406c0c2a52fa2f..1c0609b2b37c199caff2ae9507b5649cf1e0935d 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
@@ -6,6 +6,7 @@ import com.google.gson.{JsonObject, JsonParser}
 import com.j256.ormlite.dao.Dao
 import de.tobias.playpad.server.account
 import de.tobias.playpad.server.account.Account
+import de.tobias.playpad.server.server.project.sync.listener.design.{DesignAddListener, DesignRemoveListener, DesignUpdateListener}
 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, PathUpdateListener}
@@ -41,7 +42,11 @@ import scala.collection.{Map, mutable}
 
 		"path-add" -> new PathAddListener(),
 		"path-update" -> new PathUpdateListener(),
-		"path-rm" -> new PathRemoveListener()
+		"path-rm" -> new PathRemoveListener(),
+
+		"design-add" -> new DesignAddListener(),
+		"design-update" -> new DesignUpdateListener(),
+		"design-rm" -> new DesignRemoveListener()
 	)
 
 	@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
new file mode 100644
index 0000000000000000000000000000000000000000..4cc85f943100cc56b0b7630c19ddd4d955494e03
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignAddListener.scala
@@ -0,0 +1,26 @@
+package de.tobias.playpad.server.server.project.sync.listener.design
+
+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
+
+/**
+  * Created by tobias on 19.02.17.
+  */
+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 backgroundColor = json.get("background_color").getAsString
+		val playColor = json.get("play_color").getAsInt
+
+		SqlHelper.insertOrUpdate(connection, SqlDef.DESIGN, designId, SqlDef.DESIGN_PAD_REF, padId)
+		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/DesignRemoveListener.scala b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignRemoveListener.scala
new file mode 100644
index 0000000000000000000000000000000000000000..e8c2c5bc7ad4aeba22f9fcecdc9419f87fc56723
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignRemoveListener.scala
@@ -0,0 +1,21 @@
+package de.tobias.playpad.server.server.project.sync.listener.design
+
+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
+
+/**
+  * Created by tobias on 19.02.17.
+  */
+class DesignRemoveListener extends Listener {
+	override def onChange(json: JsonObject, connection: Connection, session: Session): Unit = {
+		val designId = UUID.fromString(json.get("id").getAsString)
+
+		SqlHelper.delete(connection, SqlDef.DESIGN, designId)
+	}
+}
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
new file mode 100644
index 0000000000000000000000000000000000000000..5bf7452a326c4f02f7b185a31f5c610545673fa4
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/sync/listener/design/DesignUpdateListener.scala
@@ -0,0 +1,28 @@
+package de.tobias.playpad.server.server.project.sync.listener.design
+
+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
+
+/**
+  * Created by tobias on 19.02.17.
+  */
+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("project").getAsString)
+		val field = json.get("field").getAsString
+
+		SqlHelper.insertOrUpdate(connection, DESIGN, designId, DESIGN_PAD_REF, padId)
+
+		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)
+		}
+	}
+}