diff --git a/app/build.gradle b/app/build.gradle
index 8608d7ad0..11551ccdc 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,7 +6,6 @@ apply plugin: 'kotlin-android'
 apply plugin: 'kotlin-android-extensions'
 apply plugin: 'kotlin-kapt'
 apply plugin: 'com.github.zellius.shortcut-helper'
-apply plugin: "org.jmailen.kotlinter"
 
 shortcutHelper.filePath = './shortcuts.xml'
 
@@ -292,8 +291,7 @@ task copyResources(type: Copy) {
     include '**/*'
 }
 
-preBuild.dependsOn(lintKotlin, copyResources)
-lintKotlin.dependsOn(formatKotlin)
+preBuild.dependsOn(ktlintFormat, copyResources)
 
 if (getGradle().getStartParameter().getTaskRequests().toString().contains("Standard")) {
     apply plugin: 'com.google.gms.google-services'
diff --git a/build.gradle.kts b/build.gradle.kts
index 837208b3f..dce058679 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,22 +1,9 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
 plugins {
-    id("com.github.ben-manes.versions") version "0.28.0"
-}
-
-buildscript {
-    repositories {
-        google()
-        jcenter()
-    }
-    dependencies {
-        classpath("com.android.tools.build:gradle:3.6.2")
-        classpath("com.github.zellius:android-shortcut-gradle-plugin:0.1.2")
-        classpath("org.jmailen.gradle:kotlinter-gradle:2.3.2")
-        classpath("com.google.gms:google-services:4.3.3")
-        classpath("com.google.android.gms:oss-licenses-plugin:0.10.2")
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
-    }
+    id("com.android.application") version BuildPluginsVersion.AGP apply false
+    id("com.android.library") version BuildPluginsVersion.AGP apply false
+    kotlin("android") version BuildPluginsVersion.KOTLIN apply false
+    id("org.jlleitschuh.gradle.ktlint") version BuildPluginsVersion.KTLINT
+    id("com.github.ben-manes.versions") version BuildPluginsVersion.VERSIONS_PLUGIN
 }
 
 allprojects {
@@ -28,6 +15,38 @@ allprojects {
     }
 }
 
+subprojects {
+    apply {
+        plugin("org.jlleitschuh.gradle.ktlint")
+    }
+
+    ktlint {
+        debug.set(false)
+        version.set(Versions.KTLINT)
+        verbose.set(true)
+        android.set(false)
+        outputToConsole.set(true)
+        ignoreFailures.set(false)
+        enableExperimentalRules.set(true)
+        filter {
+            exclude("**/generated/**")
+            include("**/kotlin/**")
+        }
+    }
+}
+
+buildscript {
+    dependencies {
+        classpath("com.github.zellius:android-shortcut-gradle-plugin:0.1.2")
+        classpath("com.google.gms:google-services:4.3.3")
+        classpath("com.google.android.gms:oss-licenses-plugin:0.10.2")
+    }
+    repositories {
+        google()
+        jcenter()
+    }
+}
+
 tasks.register("clean", Delete::class) {
     delete(rootProject.buildDir)
 }
diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore
new file mode 100644
index 000000000..796b96d1c
--- /dev/null
+++ b/buildSrc/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
new file mode 100644
index 000000000..cc48205ae
--- /dev/null
+++ b/buildSrc/build.gradle.kts
@@ -0,0 +1,6 @@
+plugins {
+    `kotlin-dsl`
+}
+repositories {
+    jcenter()
+}
diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt
new file mode 100644
index 000000000..0ae0ed61e
--- /dev/null
+++ b/buildSrc/src/main/kotlin/Dependencies.kt
@@ -0,0 +1,10 @@
+object Versions {
+    const val KTLINT = "0.36.0"
+}
+
+object BuildPluginsVersion {
+    const val AGP = "3.6.3"
+    const val KOTLIN = "1.3.72"
+    const val KTLINT = "9.2.1"
+    const val VERSIONS_PLUGIN = "0.28.0"
+}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 15a801b10..68ad4f3b8 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1 +1,20 @@
+pluginManagement {
+    resolutionStrategy {
+        eachPlugin {
+            if (requested.id.id == "com.android.library") {
+                useModule("com.android.tools.build:gradle:${requested.version}")
+            }
+            if (requested.id.id == "com.android.application") {
+                useModule("com.android.tools.build:gradle:${requested.version}")
+            }
+        }
+    }
+    repositories {
+        gradlePluginPortal()
+        google()
+        mavenCentral()
+        jcenter()
+    }
+}
+
 include(":app")