diff --git a/src/main/scala/de/tobias/playpad/server/project/JsonDef.scala b/src/main/scala/de/tobias/playpad/server/project/JsonDef.scala
new file mode 100644
index 0000000000000000000000000000000000000000..f95c5fccaec35b3cbac5901ddc0f86c271d2edcd
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/project/JsonDef.scala
@@ -0,0 +1,22 @@
+package de.tobias.playpad.server.project
+
+/**
+  * Created by tobias on 17.02.17.
+  */
+object JsonDef {
+
+	val PROJECT_ID = "id"
+	val PROJECT_NAME = "name"
+	val PROJECT_PAGES = "pages"
+
+	val PAGE_ID = "id"
+	val PAGE_NAME = "name"
+	val PAGE_POSITION = "position"
+	val PAGE_PADS = "pads"
+
+	val PAD_ID = "id"
+	val PAD_NAME = "name"
+	val PAD_POSITION = "position"
+	val PAD_PAGE = "page"
+
+}
diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala
new file mode 100644
index 0000000000000000000000000000000000000000..753974e691547d265900366c084804f139a38434
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/PadLoader.scala
@@ -0,0 +1,29 @@
+package de.tobias.playpad.server.project.loader.json
+
+import java.util.UUID
+
+import com.google.gson.{JsonArray, JsonObject}
+import de.tobias.playpad.server.project.JsonDef._
+import de.tobias.playpad.server.project.Pad
+
+import scala.collection.JavaConverters
+
+/**
+  * Created by tobias on 17.02.17.
+  */
+class PadLoader {
+	def load(jsonArray: JsonArray): List[Pad] = {
+		val it = JavaConverters.asScalaIterator(jsonArray.iterator())
+		val pads = it.filter(_.isJsonObject).map(i => {
+			val json = i.asInstanceOf[JsonObject]
+
+			val pad = new Pad()
+			pad.id = UUID.fromString(json.get(PAD_ID).getAsString)
+			pad.name = json.get(PAD_NAME).getAsString
+
+			pad
+		}).toList
+		pads
+	}
+
+}
diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala
new file mode 100644
index 0000000000000000000000000000000000000000..2cd6532f44c4f4711cc2046c8f4e8170943d8fa3
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/PageLoader.scala
@@ -0,0 +1,32 @@
+package de.tobias.playpad.server.project.loader.json
+
+import java.util.UUID
+
+import com.google.gson.{JsonArray, JsonObject}
+import de.tobias.playpad.server.project.JsonDef._
+import de.tobias.playpad.server.project.Page
+
+import scala.collection.JavaConverters
+
+/**
+  * Created by tobias on 17.02.17.
+  */
+class PageLoader {
+
+	def load(jsonArray: JsonArray): List[Page] = {
+		val it = JavaConverters.asScalaIterator(jsonArray.iterator())
+		val pages = it.filter(_.isJsonObject).map(i => {
+			val json = i.asInstanceOf[JsonObject]
+
+			val page = new Page()
+			page.id = UUID.fromString(json.get(PAGE_ID).getAsString)
+			page.name = json.get(PAGE_NAME).getAsString
+
+			val padLoader = new PadLoader
+			page.pads = padLoader.load(json.get(PAGE_PADS).getAsJsonArray)
+
+			page
+		}).toList
+		pages
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala
new file mode 100644
index 0000000000000000000000000000000000000000..9a9556e1c28db5cb76e800b4cd91852cf65257de
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/project/loader/json/ProjectLoader.scala
@@ -0,0 +1,24 @@
+package de.tobias.playpad.server.project.loader.json
+
+import java.util.UUID
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.server.project.JsonDef._
+import de.tobias.playpad.server.project.Project
+
+/**
+  * Created by tobias on 17.02.17.
+  */
+class ProjectLoader {
+
+	def load(json: JsonObject): Project = {
+		val project = new Project()
+		project.id = UUID.fromString(json.get(PROJECT_ID).getAsString)
+		project.name = json.get(PROJECT_NAME).getAsString
+
+		val pageLoader = new PageLoader
+		project.pages = pageLoader.load(json.getAsJsonArray(PROJECT_PAGES))
+
+		project
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala
similarity index 87%
rename from src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala
rename to src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala
index 54be4951cc7fb80ab53d6e9b26e0c1b5b6c53cbc..c35454f7208c31c1184dfe184ae511d2004ee805 100644
--- a/src/main/scala/de/tobias/playpad/server/project/loader/PadLoader.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PadLoader.scala
@@ -1,9 +1,9 @@
-package de.tobias.playpad.server.project.loader
+package de.tobias.playpad.server.project.loader.sql
 
 import java.sql.Connection
 import java.util.UUID
 
-import de.tobias.playpad.server.project.{Pad, Page}
+import de.tobias.playpad.server.project.Pad
 
 /**
   * Created by tobias on 17.02.17.
diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala
similarity index 93%
rename from src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala
rename to src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala
index ad39d6c42ff42867e8f402b38687ce0ea798becc..6a55fd501c8297a75041e7cdb3ac8bb1c25357df 100644
--- a/src/main/scala/de/tobias/playpad/server/project/loader/PageLoader.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala
@@ -1,4 +1,4 @@
-package de.tobias.playpad.server.project.loader
+package de.tobias.playpad.server.project.loader.sql
 
 import java.sql.Connection
 import java.util.UUID
diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala
similarity index 90%
rename from src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala
rename to src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala
index 549f469d747c08869d860b16dc26aad42ce5ef35..3d648091d7c301f3ff842b50c1947bb2c15f67e5 100644
--- a/src/main/scala/de/tobias/playpad/server/project/loader/ProjectLoader.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala
@@ -1,12 +1,10 @@
-package de.tobias.playpad.server.project.loader
+package de.tobias.playpad.server.project.loader.sql
 
 import java.sql.Connection
 import java.util.UUID
 
 import de.tobias.playpad.server.project.Project
 
-import scala.collection.mutable.ListBuffer
-
 /**
   * Created by tobias on 17.02.17.
   */
diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/json/PadSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/json/PadSaver.scala
index e375c89f6ddf86deab7ca5e34053e8af3959922f..ae16cde5d89a6deeff198e4f61b6a6df07c86b3f 100644
--- a/src/main/scala/de/tobias/playpad/server/project/saver/json/PadSaver.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/saver/json/PadSaver.scala
@@ -1,6 +1,7 @@
 package de.tobias.playpad.server.project.saver.json
 
 import com.google.gson.{JsonElement, JsonObject}
+import de.tobias.playpad.server.project.JsonDef._
 import de.tobias.playpad.server.project.Pad
 
 /**
@@ -11,10 +12,10 @@ class PadSaver {
 	def save(pad: Pad): JsonElement = {
 		val jsonObject = new JsonObject()
 
-		jsonObject.addProperty("id", pad.id.toString)
-		jsonObject.addProperty("name", pad.name)
-		jsonObject.addProperty("position", pad.position)
-		jsonObject.addProperty("page", pad.pageIndex)
+		jsonObject.addProperty(PAD_ID, pad.id.toString)
+		jsonObject.addProperty(PAD_NAME, pad.name)
+		jsonObject.addProperty(PAD_POSITION, pad.position)
+		jsonObject.addProperty(PAD_PAGE, pad.pageIndex)
 
 		jsonObject
 	}
diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/json/PageSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/json/PageSaver.scala
index 8215b670d8679d38d6d1fb52caf6ef2c83fa15f2..e59ef25584b501721b28deec6f436196ce1022d5 100644
--- a/src/main/scala/de/tobias/playpad/server/project/saver/json/PageSaver.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/saver/json/PageSaver.scala
@@ -1,6 +1,7 @@
 package de.tobias.playpad.server.project.saver.json
 
 import com.google.gson.{JsonArray, JsonElement, JsonObject}
+import de.tobias.playpad.server.project.JsonDef._
 import de.tobias.playpad.server.project.Page
 
 /**
@@ -15,9 +16,10 @@ class PageSaver {
 		val padArray = new JsonArray()
 		page.pads.foreach(pad => padArray.add(padSaver.save(pad)))
 
-		jsonObject.addProperty("name", page.name)
-		jsonObject.addProperty("position", page.position)
-		jsonObject.add("pads", padArray)
+		jsonObject.addProperty(PAGE_ID, page.id.toString)
+		jsonObject.addProperty(PAGE_NAME, page.name)
+		jsonObject.addProperty(PAGE_POSITION, page.position)
+		jsonObject.add(PAGE_PADS, padArray)
 
 		jsonObject
 	}
diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/json/ProjectSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/json/ProjectSaver.scala
index 32d37728dc68da98c10adeabd031a9e194c265ec..942d89754d9dda2e0598bbd4fb82e8517d446cd2 100644
--- a/src/main/scala/de/tobias/playpad/server/project/saver/json/ProjectSaver.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/saver/json/ProjectSaver.scala
@@ -1,6 +1,7 @@
 package de.tobias.playpad.server.project.saver.json
 
 import com.google.gson.{JsonArray, JsonObject}
+import de.tobias.playpad.server.project.JsonDef._
 import de.tobias.playpad.server.project.Project
 
 /**
@@ -15,8 +16,9 @@ class ProjectSaver {
 		val pageArray = new JsonArray
 		project.pages.foreach(page => pageArray.add(pageSaver.save(page)))
 
-		jsonObject.addProperty("name", project.name)
-		jsonObject.add("pages", pageArray)
+		jsonObject.addProperty(PROJECT_ID, project.id.toString)
+		jsonObject.addProperty(PROJECT_NAME, project.name)
+		jsonObject.add(PROJECT_PAGES, pageArray)
 
 		jsonObject
 	}