diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..0c0c338
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="deploymentTargetDropDown">
+    <value>
+      <entry key="app">
+        <State />
+      </entry>
+    </value>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 3a6d748..9553894 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,8 +4,6 @@
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
-        <option name="testRunner" value="GRADLE" />
-        <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
         <option name="gradleJvm" value="1.8" />
         <option name="modules">
@@ -14,6 +12,7 @@
             <option value="$PROJECT_DIR$/app" />
           </set>
         </option>
+        <option name="resolveExternalAnnotations" value="false" />
       </GradleProjectSettings>
     </option>
   </component>
diff --git a/.idea/migrations.xml b/.idea/migrations.xml
new file mode 100644
index 0000000..f8051a6
--- /dev/null
+++ b/.idea/migrations.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectMigrations">
+    <option name="MigrateToGradleLocalJavaHome">
+      <set>
+        <option value="$PROJECT_DIR$" />
+      </set>
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/Android.bp b/Android.bp
index 93d2b7d..9f008e0 100644
--- a/Android.bp
+++ b/Android.bp
@@ -32,4 +32,4 @@
   optimize: {
     enabled: false,
   },
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/org/omnirom/control/AppListFragment.kt b/app/src/main/java/org/omnirom/control/AppListFragment.kt
index 117ae6d..34e9674 100644
--- a/app/src/main/java/org/omnirom/control/AppListFragment.kt
+++ b/app/src/main/java/org/omnirom/control/AppListFragment.kt
@@ -135,7 +135,7 @@
     }
 
     override fun onPreferenceTreeClick(preference: Preference): Boolean {
-        if (preference?.key != null) {
+        if (preference.key != null) {
             var app: Application? = appManager.getAppOfPackage(preference.key)
             if (app != null) {
                 if (app.mPackage == "org.omnirom.omnistore") {
diff --git a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
index 6333c59..0529322 100644
--- a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
@@ -78,7 +78,7 @@
     }
 
     private fun isTablet(): Boolean {
-        val windowManager: WindowManager = requireContext().getSystemService(WindowManager::class.java)
+        val windowManager: WindowManager = requireContext().getSystemService(WindowManager::class.java)!!
         val bounds: Rect = windowManager.currentWindowMetrics.bounds
         val smallestWidth: Float = dpiFromPx(
             min(bounds.width(), bounds.height()),
diff --git a/app/src/main/java/org/omnirom/control/ColorBrowseActivity.kt b/app/src/main/java/org/omnirom/control/ColorBrowseActivity.kt
index 735976d..adca8bd 100644
--- a/app/src/main/java/org/omnirom/control/ColorBrowseActivity.kt
+++ b/app/src/main/java/org/omnirom/control/ColorBrowseActivity.kt
@@ -14,6 +14,7 @@
 import android.view.ViewOutlineProvider
 import android.widget.GridLayout
 import android.widget.ImageView
+import androidx.annotation.IdRes
 import androidx.appcompat.app.AppCompatActivity
 import androidx.appcompat.widget.Toolbar
 import androidx.core.view.WindowCompat
@@ -63,7 +64,7 @@
         WindowCompat.setDecorFitsSystemWindows(window, true)
 
         setContentView(R.layout.color_browse_activity)
-        val toolbar: Toolbar = findViewById(R.id.toolbar)
+        val toolbar: Toolbar = requireFindViewById(R.id.toolbar)
         setSupportActionBar(toolbar)
         supportActionBar!!.setDisplayHomeAsUpEnabled(true)
 
@@ -75,24 +76,24 @@
 
         val startColor = intent.getIntExtra(DATA_SELECT_COLOR_EXTRA, 0)
 
-        mColorPicker = findViewById(R.id.color_picker_view)
-        mHexColorInput = findViewById(R.id.hex_color_input)
+        mColorPicker = requireFindViewById(R.id.color_picker_view)
+        mHexColorInput = requireFindViewById(R.id.hex_color_input)
         val corner = resources.getDimensionPixelSize(R.dimen.text_field_corner_radius).toFloat()
-        val hexColorInputLayout: TextInputLayout = findViewById(R.id.hex_color_input_layout)
+        val hexColorInputLayout: TextInputLayout = requireFindViewById(R.id.hex_color_input_layout)
         hexColorInputLayout.setBoxCornerRadii(corner, corner, corner, corner)
 
-        mNewColor = findViewById(R.id.color_panel)
+        mNewColor = requireFindViewById(R.id.color_panel)
         mNewColor.outlineProvider = outlineProvider
         mNewColor.clipToOutline = true
 
         mColorPicker.setOnColorChangedListener(this)
         mHexColorInput.addTextChangedListener(this)
-        val colorPresetView: GridLayout = findViewById(R.id.color_preset_view)
+        val colorPresetView: GridLayout = requireFindViewById(R.id.color_preset_view)
 
         for (presetColor in PRESET_COLORS) {
             val colorPresetItem: View = layoutInflater.inflate(R.layout.color_preset_item, null)
-            val colorPresetItemView =
-                colorPresetItem.findViewById<View>(R.id.color_preset_item_view) as ImageView
+            val colorPresetItemView: ImageView =
+                colorPresetItem.findViewById(R.id.color_preset_item_view)!!
             colorPresetItemView.outlineProvider = outlineProvider
             colorPresetItemView.clipToOutline = true
             colorPresetItemView.setImageDrawable(ColorDrawable(presetColor))
@@ -117,7 +118,7 @@
 
         setAlphaSliderVisible(mWithAlpha)
 
-        val selectColorView: MaterialButton = findViewById(R.id.select_color)
+        val selectColorView: MaterialButton = requireFindViewById(R.id.select_color)
         selectColorView.setOnClickListener {
             val intent = Intent()
             intent.putExtra(DATA_SELECT_COLOR_EXTRA, getColor())
@@ -193,4 +194,8 @@
             true
         )
     }
+    private fun  <T> requireFindViewById(id: Int): T {
+        return findViewById(id)!!
+    }
+
 }
diff --git a/app/src/main/java/org/omnirom/control/GridViewFragment.kt b/app/src/main/java/org/omnirom/control/GridViewFragment.kt
index 5d60695..8aea5ed 100644
--- a/app/src/main/java/org/omnirom/control/GridViewFragment.kt
+++ b/app/src/main/java/org/omnirom/control/GridViewFragment.kt
@@ -64,15 +64,13 @@
 
             val gridItem: GridItem = getItem(position)!!
 
-            viewItem.findViewById<TextView>(R.id.grid_item_title).setText(gridItem.gridTitle)
-            viewItem.findViewById<ImageView>(R.id.grid_item_icon)
-                .setImageResource(gridItem.gridIcon)
+            viewItem.findViewById<TextView>(R.id.grid_item_title)!!.setText(gridItem.gridTitle)
+            viewItem.findViewById<ImageView>(R.id.grid_item_icon)!!.setImageResource(gridItem.gridIcon)
             val summary = context.resources.getString(gridItem.gridSummary)
             if (summary.isNotEmpty())
-                viewItem.findViewById<TextView>(R.id.grid_item_summary)
-                    .setText(gridItem.gridSummary)
+                viewItem.findViewById<TextView>(R.id.grid_item_summary)!!.setText(gridItem.gridSummary)
             else
-                viewItem.findViewById<TextView>(R.id.grid_item_summary).visibility = View.GONE
+                viewItem.findViewById<TextView>(R.id.grid_item_summary)!!.visibility = View.GONE
             return viewItem
         }
     }
@@ -331,7 +329,7 @@
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        gridView = view.findViewById(R.id.grid_view)
+        gridView = view.findViewById(R.id.grid_view)!!
         gridView.numColumns = resources.getInteger(R.integer.grid_view_columns)
         gridView.adapter = gridItemsAdapter
         gridView.onItemClickListener =
diff --git a/app/src/main/java/org/omnirom/control/OverlaysFragment.kt b/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
index b31934d..a13b44c 100644
--- a/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
+++ b/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
@@ -166,8 +166,8 @@
         private val PATH_SIZE = 100f
 
         inner class IconShapeListItem(view: View) : RecyclerView.ViewHolder(view) {
-            val shapeImage: ImageView = view.findViewById(R.id.icon_shape_icon)
-            val enabledImage: ImageView = view.findViewById(R.id.icon_shape_icon_enabled)
+            val shapeImage: ImageView = view.findViewById(R.id.icon_shape_icon)!!
+            val enabledImage: ImageView = view.findViewById(R.id.icon_shape_icon_enabled)!!
 
         }
 
@@ -242,8 +242,8 @@
         RecyclerView.Adapter<RecyclerView.ViewHolder>() {
 
         inner class ColorsListItem(view: View) : RecyclerView.ViewHolder(view) {
-            val colorList: LinearLayout = view.findViewById(R.id.colors_item_list)
-            val enabledImage: ImageView = view.findViewById(R.id.colors_enabled)
+            val colorList: LinearLayout = view.findViewById(R.id.colors_item_list)!!
+            val enabledImage: ImageView = view.findViewById(R.id.colors_enabled)!!
         }
 
         override fun getItemCount(): Int {
@@ -308,8 +308,8 @@
         RecyclerView.Adapter<RecyclerView.ViewHolder>() {
 
         open inner class AccentColorsListItem(view: View) : RecyclerView.ViewHolder(view) {
-            val colorList: LinearLayout = view.findViewById(R.id.colors_item_list)
-            val enabledImage: ImageView = view.findViewById(R.id.colors_enabled)
+            val colorList: LinearLayout = view.findViewById(R.id.colors_item_list)!!
+            val enabledImage: ImageView = view.findViewById(R.id.colors_enabled)!!
         }
 
         inner class FabricatedAccentColorsListItem(view: View) : AccentColorsListItem(view) {
@@ -666,29 +666,29 @@
             LayoutInflater.from(context).inflate(R.layout.overlays_item, null, false)
         overlayItemList.add(overlayItemView)
 
-        iconShapeListView = overlayItemView.findViewById(R.id.icon_shape_list_view)
+        iconShapeListView = overlayItemView.findViewById(R.id.icon_shape_list_view)!!
         iconShapeListView.layoutManager =
             LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
         iconShapeListView.adapter = IconShapeListViewAdapter(requireContext(), iconShapeGridItems)
 
-        primaryColorsListView = overlayItemView.findViewById(R.id.primary_color_list_view)
+        primaryColorsListView = overlayItemView.findViewById(R.id.primary_color_list_view)!!
         primaryColorsListView.layoutManager =
             LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
         primaryColorsListView.adapter =
             PrimaryColorsListViewAdapter(requireContext(), primaryColorsGridItems)
 
-        accentColorsListView = overlayItemView.findViewById(R.id.accent_color_list_view)
+        accentColorsListView = overlayItemView.findViewById(R.id.accent_color_list_view)!!
         accentColorsListView.layoutManager =
             LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
         accentColorsListView.adapter =
             AccentColorsListViewAdapter(requireContext(), accentColorsGridItems)
 
-        overlayItemListView = view.findViewById(R.id.overlay_item_list)
+        overlayItemListView = view.findViewById(R.id.overlay_item_list)!!
         overlayItemListView.adapter = OverlayItemListViewAdapter(requireContext(), overlayItemList)
         overlayItemListView.layoutManager =
             LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
 
-        val monetEnableSwitch: Switch = overlayItemView.findViewById(R.id.monet_overlay_enable);
+        val monetEnableSwitch: Switch = overlayItemView.findViewById(R.id.monet_overlay_enable)!!
         val monetEnabled = overlayProvider.isMonetOverlayEnabled()
         monetEnableSwitch.isChecked = monetEnabled
         enableOverlaySelect(overlayItemView, !monetEnabled)
@@ -844,9 +844,9 @@
     }
 
     private fun enableOverlaySelect(overlayItemView: View, enable: Boolean) {
-        val neutralBlocker =
-            overlayItemView.findViewById<View?>(R.id.primary_color_list_view_blocker)
-        val accentBlocker = overlayItemView.findViewById<View?>(R.id.accent_color_list_view_blocker)
+        val neutralBlocker: View =
+            overlayItemView.findViewById(R.id.primary_color_list_view_blocker)!!
+        val accentBlocker: View = overlayItemView.findViewById(R.id.accent_color_list_view_blocker)!!
         if (enable) {
             neutralBlocker.visibility = View.GONE
             accentBlocker.visibility = View.GONE
diff --git a/app/src/main/java/org/omnirom/control/SettingsActivity.kt b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
index 7405e7d..1addbf5 100644
--- a/app/src/main/java/org/omnirom/control/SettingsActivity.kt
+++ b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
@@ -51,7 +51,7 @@
 
         setContentView(R.layout.settings_activity)
 
-        toolbarPlaceHolder = findViewById(R.id.toolbar_placeholder)
+        toolbarPlaceHolder = requireFindViewById(R.id.toolbar_placeholder)
 
         var fragment: Fragment = GridViewFragment()
         if (savedInstanceState != null) {
@@ -64,7 +64,7 @@
             .replace(R.id.settings, fragment.javaClass, null)
             .commit()
 
-        val toolbar: Toolbar = findViewById(R.id.toolbar)
+        val toolbar: Toolbar = requireFindViewById(R.id.toolbar)
         toolbar.title = ""
         setSupportActionBar(toolbar)
     }
@@ -77,23 +77,23 @@
     }
 
     fun updateFragmentTitle(title: String, summary: String, icon: Int, rootScreen: Boolean) {
-        (findViewById<TextView>(R.id.fragment_title)).text = title
+        (requireFindViewById<TextView>(R.id.fragment_title)).text = title
         if (rootScreen) {
-            (findViewById<TextView>(R.id.fragment_title)).setTextAppearance(R.style.Theme_OmniControl_TitleTextStyle)
+            (requireFindViewById<TextView>(R.id.fragment_title)).setTextAppearance(R.style.Theme_OmniControl_TitleTextStyle)
         } else {
-            (findViewById<TextView>(R.id.fragment_title)).setTextAppearance(R.style.Theme_OmniControl_GridItem_TitleTextStyle)
+            (requireFindViewById<TextView>(R.id.fragment_title)).setTextAppearance(R.style.Theme_OmniControl_GridItem_TitleTextStyle)
         }
         if (summary.isNotEmpty()) {
-            (findViewById<TextView>(R.id.fragment_summary)).visibility = View.VISIBLE
-            (findViewById<TextView>(R.id.fragment_summary)).text = summary
+            (requireFindViewById<TextView>(R.id.fragment_summary)).visibility = View.VISIBLE
+            (requireFindViewById<TextView>(R.id.fragment_summary)).text = summary
         } else {
-            (findViewById<TextView>(R.id.fragment_summary)).visibility = View.GONE
+            (requireFindViewById<TextView>(R.id.fragment_summary)).visibility = View.GONE
         }
         if (icon != 0) {
-            (findViewById<ImageView>(R.id.fragment_icon)).visibility = View.VISIBLE
-            (findViewById<ImageView>(R.id.fragment_icon)).setImageResource(icon)
+            (requireFindViewById<ImageView>(R.id.fragment_icon)).visibility = View.VISIBLE
+            (requireFindViewById<ImageView>(R.id.fragment_icon)).setImageResource(icon)
         } else {
-            (findViewById<ImageView>(R.id.fragment_icon)).visibility = View.GONE
+            (requireFindViewById<ImageView>(R.id.fragment_icon)).visibility = View.GONE
         }
     }
 
@@ -131,4 +131,8 @@
         ta.recycle()
         return color
     }
+    fun  <T> requireFindViewById(id: Int): T {
+        return findViewById(id)!!
+    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/search/SearchFragment.kt b/app/src/main/java/org/omnirom/control/search/SearchFragment.kt
index dd2573e..1aac162 100644
--- a/app/src/main/java/org/omnirom/control/search/SearchFragment.kt
+++ b/app/src/main/java/org/omnirom/control/search/SearchFragment.kt
@@ -74,12 +74,12 @@
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
 
-        val resultList: RecyclerView = view.findViewById(R.id.search_result_list)
+        val resultList: RecyclerView = view.findViewById(R.id.search_result_list)!!
         adapter = SearchResultAdapter(listItems, (activity as SettingsActivity))
         resultList.adapter = adapter
         resultList.layoutManager = LinearLayoutManager(context)
 
-        val searchText: EditText = view.findViewById(R.id.search_result_string)
+        val searchText: EditText = view.findViewById(R.id.search_result_string)!!
         searchText.addTextChangedListener(object : TextWatcher {
             override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
             override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
diff --git a/app/src/main/java/org/omnirom/control/search/SearchProvider.kt b/app/src/main/java/org/omnirom/control/search/SearchProvider.kt
index 1ddf97a..09bfbad 100644
--- a/app/src/main/java/org/omnirom/control/search/SearchProvider.kt
+++ b/app/src/main/java/org/omnirom/control/search/SearchProvider.kt
@@ -67,7 +67,7 @@
         searchItemList.add(
             SearchItem(
                 BarsSettingsFragment.XML_RES,
-                BarsSettingsFragment().javaClass.canonicalName,
+                BarsSettingsFragment().javaClass.canonicalName!!,
                 BarsSettingsFragment.ICON_RES,
                 this::isEnabled
             )
@@ -75,7 +75,7 @@
         searchItemList.add(
             SearchItem(
                 MoreSettingsFragment.XML_RES,
-                MoreSettingsFragment().javaClass.canonicalName,
+                MoreSettingsFragment().javaClass.canonicalName!!,
                 MoreSettingsFragment.ICON_RES,
                 this::isEnabled
             )
@@ -83,7 +83,7 @@
         searchItemList.add(
             SearchItem(
                 LockscreenSettingsFragment.XML_RES,
-                LockscreenSettingsFragment().javaClass.canonicalName,
+                LockscreenSettingsFragment().javaClass.canonicalName!!,
                 LockscreenSettingsFragment.ICON_RES,
                 this::isEnabled
             )
@@ -91,7 +91,7 @@
         searchItemList.add(
             SearchItem(
                 QSSettingsFragment.XML_RES,
-                QSSettingsFragment().javaClass.canonicalName,
+                QSSettingsFragment().javaClass.canonicalName!!,
                 QSSettingsFragment.ICON_RES,
                 this::isEnabled
             )
@@ -100,7 +100,7 @@
         searchItemList.add(
             SearchItem(
                 FingerprintSettingsFragment.XML_RES,
-                FingerprintSettingsFragment().javaClass.canonicalName,
+                FingerprintSettingsFragment().javaClass.canonicalName!!,
                 FingerprintSettingsFragment.ICON_RES,
                 FingerprintSettingsFragment::isEnabled
             )
@@ -109,7 +109,7 @@
         searchItemList.add(
             SearchItem(
                 DialerSettingsFragment.XML_RES,
-                DialerSettingsFragment().javaClass.canonicalName,
+                DialerSettingsFragment().javaClass.canonicalName!!,
                 DialerSettingsFragment.ICON_RES,
                 DialerSettingsFragment::isEnabled
             )
@@ -118,7 +118,7 @@
         searchItemList.add(
             SearchItem(
                 ButtonSettingsFragment.XML_RES,
-                ButtonSettingsFragment().javaClass.canonicalName,
+                ButtonSettingsFragment().javaClass.canonicalName!!,
                 ButtonSettingsFragment.ICON_RES,
                 this::isEnabled
             )
@@ -127,7 +127,7 @@
         searchItemList.add(
             SearchItem(
                 BatteryLightSettingsFragment.XML_RES,
-                BatteryLightSettingsFragment().javaClass.canonicalName,
+                BatteryLightSettingsFragment().javaClass.canonicalName!!,
                 BatteryLightSettingsFragment.ICON_RES,
                 BatteryLightSettingsFragment::isEnabled
             )
@@ -136,7 +136,7 @@
         searchItemList.add(
             SearchItem(
                 AppListFragment.XML_RES,
-                AppListFragment().javaClass.canonicalName,
+                AppListFragment().javaClass.canonicalName!!,
                 AppListFragment.ICON_RES,
                 this::isEnabled
             )
diff --git a/app/src/main/java/org/omnirom/control/search/SearchResultAdapter.kt b/app/src/main/java/org/omnirom/control/search/SearchResultAdapter.kt
index bc8fe92..b610bbf 100644
--- a/app/src/main/java/org/omnirom/control/search/SearchResultAdapter.kt
+++ b/app/src/main/java/org/omnirom/control/search/SearchResultAdapter.kt
@@ -69,9 +69,9 @@
 
     class ViewHolder(
         view: View,
-        val imageView: ImageView = view.findViewById(R.id.search_result_icon),
-        val titleText: TextView = view.findViewById(R.id.search_result_title),
-        val summaryText: TextView = view.findViewById(R.id.search_result_summary)
+        val imageView: ImageView = view.findViewById(R.id.search_result_icon)!!,
+        val titleText: TextView = view.findViewById(R.id.search_result_title)!!,
+        val summaryText: TextView = view.findViewById(R.id.search_result_summary)!!
     ) : RecyclerView.ViewHolder(view)
 
 }
\ No newline at end of file
