diff --git a/src/main/scala/de/tobias/playpad/server/PlayPadServer.scala b/src/main/scala/de/tobias/playpad/server/PlayPadServer.scala
index b4ac696fac9b820650db3b3d789386474854f63d..273b690f273f3a31a3b8ebe771e6d69f32ab8ffb 100644
--- a/src/main/scala/de/tobias/playpad/server/PlayPadServer.scala
+++ b/src/main/scala/de/tobias/playpad/server/PlayPadServer.scala
@@ -33,7 +33,8 @@ object PlayPadServer extends App {
 
 	private val settings = settingsLoader.load(settingsPath)
 
-	private val databaseUrl = s"jdbc:mysql://${settings.db_host}:${settings.db_port}/${settings.db_database}?autoReconnect=true&wait_timeout=86400"
+	private val databaseUrl = s"jdbc:mysql://${settings.db_host}:${settings.db_port}/${settings.db_database}?" +
+		s"autoReconnect=true&wait_timeout=86400&serverTimezone=Europe/Berlin"
 	var connectionSource = new JdbcConnectionSource(databaseUrl)
 	connectionSource.setUsername(settings.db_username)
 	connectionSource.setPassword(settings.db_password)
diff --git a/src/main/scala/de/tobias/playpad/server/project/Project.scala b/src/main/scala/de/tobias/playpad/server/project/Project.scala
index 5a2054389b0a0ccf89e46631ce359ff9d857eb0c..7cd0475bde0230c894b8102ce8e7d09aa35636fd 100644
--- a/src/main/scala/de/tobias/playpad/server/project/Project.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/Project.scala
@@ -2,15 +2,14 @@ package de.tobias.playpad.server.project
 
 import java.util.UUID
 
+import de.tobias.playpad.server.account.Session
+
 /**
   * Created by tobias on 17.02.17.
   */
 class Project {
 
-	var id: UUID = UUID.randomUUID()
-	var name: String = _
-
-	var accountId: Int = _ // Account that own this project
+	val projectReference = new ProjectReference
 
 	var pages: List[Page] = _
 
diff --git a/src/main/scala/de/tobias/playpad/server/project/ProjectReference.scala b/src/main/scala/de/tobias/playpad/server/project/ProjectReference.scala
index 469faaad85b0e1c1fa5a15214dd1e500f532c3ca..1d15a978ba04c3c608721334d049f987cd02c766 100644
--- a/src/main/scala/de/tobias/playpad/server/project/ProjectReference.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/ProjectReference.scala
@@ -10,4 +10,8 @@ class ProjectReference {
 	var id: UUID = UUID.randomUUID()
 	var name: String = _
 
+	var accountId: Int = _ // Account that own this project
+	var lastModified: Long = _
+	var session: String = _
+
 }
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
index ce2831d1bd2615da6f5727aba31bd9c393550d75..be1a394e9667bc54c9a9f7fd72ea8ec80a0b8888 100644
--- 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
@@ -12,8 +12,8 @@ import de.tobias.playpad.server.project.utils.JsonDef._
 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
+		project.projectReference.id = UUID.fromString(json.get(PROJECT_ID).getAsString)
+		project.projectReference.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/sql/PageLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala
index 7ce80fa0e5aee425ae4fff4e4d85da8504940c73..30d44b6cf69c007896900d06c209195e134df98e 100644
--- a/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/PageLoader.scala
@@ -13,7 +13,7 @@ class PageLoader(val connection: Connection) {
 	def load(project: Project): List[Page] = {
 		val sql = s"SELECT * FROM $PAGE WHERE $PAGE_PROJECT_REF = ?"
 		val preparedStatement = connection.prepareStatement(sql)
-		preparedStatement.setString(1, project.id.toString)
+		preparedStatement.setString(1, project.projectReference.id.toString)
 		val result = preparedStatement.executeQuery()
 
 		var pages: List[Page] = List()
diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala
index 44660ccd0d9a3d4dffb5221d98e9493f712a9c47..24ed0a0376438a5c5299f80fd3881c0b3fb0fd00 100644
--- a/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala
@@ -3,6 +3,7 @@ package de.tobias.playpad.server.project.loader.sql
 import java.sql.Connection
 import java.util.UUID
 
+import de.tobias.playpad.server.account.Session
 import de.tobias.playpad.server.project.utils.SqlDef._
 import de.tobias.playpad.server.project.{Project, ProjectReference}
 
@@ -20,9 +21,12 @@ class ProjectLoader(val connection: Connection) {
 
 		while (result.next()) {
 			val project = new Project()
-			project.id = UUID.fromString(result.getString(PROJECT_ID))
-			project.name = result.getString(PROJECT_NAME)
-			project.accountId = result.getInt(PROJECT_ACCOUNT_ID)
+			val projectReference = project.projectReference
+			projectReference.id = UUID.fromString(result.getString(PROJECT_ID))
+			projectReference.name = result.getString(PROJECT_NAME)
+			projectReference.accountId = result.getInt(PROJECT_ACCOUNT_ID)
+			projectReference.lastModified = result.getLong(PROJECT_LAST_MODIFIED)
+			projectReference.session = result.getString(PROJECT_SESSION_KEY)
 
 			val pageLoader = new PageLoader(connection)
 			project.pages = pageLoader.load(project)
@@ -45,11 +49,15 @@ class ProjectLoader(val connection: Connection) {
 		var projects: List[ProjectReference] = List()
 
 		while (result.next()) {
-			val project = new ProjectReference()
-			project.id = UUID.fromString(result.getString(PROJECT_ID))
-			project.name = result.getString(PROJECT_NAME)
+			val projectReference = new ProjectReference()
 
-			projects = project :: projects
+			projectReference.id = UUID.fromString(result.getString(PROJECT_ID))
+			projectReference.name = result.getString(PROJECT_NAME)
+			projectReference.accountId = result.getInt(PROJECT_ACCOUNT_ID)
+			projectReference.lastModified = result.getLong(PROJECT_LAST_MODIFIED)
+			projectReference.session = result.getString(PROJECT_SESSION_KEY)
+
+			projects = projectReference :: projects
 		}
 
 		result.close()
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 28b2282cde37139f2e3c3097f28c8a1783b0825a..f4b11791ca578dc96bad263f4b93f60c65b75934 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
@@ -15,8 +15,8 @@ class ProjectSaver {
 		val pageArray = new JsonArray
 		project.pages.foreach(page => pageArray.add(pageSaver.save(page)))
 
-		jsonObject.addProperty(PROJECT_ID, project.id.toString)
-		jsonObject.addProperty(PROJECT_NAME, project.name)
+		jsonObject.addProperty(PROJECT_ID, project.projectReference.id.toString)
+		jsonObject.addProperty(PROJECT_NAME, project.projectReference.name)
 		jsonObject.add(PROJECT_PAGES, pageArray)
 
 		jsonObject
diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/sql/PageSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/sql/PageSaver.scala
index ec28b8501dd38410456332e94a55092b45a4630a..1933fc60b2ca84ed58dd9469de1360bc2580644a 100644
--- a/src/main/scala/de/tobias/playpad/server/project/saver/sql/PageSaver.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/saver/sql/PageSaver.scala
@@ -13,7 +13,7 @@ class PageSaver(connection: Connection) {
 	def save(page: Page): Unit = {
 		SqlHelper.insertOrUpdate(connection, PAGE, page.id, PAGE_NAME, page.name)
 		SqlHelper.insertOrUpdate(connection, PAGE, page.id, PAGE_POSITION, page.position)
-		SqlHelper.insertOrUpdate(connection, PAGE, page.id, PAGE_PROJECT_REF, page.project.id)
+		SqlHelper.insertOrUpdate(connection, PAGE, page.id, PAGE_PROJECT_REF, page.project.projectReference.id)
 
 		val padSaver = new PadSaver(connection)
 		page.pads.foreach(padSaver.save)
diff --git a/src/main/scala/de/tobias/playpad/server/project/saver/sql/ProjectSaver.scala b/src/main/scala/de/tobias/playpad/server/project/saver/sql/ProjectSaver.scala
index 8fcd2027e2769b4224bcd43b9aabcec3b552c17e..994c64ce5f17da0bde23ea237471be4b83af50e7 100644
--- a/src/main/scala/de/tobias/playpad/server/project/saver/sql/ProjectSaver.scala
+++ b/src/main/scala/de/tobias/playpad/server/project/saver/sql/ProjectSaver.scala
@@ -12,8 +12,9 @@ import de.tobias.playpad.server.server.SqlHelper
   */
 class ProjectSaver(val connection: Connection) {
 	def save(project: Project): Unit = {
-		SqlHelper.insertOrUpdate(connection, PROJECT, project.id, PROJECT_NAME, project.name)
-		SqlHelper.insertOrUpdate(connection, PROJECT, project.id, PROJECT_ACCOUNT_ID, project.accountId)
+		val reference = project.projectReference
+		SqlHelper.insertOrUpdate(connection, PROJECT, reference.id, PROJECT_NAME, reference.name)
+		SqlHelper.insertOrUpdate(connection, PROJECT, reference.id, PROJECT_ACCOUNT_ID, reference.accountId)
 
 		val pageSaver = new PageSaver(connection)
 		project.pages.foreach(pageSaver.save)
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 38cf38a6a22a8472f5e41cd9b8ebff9a0e290b06..198c8b55e3263e3ee0069109ad9a02a9e2074521 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
@@ -9,6 +9,8 @@ object SqlDef {
 	val PROJECT_ID = "id"
 	val PROJECT_NAME = "name"
 	val PROJECT_ACCOUNT_ID = "account_id"
+	val PROJECT_LAST_MODIFIED = "last_modified"
+	val PROJECT_SESSION_KEY = "session_key"
 
 	val PAGE = "Page"
 	val PAGE_ID = "id"
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 33833cb54a0bf3f040befa1e5c36bc2d8af62ffa..a705363c1dd68c0daa874540d8847fa05baecaa5 100644
--- a/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/SqlHelper.scala
@@ -37,6 +37,9 @@ object SqlHelper {
 			case value: Int =>
 				preparedStatement.setInt(2, value)
 				preparedStatement.setInt(3, value)
+			case value: Long =>
+				preparedStatement.setLong(2, value)
+				preparedStatement.setLong(3, value)
 			case value: Double =>
 				preparedStatement.setDouble(2, value)
 				preparedStatement.setDouble(3, value)
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/ProjectGet.scala b/src/main/scala/de/tobias/playpad/server/server/project/ProjectGet.scala
index 4cb89155f595a399c8fa0d8a51c8fdba198af679..e4ca4153889acc45b356b88c700cbec686f5f6b9 100644
--- a/src/main/scala/de/tobias/playpad/server/server/project/ProjectGet.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/project/ProjectGet.scala
@@ -28,7 +28,7 @@ class ProjectGet(connection: Connection, sessionDao: Dao[Session, Int]) extends
 
 				if (projects.size == 1) {
 					val project = projects.head
-					if (project.accountId == s.getAccount.id) {
+					if (project.projectReference.accountId == s.getAccount.id) {
 						val projectSaver = new ProjectSaver()
 						return projectSaver.save(project)
 					}
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/ProjectModificationGet.scala b/src/main/scala/de/tobias/playpad/server/server/project/ProjectModificationGet.scala
new file mode 100644
index 0000000000000000000000000000000000000000..7991d4a0eec607a5a95e30391524c06843b891c0
--- /dev/null
+++ b/src/main/scala/de/tobias/playpad/server/server/project/ProjectModificationGet.scala
@@ -0,0 +1,42 @@
+package de.tobias.playpad.server.server.project
+
+import java.sql.Connection
+
+import com.google.gson.{JsonArray, JsonObject}
+import com.j256.ormlite.dao.Dao
+import de.tobias.playpad.server.account.Session
+import de.tobias.playpad.server.project.loader.sql.ProjectLoader
+import de.tobias.playpad.server.server.{Result, Status}
+import spark.{Request, Response, Route}
+
+/**
+  * Created by tobias on 01.03.17.
+  */
+class ProjectModificationGet(connection: Connection, sessionDao: Dao[Session, Int]) extends Route {
+
+	override def handle(request: Request, response: Response): AnyRef = {
+		val sessionKey = request.queryParams("session")
+
+		val session = Session.getSession(sessionKey, sessionDao)
+
+		session match {
+			case Some(s) =>
+				val projectLoader = new ProjectLoader(connection)
+				val projects = projectLoader.list(s.getAccount.id)
+
+				val array = new JsonArray()
+				projects.foreach(projectReference => {
+					val json = new JsonObject()
+					json.addProperty("uuid", projectReference.id.toString)
+					json.addProperty("name", projectReference.name)
+					json.addProperty("last_modification", projectReference.lastModified)
+					json.addProperty("session", projectReference.session)
+					array.add(json)
+				})
+
+				array
+			case None =>
+				new Result(Status.ERROR, "Session invalid")
+		}
+	}
+}
diff --git a/src/main/scala/de/tobias/playpad/server/server/project/ProjectPost.scala b/src/main/scala/de/tobias/playpad/server/server/project/ProjectPost.scala
index 93fa8a7d65936affa8147f16fc681c5a1a5bf2d0..90fee8590e1102cdbecc886935e43dfdefc7922f 100644
--- a/src/main/scala/de/tobias/playpad/server/server/project/ProjectPost.scala
+++ b/src/main/scala/de/tobias/playpad/server/server/project/ProjectPost.scala
@@ -25,7 +25,7 @@ class ProjectPost(connection: Connection, sessionDao: Dao[Session, Int]) extends
 
 				val projectLoader = new ProjectLoader
 				val project = projectLoader.load(json)
-				project.accountId = s.getAccount.id
+				project.projectReference.accountId = s.getAccount.id
 
 				val projectSaver = new ProjectSaver(connection)
 				projectSaver.save(project)
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 a23c7c260f44484dfab953ae958c989f14ddce41..3e54d12751c40fbd654df65c0e7e07be31bd10d7 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
@@ -1,11 +1,14 @@
 package de.tobias.playpad.server.server.project.sync
 
 import java.sql.Connection
+import java.util.UUID
 
 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.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.{PadAddListener, PadClearListener, PadRemoveListener, PadUpdateListener}
 import de.tobias.playpad.server.server.project.sync.listener.page.{PageAddListener, PageRemoveListener, PageUpdateListener}
@@ -81,21 +84,27 @@ import scala.collection.{Map, mutable}
 		println(text)
 		// Store in Database
 		try {
-			// Push to clients
 			val key = serverSession.getUpgradeRequest.getHeader(SESSION_KEY_HEADER)
-			if (key != null) {
+			val session = account.Session.getSession(key, sessionDao)
 
+			if (key != null) {
 				val parser = new JsonParser()
 				val json = parser.parse(text)
 				json match {
 					case json: JsonObject =>
-						val session = account.Session.getSession(key, sessionDao)
 						session match {
 							case Some(s) =>
 								val cmd = json.get("cmd").getAsString
 								if (listeners.contains(cmd)) {
 									listeners(cmd).onChange(json, connection, s)
 								}
+
+								// Write last modification to project table
+								val timeStemp = json.get("time").getAsLong
+								val projectRef = UUID.fromString(json.get("project").getAsString)
+								SqlHelper.insertOrUpdate(connection, SqlDef.PROJECT, projectRef, SqlDef.PROJECT_LAST_MODIFIED, timeStemp)
+								SqlHelper.insertOrUpdate(connection, SqlDef.PROJECT, projectRef, SqlDef.PROJECT_SESSION_KEY, s.key)
+
 							case None => serverSession.close(500, "Invalid Session")
 						}
 					case _ => serverSession.close(500, "Invalid Data")
@@ -104,7 +113,7 @@ import scala.collection.{Map, mutable}
 				serverSession.close(500, "Invalid Key")
 			}
 
-			val session = account.Session.getSession(key, sessionDao)
+			// Push to clients
 			session match {
 				case Some(s) =>
 					this.sessions(s.getAccount)