diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index bbc4069dfb10ccf21540182d2fb0ca0306d4aec2..441ce2c7392176b621e4bcab024adfd0274c35c9 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -49,12 +49,6 @@ android {
 
     setProperty("archivesBaseName", "QuasselDroidNG-$versionName")
 
-    javaCompileOptions {
-      annotationProcessorOptions {
-        arguments = mapOf("room.schemaLocation" to "$projectDir/schemas")
-      }
-    }
-
     // Disable test runner analytics
     testInstrumentationRunnerArguments = mapOf(
       "disableAnalytics" to "true"
@@ -134,6 +128,7 @@ dependencies {
 
   // Quassel
   implementation(project(":viewmodel"))
+  implementation(project(":persistence"))
   implementation(project(":lib")) {
     exclude(group = "org.threeten", module = "threetenbp")
   }
diff --git a/persistence/build.gradle.kts b/persistence/build.gradle.kts
new file mode 100644
index 0000000000000000000000000000000000000000..591e1f7090f7198cdfe9eeeb91a7e4952c24a835
--- /dev/null
+++ b/persistence/build.gradle.kts
@@ -0,0 +1,62 @@
+plugins {
+  id("com.android.library")
+  kotlin("android")
+  kotlin("kapt")
+}
+
+android {
+  compileSdkVersion(27)
+  buildToolsVersion("27.0.3")
+
+  defaultConfig {
+    minSdkVersion(16)
+    targetSdkVersion(27)
+
+    consumerProguardFiles("proguard-rules.pro")
+
+    javaCompileOptions {
+      annotationProcessorOptions {
+        arguments = mapOf("room.schemaLocation" to "$projectDir/schemas")
+      }
+    }
+  }
+}
+
+dependencies {
+  implementation(kotlin("stdlib", "1.2.30"))
+
+  // App Compat
+  withVersion("27.1.0") {
+    implementation("com.android.support", "appcompat-v7", version)
+  }
+
+  // App Arch Lifecycle
+  withVersion("1.1.0") {
+    implementation("android.arch.lifecycle", "extensions", version)
+    implementation("android.arch.lifecycle", "reactivestreams", version)
+    kapt("android.arch.lifecycle", "compiler", version)
+  }
+
+  // App Arch Persistence
+  withVersion("1.1.0-beta1") {
+    implementation("android.arch.persistence.room", "runtime", version)
+    implementation("android.arch.persistence.room", "rxjava2", version)
+    kapt("android.arch.persistence.room", "compiler", version)
+    testImplementation("android.arch.persistence.room", "testing", version)
+  }
+
+  // App Arch Paging
+  implementation("android.arch.paging", "runtime", "1.0.0-alpha7") {
+    exclude(group = "junit", module = "junit")
+  }
+
+  // Utility
+  implementation("io.reactivex.rxjava2", "rxjava", "2.1.9")
+  implementation("org.threeten", "threetenbp", "1.3.6", classifier = "no-tzdb")
+  implementation("org.jetbrains", "annotations", "15.0")
+
+  // Quassel
+  implementation(project(":lib")) {
+    exclude(group = "org.threeten", module = "threetenbp")
+  }
+}
\ No newline at end of file
diff --git a/persistence/proguard-rules.pro b/persistence/proguard-rules.pro
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/persistence/src/main/AndroidManifest.xml b/persistence/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e2083427300b98f728c483f2f1b0a1bbd1e18236
--- /dev/null
+++ b/persistence/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="de.kuschku.quasseldroid.persistence"></manifest>
diff --git a/app/src/main/java/de/kuschku/quasseldroid/persistence/AccountDatabase.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/AccountDatabase.kt
similarity index 100%
rename from app/src/main/java/de/kuschku/quasseldroid/persistence/AccountDatabase.kt
rename to persistence/src/main/java/de/kuschku/quasseldroid/persistence/AccountDatabase.kt
diff --git a/app/src/main/java/de/kuschku/quasseldroid/persistence/QuasselBacklogStorage.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselBacklogStorage.kt
similarity index 100%
rename from app/src/main/java/de/kuschku/quasseldroid/persistence/QuasselBacklogStorage.kt
rename to persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselBacklogStorage.kt
diff --git a/app/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
similarity index 100%
rename from app/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
rename to persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
diff --git a/settings.gradle b/settings.gradle
index c9875a387ceb33a9fb94b4db61736d80e815851b..8346cc68a6793663c574b9e166dcaec9b2162e95 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,3 @@
-include ':invokerannotations', ':invokergenerator', ':lib', ':malheur', ':app', ":slidingpanel", ":viewmodel"
+include ':invokerannotations', ':invokergenerator', ':lib', ':malheur', ':app', ":slidingpanel", ":viewmodel", ":persistence"
 
 rootProject.buildFileName = 'build.gradle.kts'