diff --git a/core_utils/.gitignore b/core_utils/.gitignore
new file mode 100644
index 0000000000..796b96d1c4
--- /dev/null
+++ b/core_utils/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/core_utils/build.gradle b/core_utils/build.gradle
new file mode 100644
index 0000000000..a2b0abb3be
--- /dev/null
+++ b/core_utils/build.gradle
@@ -0,0 +1,37 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-kapt'
+
+android {
+ def config = rootProject.extensions.getByName("ext")
+
+ compileSdkVersion config["compile_sdk"]
+
+ defaultConfig {
+ minSdkVersion config["min_sdk"]
+ targetSdkVersion config["target_sdk"]
+ versionCode config["version_code"]
+ versionName config["version_name"]
+
+ testInstrumentationRunner config["test_runner"]
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+}
+
+dependencies {
+ def applicationDependencies = rootProject.ext.mainApplication
+
+ //Compile time dependencies
+ kapt applicationDependencies.daggerCompiler
+
+ //Application dependencies
+ implementation applicationDependencies.kotlin
+ implementation applicationDependencies.dagger
+}
diff --git a/core_utils/proguard-rules.pro b/core_utils/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/core_utils/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/core_utils/src/main/AndroidManifest.xml b/core_utils/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..69c4b2b388
--- /dev/null
+++ b/core_utils/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/core_utils/src/main/java/com/agileburo/anytype/core_utils/di/PerFeature.kt b/core_utils/src/main/java/com/agileburo/anytype/core_utils/di/PerFeature.kt
new file mode 100644
index 0000000000..bb5447f2e3
--- /dev/null
+++ b/core_utils/src/main/java/com/agileburo/anytype/core_utils/di/PerFeature.kt
@@ -0,0 +1,7 @@
+package com.agileburo.anytype.core_utils.di
+
+import javax.inject.Scope
+
+@Scope
+@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
+annotation class PerFeature
\ No newline at end of file
diff --git a/core_utils/src/main/java/com/agileburo/anytype/core_utils/di/PerScreen.kt b/core_utils/src/main/java/com/agileburo/anytype/core_utils/di/PerScreen.kt
new file mode 100644
index 0000000000..fefc54f955
--- /dev/null
+++ b/core_utils/src/main/java/com/agileburo/anytype/core_utils/di/PerScreen.kt
@@ -0,0 +1,7 @@
+package com.agileburo.anytype.core_utils.di
+
+import javax.inject.Scope
+
+@Scope
+@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
+annotation class PerScreen
\ No newline at end of file
diff --git a/core_utils/src/main/res/values/strings.xml b/core_utils/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..e5e23fd62e
--- /dev/null
+++ b/core_utils/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ CoreUtils
+
diff --git a/settings.gradle b/settings.gradle
index e7b4def49c..da2e60fd44 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1,2 @@
-include ':app'
+include ':app',
+ ':core_utils'