diff --git a/Android.mk b/Android.mk
index c27e502..7e8e6e5 100644
--- a/Android.mk
+++ b/Android.mk
@@ -2,7 +2,7 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_PACKAGE_NAME := CMParts
+LOCAL_PACKAGE_NAME := LineageParts
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 LOCAL_STATIC_JAVA_LIBRARIES := \
     android-support-v4 \
@@ -13,7 +13,7 @@
     android-support-v14-preference \
     jsr305 \
     uicommon \
-    org.cyanogenmod.platform.internal
+    org.lineageos.platform.internal
 
 LOCAL_RESOURCE_DIR := \
     $(LOCAL_PATH)/res \
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a560cb6..ba9845b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -18,7 +18,7 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
-    package="org.cyanogenmod.cmparts"
+    package="org.lineageos.lineageparts"
     android:versionCode="1"
     android:versionName="1.0"
     android:sharedUserId="android.uid.system">
@@ -36,15 +36,15 @@
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="android.permission.READ_SEARCH_INDEXABLES" />
 
-    <uses-permission android:name="cyanogenmod.permission.MANAGE_REMOTE_PREFERENCES" />
+    <uses-permission android:name="lineageos.permission.MANAGE_REMOTE_PREFERENCES" />
 
     <protected-broadcast android:name="android.intent.action.UPDATE_POWER_MENU" />
-    <protected-broadcast android:name="cyanogenmod.platform.app.profiles.PROFILES_STATE_CHANGED" />
-    <protected-broadcast android:name="org.cyanogenmod.cmparts.PART_CHANGED" />
-    <protected-broadcast android:name="org.cyanogenmod.cmparts.REFRESH_PART" />
-    <protected-broadcast android:name="org.cyanogenmod.cmparts.gestures.UPDATE_SETTINGS" />
+    <protected-broadcast android:name="lineageos.platform.app.profiles.PROFILES_STATE_CHANGED" />
+    <protected-broadcast android:name="org.lineageos.lineageparts.PART_CHANGED" />
+    <protected-broadcast android:name="org.lineageos.lineageparts.REFRESH_PART" />
+    <protected-broadcast android:name="org.lineageos.lineageparts.gestures.UPDATE_SETTINGS" />
 
-    <application android:label="@string/cmparts_title"
+    <application android:label="@string/lineageparts_title"
             android:theme="@style/Theme.Settings"
             android:hardwareAccelerated="true"
             android:supportsRtl="true"
@@ -58,8 +58,8 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.receiver"
-                android:value="org.cyanogenmod.cmparts.PartsUpdater" />
+                android:name="org.lineageos.settings.summary.receiver"
+                android:value="org.lineageos.lineageparts.PartsUpdater" />
         </activity>
 
         <receiver android:name=".BootReceiver" android:enabled="true">
@@ -70,13 +70,13 @@
 
         <receiver android:name=".PartsUpdater" android:enabled="true">
             <intent-filter>
-                <action android:name="cyanogenmod.intent.action.UPDATE_PREFERENCE" />
+                <action android:name="lineageos.intent.action.UPDATE_PREFERENCE" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </receiver>
 
-        <provider android:name=".search.CMPartsSearchIndexablesProvider"
-                  android:authorities="org.cyanogenmod.cmparts"
+        <provider android:name=".search.LineagePartsSearchIndexablesProvider"
+                  android:authorities="org.lineageos.lineageparts"
                   android:multiprocess="false"
                   android:grantUriPermissions="true"
                   android:permission="android.permission.READ_SEARCH_INDEXABLES"
@@ -93,7 +93,7 @@
             android:targetActivity="PartsActivity">
             <intent-filter android:priority="3">
                 <action android:name="com.android.settings.action.EXTRA_SETTINGS" />
-                <action android:name="org.cyanogenmod.cmparts.PRIVACY_SETTINGS" />
+                <action android:name="org.lineageos.lineageparts.PRIVACY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
             <meta-data
@@ -103,10 +103,10 @@
                 android:name="com.android.settings.icon"
                 android:resource="@drawable/ic_settings_privacy" />
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.receiver"
-                android:value="org.cyanogenmod.cmparts.PartsUpdater" />
+                android:name="org.lineageos.settings.summary.receiver"
+                android:value="org.lineageos.lineageparts.PartsUpdater" />
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.key"
+                android:name="org.lineageos.settings.summary.key"
                 android:value="privacy_settings" />
         </activity-alias>
 
@@ -117,7 +117,7 @@
             android:targetActivity="PartsActivity">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.action.EXTRA_SETTINGS" />
-                <action android:name="org.cyanogenmod.cmparts.BUTTON_SETTINGS" />
+                <action android:name="org.lineageos.lineageparts.BUTTON_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
             <meta-data
@@ -127,10 +127,10 @@
                 android:name="com.android.settings.icon"
                 android:resource="@drawable/ic_settings_buttons" />
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.receiver"
-                android:value="org.cyanogenmod.cmparts.PartsUpdater" />
+                android:name="org.lineageos.settings.summary.receiver"
+                android:value="org.lineageos.lineageparts.PartsUpdater" />
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.key"
+                android:name="org.lineageos.settings.summary.key"
                 android:value="button_settings" />
         </activity-alias>
 
@@ -143,7 +143,7 @@
             android:targetActivity="PartsActivity">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.action.EXTRA_SETTINGS" />
-                <action android:name="org.cyanogenmod.cmparts.PROFILES_SETTINGS" />
+                <action android:name="org.lineageos.lineageparts.PROFILES_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
             <meta-data
@@ -153,10 +153,10 @@
                 android:name="com.android.settings.icon"
                 android:resource="@drawable/ic_settings_profiles" />
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.receiver"
-                android:value="org.cyanogenmod.cmparts.PartsUpdater" />
+                android:name="org.lineageos.settings.summary.receiver"
+                android:value="org.lineageos.lineageparts.PartsUpdater" />
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.key"
+                android:name="org.lineageos.settings.summary.key"
                 android:value="profiles_settings" />
         </activity-alias>
 
@@ -167,7 +167,7 @@
             android:targetActivity="PartsActivity">
             <intent-filter android:priority="2">
                 <action android:name="com.android.settings.action.EXTRA_SETTINGS" />
-                <action android:name="org.cyanogenmod.cmparts.STATUS_BAR_SETTINGS" />
+                <action android:name="org.lineageos.lineageparts.STATUS_BAR_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
             <meta-data
@@ -177,34 +177,34 @@
                 android:name="com.android.settings.icon"
                 android:resource="@drawable/ic_settings_statusbar" />
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.receiver"
-                android:value="org.cyanogenmod.cmparts.PartsUpdater" />
+                android:name="org.lineageos.settings.summary.receiver"
+                android:value="org.lineageos.lineageparts.PartsUpdater" />
             <meta-data
-                android:name="org.cyanogenmod.settings.summary.key"
+                android:name="org.lineageos.settings.summary.key"
                 android:value="status_bar_settings" />
         </activity-alias>
 
         <!-- Anonymous Statistics -->
-        <receiver android:name=".cmstats.ReportingServiceManager"
+        <receiver android:name=".lineagestats.ReportingServiceManager"
             android:enabled="true"
             android:exported="false"
             android:label="ReportingServiceManager">
             <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
-                <action android:name="org.cyanogenmod.cmparts.action.TRIGGER_REPORT_METRICS" />
+                <action android:name="org.lineageos.lineageparts.action.TRIGGER_REPORT_METRICS" />
             </intent-filter>
         </receiver>
 
         <service android:label="ReportingService"
             android:enabled="true"
             android:exported="false"
-            android:name=".cmstats.ReportingService">
+            android:name=".lineagestats.ReportingService">
         </service>
 
-        <service android:name=".cmstats.StatsUploadJobService"
+        <service android:name=".lineagestats.StatsUploadJobService"
                  android:permission="android.permission.BIND_JOB_SERVICE" />
 
-        <service android:name=".cmstats.ReportingService"
+        <service android:name=".lineagestats.ReportingService"
                  android:label="ReportingService"
                  android:enabled="true"
                  android:exported="false" />
@@ -215,7 +215,7 @@
             android:label="@string/weather_settings_title"
             android:targetActivity="PartsActivity">
             <intent-filter android:priority="1">
-                <action android:name="cyanogenmod.intent.action.MANAGE_WEATHER_PROVIDER_SERVICES" />
+                <action android:name="lineageos.intent.action.MANAGE_WEATHER_PROVIDER_SERVICES" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity-alias>
diff --git a/proguard.flags b/proguard.flags
index 733d5d9..85e774a 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -1,18 +1,18 @@
 # Keep all Fragments in this package, which are used by reflection.
--keep class org.cyanogenmod.cmparts.*Fragment
--keep class org.cyanogenmod.cmparts.*Picker
--keep class org.cyanogenmod.cmparts.*Settings
+-keep class org.lineageos.lineageparts.*Fragment
+-keep class org.lineageos.lineageparts.*Picker
+-keep class org.lineageos.lineageparts.*Settings
 
--keep class org.cyanogenmod.cmparts.cmstats.*
--keep class org.cyanogenmod.cmparts.contributors.*
--keep class org.cyanogenmod.cmparts.hardware.*
--keep class org.cyanogenmod.cmparts.input.*
--keep class org.cyanogenmod.cmparts.livedisplay.*
--keep class org.cyanogenmod.cmparts.notificationlight.*
--keep class org.cyanogenmod.cmparts.power.*
--keep class org.cyanogenmod.cmparts.privacyguard.*
--keep class org.cyanogenmod.cmparts.profiles.*
--keep class org.cyanogenmod.cmparts.sounds.*
+-keep class org.lineageos.lineageparts.lineagestats.*
+-keep class org.lineageos.lineageparts.contributors.*
+-keep class org.lineageos.lineageparts.hardware.*
+-keep class org.lineageos.lineageparts.input.*
+-keep class org.lineageos.lineageparts.livedisplay.*
+-keep class org.lineageos.lineageparts.notificationlight.*
+-keep class org.lineageos.lineageparts.power.*
+-keep class org.lineageos.lineageparts.privacyguard.*
+-keep class org.lineageos.lineageparts.profiles.*
+-keep class org.lineageos.lineageparts.sounds.*
 
 # Keep click responders
 -keepclassmembers class com.android.settings.inputmethod.UserDictionaryAddWordActivity {
diff --git a/res/layout/button_backlight.xml b/res/layout/button_backlight.xml
index 8196755..30ed4de 100644
--- a/res/layout/button_backlight.xml
+++ b/res/layout/button_backlight.xml
@@ -89,7 +89,7 @@
             android:layout_alignParentEnd="true"
             android:paddingStart="10dip"
             android:paddingEnd="10dip" />
-        <org.cyanogenmod.cmparts.input.BacklightTimeoutSeekBar
+        <org.lineageos.lineageparts.input.BacklightTimeoutSeekBar
             android:id="@+id/timeout_seekbar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/res/layout/dialog_light_settings.xml b/res/layout/dialog_light_settings.xml
index 02ef466..7b6102f 100644
--- a/res/layout/dialog_light_settings.xml
+++ b/res/layout/dialog_light_settings.xml
@@ -30,7 +30,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent" >
 
-        <org.cyanogenmod.cmparts.notificationlight.ColorPickerView
+        <org.lineageos.lineageparts.notificationlight.ColorPickerView
             android:id="@+id/color_picker_view"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -58,7 +58,7 @@
                 android:layout_height="match_parent"
                 android:layout_weight="0.5" />
 
-            <org.cyanogenmod.cmparts.notificationlight.ColorPanelView
+            <org.lineageos.lineageparts.notificationlight.ColorPanelView
                 android:id="@+id/color_panel"
                 android:layout_width="0px"
                 android:layout_height="match_parent"
diff --git a/res/layout/display_color_calibration.xml b/res/layout/display_color_calibration.xml
index 5621f4c..61df718 100644
--- a/res/layout/display_color_calibration.xml
+++ b/res/layout/display_color_calibration.xml
@@ -15,7 +15,7 @@
      limitations under the License.
 -->
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-		    xmlns:cm="http://schemas.android.com/apk/res/org.cyanogenmod.cmparts"
+		    xmlns:lineage="http://schemas.android.com/apk/res/org.lineageos.lineageparts"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
@@ -37,16 +37,16 @@
                 android:layout_height="wrap_content"
                 android:layout_alignParentRight="true"
                 android:paddingTop="10dip" />
-        <org.cyanogenmod.cmparts.widget.IntervalSeekBar
+        <org.lineageos.lineageparts.widget.IntervalSeekBar
             android:id="@+id/color_red_seekbar"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/color_red_text"
                 android:paddingTop="2dip"
-                cm:min="0.20"
-                cm:max="1.00"
-                cm:defaultValue="1.00"
-                cm:digits="4" />
+                lineage:min="0.20"
+                lineage:max="1.00"
+                lineage:defaultValue="1.00"
+                lineage:digits="4" />
 
         <TextView android:id="@+id/color_green_text"
                 android:layout_width="wrap_content"
@@ -60,16 +60,16 @@
                 android:layout_below="@id/color_red_seekbar"
                 android:layout_alignParentRight="true"
                 android:paddingTop="10dip" />
-        <org.cyanogenmod.cmparts.widget.IntervalSeekBar
+        <org.lineageos.lineageparts.widget.IntervalSeekBar
             android:id="@+id/color_green_seekbar"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/color_green_text"
                 android:paddingTop="2dip"
-                cm:min="0.20"
-                cm:max="1.00"
-                cm:defaultValue="1.00"
-                cm:digits="4" />
+                lineage:min="0.20"
+                lineage:max="1.00"
+                lineage:defaultValue="1.00"
+                lineage:digits="4" />
 
         <TextView android:id="@+id/color_blue_text"
                 android:layout_width="match_parent"
@@ -83,16 +83,16 @@
                 android:layout_below="@id/color_green_seekbar"
                 android:layout_alignParentRight="true"
                 android:paddingTop="10dip" />
-        <org.cyanogenmod.cmparts.widget.IntervalSeekBar
+        <org.lineageos.lineageparts.widget.IntervalSeekBar
             android:id="@+id/color_blue_seekbar"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/color_blue_text"
                 android:paddingTop="2dip"
-                cm:min="0.20"
-                cm:max="1.00"
-                cm:defaultValue="1.00"
-                cm:digits="4" />
+                lineage:min="0.20"
+                lineage:max="1.00"
+                lineage:defaultValue="1.00"
+                lineage:digits="4" />
 
         <ImageView android:id="@+id/black_scale_picture_color"
                 android:src="@drawable/color_tuning_preview"
diff --git a/res/layout/display_picture_adjustment.xml b/res/layout/display_picture_adjustment.xml
index 3543ce1..334a50f 100644
--- a/res/layout/display_picture_adjustment.xml
+++ b/res/layout/display_picture_adjustment.xml
@@ -15,7 +15,7 @@
      limitations under the License.
 -->
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-            xmlns:cm="http://schemas.android.com/apk/res/org.cyanogenmod.cmparts"
+            xmlns:lineage="http://schemas.android.com/apk/res/org.lineageos.lineageparts"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
@@ -37,16 +37,16 @@
                 android:layout_height="wrap_content"
                 android:layout_alignParentRight="true"
                 android:paddingTop="10dip" />
-        <org.cyanogenmod.cmparts.widget.IntervalSeekBar
+        <org.lineageos.lineageparts.widget.IntervalSeekBar
             android:id="@+id/adj_hue_seekbar"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/adj_hue_text"
                 android:paddingTop="2dip"
-                cm:min="0.20"
-                cm:max="1.00"
-                cm:defaultValue="1.00"
-                cm:digits="4" />
+                lineage:min="0.20"
+                lineage:max="1.00"
+                lineage:defaultValue="1.00"
+                lineage:digits="4" />
 
         <TextView android:id="@+id/adj_saturation_text"
                 android:layout_width="wrap_content"
@@ -60,16 +60,16 @@
                 android:layout_below="@id/adj_hue_seekbar"
                 android:layout_alignParentRight="true"
                 android:paddingTop="10dip" />
-        <org.cyanogenmod.cmparts.widget.IntervalSeekBar
+        <org.lineageos.lineageparts.widget.IntervalSeekBar
             android:id="@+id/adj_saturation_seekbar"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/adj_saturation_text"
                 android:paddingTop="2dip"
-                cm:min="0.20"
-                cm:max="1.00"
-                cm:defaultValue="1.00"
-                cm:digits="4" />
+                lineage:min="0.20"
+                lineage:max="1.00"
+                lineage:defaultValue="1.00"
+                lineage:digits="4" />
 
         <TextView android:id="@+id/adj_intensity_text"
                 android:layout_width="match_parent"
@@ -83,16 +83,16 @@
                 android:layout_below="@id/adj_saturation_seekbar"
                 android:layout_alignParentRight="true"
                 android:paddingTop="10dip" />
-        <org.cyanogenmod.cmparts.widget.IntervalSeekBar
+        <org.lineageos.lineageparts.widget.IntervalSeekBar
             android:id="@+id/adj_intensity_seekbar"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/adj_intensity_text"
                 android:paddingTop="2dip"
-                cm:min="0.20"
-                cm:max="1.00"
-                cm:defaultValue="1.00"
-                cm:digits="4" />
+                lineage:min="0.20"
+                lineage:max="1.00"
+                lineage:defaultValue="1.00"
+                lineage:digits="4" />
 
         <TextView android:id="@+id/adj_contrast_text"
                 android:layout_width="match_parent"
@@ -106,16 +106,16 @@
                 android:layout_below="@id/adj_intensity_seekbar"
                 android:layout_alignParentRight="true"
                 android:paddingTop="10dip" />
-        <org.cyanogenmod.cmparts.widget.IntervalSeekBar
+        <org.lineageos.lineageparts.widget.IntervalSeekBar
             android:id="@+id/adj_contrast_seekbar"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/adj_contrast_text"
                 android:paddingTop="2dip"
-                cm:min="0.20"
-                cm:max="1.00"
-                cm:defaultValue="1.00"
-                cm:digits="4" />
+                lineage:min="0.20"
+                lineage:max="1.00"
+                lineage:defaultValue="1.00"
+                lineage:digits="4" />
 
         <ImageView android:id="@+id/black_scale_picture_adjustment"
                 android:src="@drawable/color_tuning_preview"
diff --git a/res/layout/lineageparts.xml b/res/layout/lineageparts.xml
index 9df0f3b..e434df4 100644
--- a/res/layout/lineageparts.xml
+++ b/res/layout/lineageparts.xml
@@ -28,7 +28,7 @@
             android:layout_width="match_parent"
             android:layout_weight="1">
 
-        <org.cyanogenmod.cmparts.widget.SwitchBar
+        <org.lineageos.lineageparts.widget.SwitchBar
             android:id="@+id/switch_bar"
                   android:layout_height="?android:attr/actionBarSize"
                   android:layout_width="match_parent"
diff --git a/res/layout/preference_list_fragment.xml b/res/layout/preference_list_fragment.xml
index 8e6a811..33cb8eb 100644
--- a/res/layout/preference_list_fragment.xml
+++ b/res/layout/preference_list_fragment.xml
@@ -52,7 +52,7 @@
 
         <include layout="@layout/loading_container" />
 
-        <org.cyanogenmod.cmparts.widget.FloatingActionButton
+        <org.lineageos.lineageparts.widget.FloatingActionButton
             android:id="@+id/fab"
             android:visibility="gone"
             android:clickable="true"
diff --git a/res/layout/switch_bar.xml b/res/layout/switch_bar.xml
index 6cf6f76..da59dc7 100644
--- a/res/layout/switch_bar.xml
+++ b/res/layout/switch_bar.xml
@@ -30,7 +30,7 @@
               android:textColor="@color/switchbar_text_color"
               android:textAlignment="viewStart" />
 
-    <org.cyanogenmod.cmparts.widget.ToggleSwitch
+    <org.lineageos.lineageparts.widget.ToggleSwitch
         android:id="@+id/switch_widget"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 83cd7c0..71bd5e4 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS instellings</string>
+  <string name="lineageparts_title">LineageOS instellings</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Laai tans\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Totale bydraers:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Totale commits:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Laaste opgedateer:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS statistieke</string>
   <string name="anonymous_statistics_summary">Help om LineageOS beter maak deur anonieme statistieke verslaggewing aan te skakel</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-as-rIN/strings.xml b/res/values-as-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-as-rIN/strings.xml
+++ b/res/values-as-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ast-rES/strings.xml b/res/values-ast-rES/strings.xml
index 9f9f067..38fb607 100644
--- a/res/values-ast-rES/strings.xml
+++ b/res/values-ast-rES/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Axustes de LineageOS</string>
+  <string name="lineageparts_title">Axustes de LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Cargando\u2026</string>
   <string name="dlg_ok">Aceutar</string>
@@ -335,7 +335,7 @@
         <![CDATA[<b>Collaboradores totales:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Unvios totales:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Anovamientu caberu:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Estadístiques de LineageOS</string>
   <string name="anonymous_statistics_summary">Ayuda a ameyorar LineageOS dando laude al unviu anónimu d\'estadístiques</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-be-rBY/strings.xml b/res/values-be-rBY/strings.xml
index 1f915dd..a682172 100644
--- a/res/values-be-rBY/strings.xml
+++ b/res/values-be-rBY/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Налады LineageOS</string>
+  <string name="lineageparts_title">Налады LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Ладаваньне\u2026</string>
   <string name="dlg_ok">Добра</string>
@@ -295,7 +295,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 550892f..cbb80ea 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -59,7 +59,7 @@
   <!-- Status bar - double tap to sleep -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 984bf2f..40ba92b 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Настройки LineageOS</string>
+  <string name="lineageparts_title">Настройки LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Зареждане\u2026</string>
   <string name="dlg_ok">ОK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Брой разработчици:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Брой промени:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Последна актуализация:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Статистики</string>
   <string name="anonymous_statistics_summary">Помогнете да направим LineageOS по-добър, като разрешите да събира анонимни статистически данни</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-br-rFR/strings.xml b/res/values-br-rFR/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-br-rFR/strings.xml
+++ b/res/values-br-rFR/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index c59c4c7..6ecdfe9 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Configuració de LineageOS</string>
+  <string name="lineageparts_title">Configuració de LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">S\'està carregant\u2026</string>
   <string name="dlg_ok">D\'ACORD</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Total de contribuïdors:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Total de publicacions:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Darrera actualització:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Estadístiques de LineageOS</string>
   <string name="anonymous_statistics_summary">Ajuda a fer millor LineageOS optant a transmetre estadístiques anònimes</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 13245ec..6251748 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Nastavení LineageOS</string>
+  <string name="lineageparts_title">Nastavení LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Načítání\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
 <![CDATA[<b>Celkem přispěvatelů:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
 <b>Celkem příspěvků:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
 <b>Poslední aktualizace:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS statistika</string>
   <string name="anonymous_statistics_summary">Pomozte nám zdokonalit LineageOS zasíláním anonymní statistiky</string>
diff --git a/res/values-csb-rPL/strings.xml b/res/values-csb-rPL/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-csb-rPL/strings.xml
+++ b/res/values-csb-rPL/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-cy/strings.xml b/res/values-cy/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-cy/strings.xml
+++ b/res/values-cy/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index d6f8718..8fbbda8 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS-indstillinger</string>
+  <string name="lineageparts_title">LineageOS-indstillinger</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Indlæser\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -444,7 +444,7 @@
         <![CDATA[<b>Bidragsydere i alt:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Bidrag i alt:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Seneste opdatering:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS-statistikker</string>
   <string name="anonymous_statistics_summary">Hjælp med at gøre LineageOS bedre ved at deltage i rapportering af anonyme statistikker</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 2f7f5cb..7f84cf2 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS-Einstellungen</string>
+  <string name="lineageparts_title">LineageOS-Einstellungen</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Wird geladen\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,12 +451,12 @@
 <![CDATA[<b>Mitwirkende insgesamt:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
 <b>Beiträge insgesamt:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
 <b>Letzte Aktualisierung:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS-Statistiken</string>
   <string name="anonymous_statistics_summary">Helfen Sie uns, LineageOS zu verbessern, indem Sie dem Sammeln anonymer Gerätestatistiken zustimmen.</string>
   <string name="anonymous_statistics_warning_title">Über</string>
-  <string name="anonymous_statistics_warning">Die Aktivierung der Cyanogenmod-Statistiken ermöglicht die Übertragung von nicht-personenbezogenen Daten an die Entwickler von LineageOS. Die bei jedem Neustart des Geräts übermittelten Daten beeinträchtigen nicht die Privatsphäre, da sie keinerlei Rückschlüsse auf den Benutzer zulassen.\n\nFür ein Beispiel der gesendeten Daten bitte auf \"Vorschau\" klicken.</string>
+  <string name="anonymous_statistics_warning">Die Aktivierung der Lineage-Statistiken ermöglicht die Übertragung von nicht-personenbezogenen Daten an die Entwickler von LineageOS. Die bei jedem Neustart des Geräts übermittelten Daten beeinträchtigen nicht die Privatsphäre, da sie keinerlei Rückschlüsse auf den Benutzer zulassen.\n\nFür ein Beispiel der gesendeten Daten bitte auf \"Vorschau\" klicken.</string>
   <string name="enable_reporting_title">Berichte einschalten</string>
   <string name="preview_data_title">Vorschau</string>
   <string name="view_stats_title">Statistiken anzeigen</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 1bdaf10..215972a 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Ρυθμίσεις LineageOS</string>
+  <string name="lineageparts_title">Ρυθμίσεις LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Φόρτωση\u2026</string>
   <string name="dlg_ok">ΟΚ</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Σύνολο συνεισφερόντων:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Σύνολο συνεισφορών:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Τελευταία ενημέρωση:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Στατιστικά LineageOS</string>
   <string name="anonymous_statistics_summary">Βοηθήστε το LineageOS να γίνει καλύτερο ενεργοποιώντας την αποστολή ανώνυμων στατιστικών στοιχείων</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 52d7fca..9ce3f1a 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS Settings</string>
+  <string name="lineageparts_title">LineageOS Settings</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Loading\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Total contributors:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Total commits:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Last update:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS statistics</string>
   <string name="anonymous_statistics_summary">Help make LineageOS better by opting into anonymous statistics reporting</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index bcb4d9f..f36f0e2 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS Settings</string>
+  <string name="lineageparts_title">LineageOS Settings</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Loading\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -449,7 +449,7 @@
         <![CDATA[<b>Total contributors:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Total commits:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Last update:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS statistics</string>
   <string name="anonymous_statistics_summary">Help make LineageOS better by opting into anonymous statistics reporting</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index ce2e78c..af0fe1d 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS Settings</string>
+  <string name="lineageparts_title">LineageOS Settings</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Loading\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Total contributors:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Total commits:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Last update:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS statistics</string>
   <string name="anonymous_statistics_summary">Help make LineageOS better by opting into anonymous statistics reporting</string>
diff --git a/res/values-en-rPT/strings.xml b/res/values-en-rPT/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-en-rPT/strings.xml
+++ b/res/values-en-rPT/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-eo/strings.xml
+++ b/res/values-eo/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-es-rCO/strings.xml b/res/values-es-rCO/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-es-rCO/strings.xml
+++ b/res/values-es-rCO/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-es-rMX/strings.xml b/res/values-es-rMX/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-es-rMX/strings.xml
+++ b/res/values-es-rMX/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index f718b67..6dcb460 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Ajustes de LineageOS</string>
+  <string name="lineageparts_title">Ajustes de LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Cargando\u2026</string>
   <string name="dlg_ok">Aceptar</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Colaboradores totales:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Contribuciones totales:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Última actualización:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Estadísticas de LineageOS</string>
   <string name="anonymous_statistics_summary">Ayuda a mejorar LineageOS mediante el envío anónimo de estadísticas</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index e064337..8ded09b 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Configuración de LineageOS</string>
+  <string name="lineageparts_title">Configuración de LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Cargando\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Contribuyentes totales:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Contribuciones totales:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Última actualización:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Estadísticas LineageOS</string>
   <string name="anonymous_statistics_summary">Ayuda a mejorar LineageOS mediante el envío anónimo de estadísticas</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 31f9909..9c91a43 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS ezarpenak</string>
+  <string name="lineageparts_title">LineageOS ezarpenak</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Kargatzen\u2026</string>
   <string name="dlg_ok">Ados</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Parte-hartzaileak guztira:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Parte-hartzeak guztira:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Azken eguneratzea:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS estatistikak</string>
   <string name="anonymous_statistics_summary">LineageOS hobetzen lagundu estatistika anonimoak bidaliz</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 34af127..bc15f05 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS Asetukset</string>
+  <string name="lineageparts_title">LineageOS Asetukset</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Ladataan\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Kehittäjiä yhteensä:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Muutoksia yhteensä:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Päivitetty:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS-tilastot</string>
   <string name="anonymous_statistics_summary">Auta tekemään LineageOSista parempi tarjoamalla anonyymejä tilastoraportteja</string>
diff --git a/res/values-fil-rPH/strings.xml b/res/values-fil-rPH/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-fil-rPH/strings.xml
+++ b/res/values-fil-rPH/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 35d11c7..78348cc 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Paramètres de LineageOS</string>
+  <string name="lineageparts_title">Paramètres de LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Chargement\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -449,7 +449,7 @@
         <![CDATA[<b>Nombre de contributeurs :</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Nombre de contributions :</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Dernière mise à jour :</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Statistiques LineageOS</string>
   <string name="anonymous_statistics_summary">Contribuez à rendre LineageOS meilleure en envoyant des rapports de statistiques anonymes</string>
diff --git a/res/values-frp-rIT/strings.xml b/res/values-frp-rIT/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-frp-rIT/strings.xml
+++ b/res/values-frp-rIT/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-fy-rNL/strings.xml b/res/values-fy-rNL/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-fy-rNL/strings.xml
+++ b/res/values-fy-rNL/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ga-rIE/strings.xml b/res/values-ga-rIE/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ga-rIE/strings.xml
+++ b/res/values-ga-rIE/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-gd-rGB/strings.xml b/res/values-gd-rGB/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-gd-rGB/strings.xml
+++ b/res/values-gd-rGB/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 48b5813..e2560bd 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Axustes de LineageOS</string>
+  <string name="lineageparts_title">Axustes de LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Cargando\u2026</string>
   <string name="dlg_ok">ACEPTAR</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Colaboradores totais:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Envíos totais:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Última actualización:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS estadisticas</string>
   <string name="anonymous_statistics_summary">Axude a mellorar LineageOS enviando informes de estatísiticas anónimas</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 6e095fc..f3bb62d 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS Postavke</string>
+  <string name="lineageparts_title">LineageOS Postavke</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Učitavanje\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -417,7 +417,7 @@
 <![CDATA[<b>Svi suradnici:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
 <b>Ukupno obveza:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
 <b>Zadnje ažuriranje:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS statistika</string>
   <string name="anonymous_statistics_summary">Pomozite nam poboljšati LineageOS slanjem anonimnih statističkih izvješća</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index ac43161..c6b94d6 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS beállítások</string>
+  <string name="lineageparts_title">LineageOS beállítások</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Betöltés\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Közreműködő összesen:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Összes változtatás:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Utolsó frissítés:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS statisztika</string>
   <string name="anonymous_statistics_summary">Segítsen a LineageOS jobbá tételében, kapcsolja be a névtelen statisztikai adatok gyűjtését</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index b697a19..1419207 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Pengaturan LineageOS</string>
+  <string name="lineageparts_title">Pengaturan LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Memuat\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Total kontributor:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Total tindakan:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Diperbarui:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Statistik LineageOS</string>
   <string name="anonymous_statistics_summary">Bantu LineageOS untuk menjadi lebih baik dengan memilih ikut dalam pelaporan statistik anonim</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 396a09a..f7f5a6a 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Impostazioni LineageOS</string>
+  <string name="lineageparts_title">Impostazioni LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Caricamento\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -448,10 +448,10 @@
   <string name="contributions_info_menu">Informazioni contributi</string>
   <string name="contributions_info_msg"><b>Contributori totali:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>                 <b>Commit totali:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
 <b>Ultimo aggiornamento:</b> <xliff:g id="date">%3$s</xliff:g></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Statistiche LineageOS</string>
-  <string name="anonymous_statistics_summary">Aiuta a migliorare Cyanogenmod consentendo l\'invio di statistiche anonime</string>
+  <string name="anonymous_statistics_summary">Aiuta a migliorare Lineage consentendo l\'invio di statistiche anonime</string>
   <string name="anonymous_statistics_warning_title">Info</string>
   <string name="anonymous_statistics_warning">Attivando le Statistiche LineageOS consentirai l\'invio di dati non personali agli sviluppatori per contare il numero di installazioni sui dispositivi. Le informazioni inviate includono un\'identificatore unico che non compromette in alcun modo la tua privacy o dati personali.\n\nPer vedere un esempio di dati inviati, tocca Anteprima Dati.</string>
   <string name="enable_reporting_title">Attiva report</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 666d0f4..beff202 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">הגדרות LineageOS</string>
+  <string name="lineageparts_title">הגדרות LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">טוען\u2026</string>
   <string name="dlg_ok">אישור</string>
@@ -451,7 +451,7 @@
 <![CDATA[<b>סה"כ תורמים:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>סה"כ חלקי קוד:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>עדכון אחרון:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">סטטיסטיקות LineageOS</string>
   <string name="anonymous_statistics_summary">עזור לשפר את LineageOS על ידי שליחת דיווחי סטטיסטיקות אנונימית</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index cb2032b..1dc524e 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS の設定</string>
+  <string name="lineageparts_title">LineageOS の設定</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">読み込み中...</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>貢献者の合計:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>コミットの合計:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>最終更新:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS の統計</string>
   <string name="anonymous_statistics_summary">匿名の統計のレポートに同意してLineageOSの改善に協力する</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index cd4c8e9..0b6bda9 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS 설정</string>
+  <string name="lineageparts_title">LineageOS 설정</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">불러오는 중\u2026</string>
   <string name="dlg_ok">확인</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>총 기여자:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>총 변경 사항:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>마지막 업데이트:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS 통계</string>
   <string name="anonymous_statistics_summary">익명의 통계 자료를 보내 LineageOS 개선에 도움 주기</string>
diff --git a/res/values-ku/strings.xml b/res/values-ku/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ku/strings.xml
+++ b/res/values-ku/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-lb/strings.xml
+++ b/res/values-lb/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 32f0c97..6d15a61 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS Innstillinger</string>
+  <string name="lineageparts_title">LineageOS Innstillinger</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Laster inn\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Totalt antall bidragsytere:</b><xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Totalt antall utførelser:</b><xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Siste oppdatering:</b><xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS-statistikk</string>
   <string name="anonymous_statistics_summary">Hjelp oss med å gjøre LineageOS bedre ved å velge å sende inn anonym statistikkrapportering</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 43a4068..dba3c48 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS-instellingen</string>
+  <string name="lineageparts_title">LineageOS-instellingen</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Laden\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Aantal bijdragers:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Aantal commits:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Laatste update:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS-statistieken</string>
   <string name="anonymous_statistics_summary">Help LineageOS te verbeteren door anonieme statistieken te verzenden</string>
diff --git a/res/values-oc-rFR/strings.xml b/res/values-oc-rFR/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-oc-rFR/strings.xml
+++ b/res/values-oc-rFR/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-or-rIN/strings.xml b/res/values-or-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-or-rIN/strings.xml
+++ b/res/values-or-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 8e52e1c..b470359 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Ustawienia LineageOS</string>
+  <string name="lineageparts_title">Ustawienia LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Ładowanie\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -449,7 +449,7 @@
         <![CDATA[<b>Wszyscy współtwórcy:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Wszystkie poprawki:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Ostatnia aktualizacja:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Statystyki LineageOS</string>
   <string name="anonymous_statistics_summary">Pomóż ulepszyć LineageOS, pozwalając na wysyłanie anonimowych statystyk</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index ebbe93e..4edede7 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Configurações LineageOS</string>
+  <string name="lineageparts_title">Configurações LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Carregando\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Quantidade de colaboradores:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Quantidade de colaborações:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Última atualização:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Estatísticas LineageOS</string>
   <string name="anonymous_statistics_summary">Ajude a melhorar o LineageOS optando por enviar estatísticas anônimas</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index dc83c0f..b32369e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Definições LineageOS</string>
+  <string name="lineageparts_title">Definições LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">A carregar\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Total de colaboradores:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Total de contribuições:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Última atualização:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Estatísticas LineageOS</string>
   <string name="anonymous_statistics_summary">Ajude a melhorar a LineageOS optando por ativar o envio do relatório de estatísticas anónimas</string>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index bd2ae03..436d31e 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Setări LineageOS</string>
+  <string name="lineageparts_title">Setări LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Încărcare\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Total contribuitori:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Total contribuții:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Ultima actualizare:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Statistici LineageOS</string>
   <string name="anonymous_statistics_summary">Ajutați la îmbunătățirea lui LineageOS prin optarea pentru raportarea anonimă de statistici</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index cae770b..691f570 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Настройки LineageOS</string>
+  <string name="lineageparts_title">Настройки LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Загрузка\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
  <![CDATA[<b>Всего участников:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
 <b>Всего коммитов:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
 <b>Последнее обновление:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Отправка статистики</string>
   <string name="anonymous_statistics_summary">Помогите сделать LineageOS лучше, разрешив отправку анонимной статистики</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 2c227c1..ee5f5d0 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Nastavenia LineageOS</string>
+  <string name="lineageparts_title">Nastavenia LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Nahrávanie\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
 <![CDATA[<b>Celkom prispievateľov:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
 <b>Celkom príspevkov:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
 <b>Posledná aktualizácia:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Štatistiky LineageOS</string>
   <string name="anonymous_statistics_summary">Pomôžte zlepšiť LineageOS povolením anonymných štatistických hlásení</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 43dc603..d9a1994 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Nastavitve LineageOS</string>
+  <string name="lineageparts_title">Nastavitve LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Nalaganje \u2026</string>
   <string name="dlg_ok">V redu</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Skupaj sodelavcev:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Skupaj prispevkov:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Zadnja posodobitev:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Statistika LineageOS</string>
   <string name="anonymous_statistics_summary">Pomagajte izboljšati LineageOS tako, da izberete pošiljanje anonimne statistike</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index ae1a3dd..dd41a97 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Parametrat e LineageOS</string>
+  <string name="lineageparts_title">Parametrat e LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Duke u ngarkuar\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -431,7 +431,7 @@
   <string name="contributions_info_menu">Informacion rreth kontribimeve</string>
   <string name="contributions_info_msg">
 <![CDATA[<b>Kontribuesit në total:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>                 <b>Kontribimet në total:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>                 <b>Përditësimi i fundit:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Statistikat e LineageOS</string>
   <string name="anonymous_statistics_summary">Ndihmo në përmirësimin e LineageOS duke lejuar raportimin anonim të statistikave</string>
diff --git a/res/values-sr-rCS/strings.xml b/res/values-sr-rCS/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-sr-rCS/strings.xml
+++ b/res/values-sr-rCS/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index a801cd9..b973a17 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Подешавања LineageOS-а</string>
+  <string name="lineageparts_title">Подешавања LineageOS-а</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Учитавам\u2026</string>
   <string name="dlg_ok">У реду</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Укупно сарадника:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Укупно доприноса:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Последња измена:</b> <xliff:g id="date">%3$s</xliff:g>]]>;</string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Слање статистике</string>
   <string name="anonymous_statistics_summary">Помозите нам да побољшамо LineageOS тако што ћете дозволити слање анонимне статистике.</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 7966429..112d0fe 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Inställningar för LineageOS</string>
+  <string name="lineageparts_title">Inställningar för LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Laddar\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -214,7 +214,7 @@
   <string name="status_bar_icons_title">Statusfältsikoner</string>
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS statistik</string>
   <!-- Anonymous Statistics - Preview -->
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 0dfe658..cf467a1 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS Ayarları</string>
+  <string name="lineageparts_title">LineageOS Ayarları</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Yükleniyor\u2026</string>
   <string name="dlg_ok">TAMAM</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Tüm katkı sağlayanlar:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Toplam girdi:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Son güncelleme:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS istatistikleri</string>
   <string name="anonymous_statistics_summary">LineageOS\'u geliştirmeye yardım etmek için anonim istatistik göndermeyi kabul edin</string>
diff --git a/res/values-ug/strings.xml b/res/values-ug/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ug/strings.xml
+++ b/res/values-ug/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 246da23..259f102 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Налаштування LineageOS</string>
+  <string name="lineageparts_title">Налаштування LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Завантаження\u2026</string>
   <string name="dlg_ok">ОК</string>
@@ -444,7 +444,7 @@
         <![CDATA[<b>Всього учасників проекту:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Всього коммітів:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Останнє оновлення:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Статистика LineageOS</string>
   <string name="anonymous_statistics_summary">Допоможіть зробити LineageOS кращим, відправляючи анонімну статистику</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index a259845..0f113e5 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">Cài đặt LineageOS</string>
+  <string name="lineageparts_title">Cài đặt LineageOS</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">Đang tải\u2026</string>
   <string name="dlg_ok">OK</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>Total contributors:</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>Total commits:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Last update:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">Thống kê LineageOS</string>
   <string name="anonymous_statistics_summary">Giúp cho LineageOS tốt hơn bằng cách chọn vào báo cáo số liệu thống kê ẩn danh</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index ebd2367..fd37fa9 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS 设置</string>
+  <string name="lineageparts_title">LineageOS 设置</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">正在加载\u2026</string>
   <string name="dlg_ok">确定</string>
@@ -451,7 +451,7 @@
         <![CDATA[<b>贡献者总数：</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>提交总数：</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>最后更新：</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS 统计</string>
   <string name="anonymous_statistics_summary">开启匿名统计报告以便帮助 LineageOS 未来向更好的方向发展</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index bf7a125..8953410 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -17,7 +17,7 @@
 	limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="cmparts_title">LineageOS 設定</string>
+  <string name="lineageparts_title">LineageOS 設定</string>
   <!-- Generic stuff used everywhere -->
   <string name="loading">載入中\u2026</string>
   <string name="dlg_ok">確定</string>
@@ -450,7 +450,7 @@
         <![CDATA[<b>總貢獻者：</b> <xliff:g id="total_contributors">%1$s</xliff:g><br/><br/>
                  <b>總認可：</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>最後更新：</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <string name="anonymous_statistics_title">LineageOS 統計</string>
   <string name="anonymous_statistics_summary">加入匿名統計報告即可協助改進 LineageOS</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 1cd67f9..a28885b 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -61,7 +61,7 @@
   <!-- Status bar - icon blacklist -->
   <!-- Protected apps -->
   <!-- Contributors cloud activity -->
-  <!-- Anonymous Statistics #CM -->
+  <!-- Anonymous Statistics #Lineage -->
   <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
   <!-- Anonymous Statistics - Preview -->
   <!-- Display : Rotation  -->
diff --git a/res/values/config.xml b/res/values/config.xml
index 2980816..d49bab4 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -18,13 +18,13 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
 
     <!-- Metrics server endpoint -->
-    <string name="stats_cm_url">https://stats.lineageos.org/api/v1/stats</string>
+    <string name="stats_lineage_url">https://stats.lineageos.org/api/v1/stats</string>
 
     <!-- When true, weather options will be displayed in settings dashboard -->
     <bool name="config_showWeatherMenu">true</bool>
 
     <!-- Default action ids for a device's touchscreen gestures
          The array should be sorted in the same order as the
-         touchscreen gestures advertised by the device's CMHW impl. -->
+         touchscreen gestures advertised by the device's LineageHW impl. -->
     <integer-array name="config_defaultTouchscreenGestureActions" />
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 21b8b78..d225a97 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -17,7 +17,7 @@
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
 
-    <string name="cmparts_title">LineageOS Settings</string>
+    <string name="lineageparts_title">LineageOS Settings</string>
 
     <!-- Generic stuff used everywhere -->
     <string name="loading">Loading\u2026</string>
@@ -513,7 +513,7 @@
                  <b>Total commits:</b> <xliff:g id="total_commits">%2$s</xliff:g><br/><br/>
                  <b>Last update:</b> <xliff:g id="date">%3$s</xliff:g>]]></string>
 
-    <!-- Anonymous Statistics #CM -->
+    <!-- Anonymous Statistics #Lineage -->
     <!-- About device screen, list item title. Takes the user to the screen about opting in or out of anonymous statistics. -->
     <string name="anonymous_statistics_title">LineageOS statistics</string>
     <string name="anonymous_statistics_summary">Help make LineageOS better by opting into anonymous statistics reporting</string>
diff --git a/res/xml/anonymous_stats.xml b/res/xml/anonymous_stats.xml
index b29885c..178e14c 100644
--- a/res/xml/anonymous_stats.xml
+++ b/res/xml/anonymous_stats.xml
@@ -16,10 +16,10 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:key="cmstats"
+    android:key="lineagestats"
     android:title="@string/anonymous_statistics_title">
 
-    <cyanogenmod.preference.CMSecureSettingSwitchPreference
+    <lineageos.preference.LineageSecureSettingSwitchPreference
             android:key="stats_collection"
             android:title="@string/stats_collection_title"
             android:summary="@string/stats_collection_summary"
@@ -27,6 +27,6 @@
 
     <PreferenceScreen
         android:title="@string/preview_data_title"
-        android:fragment="org.cyanogenmod.cmparts.cmstats.PreviewData" />
+        android:fragment="org.lineageos.lineageparts.lineagestats.PreviewData" />
 
 </PreferenceScreen>
diff --git a/res/xml/battery_light_settings.xml b/res/xml/battery_light_settings.xml
index 454ab1a..5659612 100644
--- a/res/xml/battery_light_settings.xml
+++ b/res/xml/battery_light_settings.xml
@@ -22,12 +22,12 @@
         android:key="general_section"
         android:title="@string/notification_light_general_title">
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="battery_light_enabled"
             android:title="@string/battery_light_title"
             android:defaultValue="@bool/def_battery_light_enabled" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="battery_light_pulse"
             android:title="@string/battery_low_pulse_title"
             android:defaultValue="@bool/def_battery_light_pulse"
@@ -40,17 +40,17 @@
         android:title="@string/battery_light_list_title"
         android:dependency="battery_light_enabled" >
 
-        <org.cyanogenmod.cmparts.notificationlight.ApplicationLightPreference
+        <org.lineageos.lineageparts.notificationlight.ApplicationLightPreference
             android:key="low_color"
             android:title="@string/battery_light_low_color_title"
             android:persistent="false" />
 
-        <org.cyanogenmod.cmparts.notificationlight.ApplicationLightPreference
+        <org.lineageos.lineageparts.notificationlight.ApplicationLightPreference
             android:key="medium_color"
             android:title="@string/battery_light_medium_color_title"
             android:persistent="false" />
 
-        <org.cyanogenmod.cmparts.notificationlight.ApplicationLightPreference
+        <org.lineageos.lineageparts.notificationlight.ApplicationLightPreference
             android:key="full_color"
             android:title="@string/battery_light_full_color_title"
             android:persistent="false" />
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index 9b71607..f7f19cc 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -15,7 +15,7 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:cm="http://schemas.android.com/apk/res/cyanogenmod.platform"
+        xmlns:lineage="http://schemas.android.com/apk/res/lineageos.platform"
         android:key="button_settings"
         android:title="@string/button_pref_title">
 
@@ -25,7 +25,7 @@
         android:summary="@string/disable_navkeys_summary"
         android:defaultValue="false" />
 
-    <org.cyanogenmod.cmparts.input.ButtonBacklightBrightness
+    <org.lineageos.lineageparts.input.ButtonBacklightBrightness
         android:key="button_backlight"
         android:title="@string/button_backlight_title"
         android:dialogTitle="@string/button_backlight_title"
@@ -35,13 +35,13 @@
         android:key="navigation_bar_category"
         android:title="@string/navigation_bar_category" >
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="navigation_bar_left"
             android:title="@string/navigation_bar_left_title"
             android:summary="@string/navigation_bar_left_summary"
             android:defaultValue="false" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
                 android:key="navigation_bar_menu_arrow_keys"
                 android:title="@string/navigation_bar_arrow_keys_title"
                 android:summary="@string/navigation_bar_arrow_keys_summary"
@@ -84,7 +84,7 @@
         <PreferenceScreen
             android:key="power_menu"
             android:title="@string/power_menu_title"
-            android:fragment="org.cyanogenmod.cmparts.input.PowerMenuActions" />
+            android:fragment="org.lineageos.lineageparts.input.PowerMenuActions" />
 
         <SwitchPreference
             android:key="power_end_call"
@@ -92,12 +92,12 @@
             android:summary="@string/power_end_call_summary"
             android:persistent="false"/>
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="torch_long_press_power_gesture"
             android:title="@string/torch_long_press_power_gesture_title"
             android:summary="@string/torch_long_press_power_gesture_desc"
             android:defaultValue="false"
-            cm:requiresConfig="@*android:bool/config_supportLongPressPowerWhenNonInteractive" />
+            lineage:requiresConfig="@*android:bool/config_supportLongPressPowerWhenNonInteractive" />
 
         <ListPreference
             android:key="torch_long_press_power_timeout"
@@ -114,7 +114,7 @@
         android:key="home_key"
         android:title="@string/hardware_keys_home_key_title" >
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="home_wake_screen"
             android:title="@string/button_wake_title"
             android:defaultValue="true" />
@@ -147,7 +147,7 @@
         android:key="back_key"
         android:title="@string/hardware_keys_back_key_title" >
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="back_wake_screen"
             android:title="@string/button_wake_title"
             android:defaultValue="false" />
@@ -158,7 +158,7 @@
         android:key="menu_key"
         android:title="@string/hardware_keys_menu_key_title" >
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="menu_wake_screen"
             android:title="@string/button_wake_title"
             android:defaultValue="false" />
@@ -185,7 +185,7 @@
         android:key="assist_key"
         android:title="@string/hardware_keys_assist_key_title" >
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="assist_wake_screen"
             android:title="@string/button_wake_title"
             android:defaultValue="false" />
@@ -212,7 +212,7 @@
         android:key="app_switch_key"
         android:title="@string/hardware_keys_appswitch_key_title" >
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="app_switch_wake_screen"
             android:title="@string/button_wake_title"
             android:defaultValue="false" />
@@ -239,18 +239,18 @@
         android:key="camera_key"
         android:title="@string/hardware_keys_camera_key_title">
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="camera_wake_screen"
             android:title="@string/button_wake_title"
             android:defaultValue="false" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="camera_sleep_on_release"
             android:title="@string/camera_sleep_on_release_title"
             android:summary="@string/camera_sleep_on_release_summary"
             android:defaultValue="false" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="camera_launch"
             android:title="@string/camera_launch_title"
             android:summary="@string/camera_launch_summary"
@@ -262,24 +262,24 @@
         android:key="volume_keys"
         android:title="@string/hardware_keys_volume_keys_title" >
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="volume_wake_screen"
             android:title="@string/button_wake_title"
             android:defaultValue="false" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="volume_answer_call"
             android:title="@string/volume_answer_call_title"
             android:summary="@string/volume_answer_call_summary"
             android:defaultValue="false" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="volbtn_music_controls"
             android:title="@string/volbtn_music_controls_title"
             android:summary="@string/volbtn_music_controls_summary"
             android:defaultValue="true" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="volume_keys_control_ring_stream"
             android:title="@string/volume_keys_control_ring_stream_title"
             android:summaryOn="@string/volume_keys_control_ring_stream_summary_on"
diff --git a/res/xml/charging_sounds_settings.xml b/res/xml/charging_sounds_settings.xml
index a295c5a..97de01b 100644
--- a/res/xml/charging_sounds_settings.xml
+++ b/res/xml/charging_sounds_settings.xml
@@ -20,12 +20,12 @@
     android:key="charging_sounds_settings"
     android:title="@string/charging_sounds_settings_title">
 
-    <cyanogenmod.preference.GlobalSettingSwitchPreference
+    <lineageos.preference.GlobalSettingSwitchPreference
         android:key="charging_sounds_enabled"
         android:title="@string/charging_sounds_enabled_title"
         android:summary="@string/charging_sounds_enabled_summary" />
 
-    <cyanogenmod.preference.CMGlobalSettingSwitchPreference
+    <lineageos.preference.LineageGlobalSettingSwitchPreference
         android:key="power_notifications_vibrate"
         android:title="@string/power_notifications_vibrate_title"
         android:dependency="charging_sounds_enabled" />
diff --git a/res/xml/display_rotation.xml b/res/xml/display_rotation.xml
index e470604..c7106e7 100644
--- a/res/xml/display_rotation.xml
+++ b/res/xml/display_rotation.xml
@@ -16,7 +16,7 @@
 
 <PreferenceScreen
         xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:cm="http://schemas.android.com/apk/res/cyanogenmod.platform"
+        xmlns:lineage="http://schemas.android.com/apk/res/lineageos.platform"
         android:key="rotation"
         android:title="@string/display_rotation_title">
 
@@ -24,12 +24,12 @@
         android:key="accelerometer"
         android:title="@string/accelerometer_title" />
 
-    <cyanogenmod.preference.CMSystemSettingSwitchPreference
+    <lineageos.preference.LineageSystemSettingSwitchPreference
         android:key="lockscreen_rotation"
         android:title="@string/display_lockscreen_rotation_title"
         android:dependency="accelerometer"
         android:defaultValue="false"
-        cm:requiresConfig="@*android:bool/config_enableLockScreenRotation" />
+        lineage:requiresConfig="@*android:bool/config_enableLockScreenRotation" />
 
     <PreferenceCategory
         android:key="display_rotation_category"
diff --git a/res/xml/expanded_desktop_prefs.xml b/res/xml/expanded_desktop_prefs.xml
index 145bf57..a53024c 100644
--- a/res/xml/expanded_desktop_prefs.xml
+++ b/res/xml/expanded_desktop_prefs.xml
@@ -16,7 +16,7 @@
 -->
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:cm="http://schemas.android.com/apk/res/org.cyanogenmod.cmparts"
+    xmlns:lineage="http://schemas.android.com/apk/res/org.lineageos.lineageparts"
     android:key="expanded_desktop_settings"
     android:title="@string/expanded_desktop_settings_title">
 
@@ -32,8 +32,8 @@
 
     </PreferenceCategory>
 
-    <org.cyanogenmod.cmparts.widget.WallOfTextPreference
+    <org.lineageos.lineageparts.widget.WallOfTextPreference
         android:summary="@string/expanded_desktop_nothing_to_show_text"
         android:selectable="false"
-        cm:allowDividerAbove="true" />
+        lineage:allowDividerAbove="true" />
 </PreferenceScreen>
diff --git a/res/xml/livedisplay.xml b/res/xml/livedisplay.xml
index 443e17a..f1d0414 100644
--- a/res/xml/livedisplay.xml
+++ b/res/xml/livedisplay.xml
@@ -16,11 +16,11 @@
 -->
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
         android:key="livedisplay"
-        android:title="@*cyanogenmod.platform:string/live_display_title">
+        android:title="@*lineageos.platform:string/live_display_title">
 
     <PreferenceCategory
         android:key="live_display_options"
-        android:title="@*cyanogenmod.platform:string/live_display_title">
+        android:title="@*lineageos.platform:string/live_display_title">
 
         <!-- Color profile -->
         <ListPreference
@@ -34,18 +34,18 @@
                 android:persistent="false" />
 
         <!-- Manual temperature selection -->
-        <org.cyanogenmod.cmparts.livedisplay.DisplayTemperature
+        <org.lineageos.lineageparts.livedisplay.DisplayTemperature
                 android:key="live_display_color_temperature"
                 android:title="@string/live_display_color_temperature_title"
-                android:dialogTitle="@*cyanogenmod.platform:string/live_display_title"
+                android:dialogTitle="@*lineageos.platform:string/live_display_title"
                 android:persistent="false" />
 
         <!-- Outdoor mode / SRE -->
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
                 android:key="display_auto_outdoor_mode"
                 android:title="@string/live_display_outdoor_mode_title"
                 android:summary="@string/live_display_outdoor_mode_summary"
-                android:defaultValue="@*cyanogenmod.platform:bool/config_defaultAutoOutdoorMode" />
+                android:defaultValue="@*lineageos.platform:bool/config_defaultAutoOutdoorMode" />
 
     </PreferenceCategory>
 
@@ -54,7 +54,7 @@
             android:title="@string/advanced">
 
         <!-- RGB display color adjustments -->
-        <org.cyanogenmod.cmparts.livedisplay.DisplayColor
+        <org.lineageos.lineageparts.livedisplay.DisplayColor
                 android:key="color_calibration"
                 android:title="@string/color_calibration_title"
                 android:dialogTitle="@string/color_calibration_title"
@@ -62,7 +62,7 @@
                 android:persistent="false"/>
 
         <!-- HSIC display color adjustments -->
-        <org.cyanogenmod.cmparts.livedisplay.PictureAdjustment
+        <org.lineageos.lineageparts.livedisplay.PictureAdjustment
                 android:key="picture_adjustment"
                 android:title="@string/picture_adjustment_title"
                 android:dialogTitle="@string/picture_adjustment_title"
@@ -70,18 +70,18 @@
                 android:persistent="false"/>
 
         <!-- Adaptive backlight -->
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
                 android:key="display_low_power"
                 android:title="@string/live_display_low_power_title"
                 android:summary="@string/live_display_low_power_summary"
-                android:defaultValue="@*cyanogenmod.platform:bool/config_defaultCABC" />
+                android:defaultValue="@*lineageos.platform:bool/config_defaultCABC" />
 
         <!-- Color enhancement -->
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
                 android:key="display_color_enhance"
                 android:title="@string/live_display_enhance_color_title"
                 android:summary="@string/live_display_enhance_color_summary"
-                android:defaultValue="@*cyanogenmod.platform:bool/config_defaultColorEnhancement" />
+                android:defaultValue="@*lineageos.platform:bool/config_defaultColorEnhancement" />
 
     </PreferenceCategory>
 
diff --git a/res/xml/notification_light_settings.xml b/res/xml/notification_light_settings.xml
index b9e0ce1..0a75de3 100644
--- a/res/xml/notification_light_settings.xml
+++ b/res/xml/notification_light_settings.xml
@@ -22,17 +22,17 @@
         android:key="general_section"
         android:title="@string/notification_light_general_title">
 
-        <cyanogenmod.preference.SystemSettingSwitchPreference
+        <lineageos.preference.SystemSettingSwitchPreference
             android:key="notification_light_pulse"
             android:title="@string/notification_light_title" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="notification_light_color_auto"
             android:title="@string/notification_light_automagic"
             android:dependency="notification_light_pulse"
             android:defaultValue="true" />
 
-        <org.cyanogenmod.cmparts.notificationlight.ApplicationLightPreference
+        <org.lineageos.lineageparts.notificationlight.ApplicationLightPreference
             android:key="default"
             android:title="@string/notification_light_default_value"
             android:persistent="false"
@@ -51,23 +51,23 @@
             <intent android:action="android.intent.action.SHOW_NOTIFICATION_BRIGHTNESS_DIALOG" />
         </PreferenceScreen>
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="notification_light_multiple_leds_enable"
             android:title="@string/notification_light_use_multiple_leds"
             android:dependency="notification_light_pulse" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="notification_light_screen_on_enable"
             android:title="@string/notification_light_screen_on"
             android:dependency="notification_light_pulse" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="allow_lights"
             android:title="@string/notification_light_zen_mode"
             android:dependency="notification_light_pulse"
             android:defaultValue="true" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="notification_light_pulse_custom_enable"
             android:title="@string/notification_light_use_custom"
             android:dependency="notification_light_pulse" />
@@ -78,13 +78,13 @@
         android:key="phone_list"
         android:title="@string/notification_light_phonelist_title" >
 
-        <org.cyanogenmod.cmparts.notificationlight.ApplicationLightPreference
+        <org.lineageos.lineageparts.notificationlight.ApplicationLightPreference
             android:key="missed_call"
             android:title="@string/notification_light_missed_call_title"
             android:persistent="false"
             android:dependency="notification_light_pulse_custom_enable" />
 
-        <org.cyanogenmod.cmparts.notificationlight.ApplicationLightPreference
+        <org.lineageos.lineageparts.notificationlight.ApplicationLightPreference
             android:key="voicemail"
             android:title="@string/notification_light_voicemail_title"
             android:persistent="false"
diff --git a/res/xml/parts_catalog.xml b/res/xml/parts_catalog.xml
index 71328eb..f6f4e09 100644
--- a/res/xml/parts_catalog.xml
+++ b/res/xml/parts_catalog.xml
@@ -18,102 +18,102 @@
 
 <!--
      The parts catalog is used to locate items (usually a PreferenceScreen) inside
-     of CMParts. This can be used by CMPartsPreference to create a simple, two-line
+     of LineageParts. This can be used by LineagePartsPreference to create a simple, two-line
      entry point from Settings or another application. All entries should specify
-     a fragment, which is a SettingsPreferenceFragment subclass inside CMParts.
+     a fragment, which is a SettingsPreferenceFragment subclass inside LineageParts.
 
      Metadata for the search index provider should be provided for all parts. This
-     can be supplied an XML resource in the "cm:xmlRes" attribute or by implementing
+     can be supplied an XML resource in the "lineage:xmlRes" attribute or by implementing
      the Searchable interface.
 -->
 <parts-catalog xmlns:android="http://schemas.android.com/apk/res/android"
-               xmlns:cm="http://schemas.android.com/apk/res/cyanogenmod.platform">
+               xmlns:lineage="http://schemas.android.com/apk/res/lineageos.platform">
 
     <part android:key="battery_lights"
           android:title="@string/battery_light_title"
-          android:fragment="org.cyanogenmod.cmparts.notificationlight.BatteryLightSettings"
-          cm:xmlRes="@xml/battery_light_settings" />
+          android:fragment="org.lineageos.lineageparts.notificationlight.BatteryLightSettings"
+          lineage:xmlRes="@xml/battery_light_settings" />
 
     <part android:key="button_settings"
           android:title="@string/button_pref_title"
-          android:fragment="org.cyanogenmod.cmparts.input.ButtonSettings"
-          cm:xmlRes="@xml/button_settings" />
+          android:fragment="org.lineageos.lineageparts.input.ButtonSettings"
+          lineage:xmlRes="@xml/button_settings" />
 
     <part android:key="contributors"
           android:title="@string/contributors_cloud_fragment_title"
-          android:fragment="org.cyanogenmod.cmparts.contributors.ContributorsCloudFragment" />
+          android:fragment="org.lineageos.lineageparts.contributors.ContributorsCloudFragment" />
 
     <part android:key="livedisplay"
-          android:title="@*cyanogenmod.platform:string/live_display_title"
+          android:title="@*lineageos.platform:string/live_display_title"
           android:summary="@string/live_display_summary"
-          android:fragment="org.cyanogenmod.cmparts.livedisplay.LiveDisplay"
-          cm:xmlRes="@xml/livedisplay" />
+          android:fragment="org.lineageos.lineageparts.livedisplay.LiveDisplay"
+          lineage:xmlRes="@xml/livedisplay" />
 
     <part android:key="notification_lights"
           android:title="@string/notification_light_title"
-          android:fragment="org.cyanogenmod.cmparts.notificationlight.NotificationLightSettings"
-          cm:xmlRes="@xml/notification_light_settings" />
+          android:fragment="org.lineageos.lineageparts.notificationlight.NotificationLightSettings"
+          lineage:xmlRes="@xml/notification_light_settings" />
 
     <part android:key="privacy_settings"
           android:title="@string/privacy_settings_title"
-          android:fragment="org.cyanogenmod.cmparts.PrivacySettings"
-          cm:xmlRes="@xml/privacy_settings" />
+          android:fragment="org.lineageos.lineageparts.PrivacySettings"
+          lineage:xmlRes="@xml/privacy_settings" />
 
     <part android:key="profiles_settings"
           android:title="@string/profiles_settings_title"
-          android:fragment="org.cyanogenmod.cmparts.profiles.ProfilesSettings"
-          cm:xmlRes="@xml/profiles_settings" />
+          android:fragment="org.lineageos.lineageparts.profiles.ProfilesSettings"
+          lineage:xmlRes="@xml/profiles_settings" />
 
     <part android:key="rotation"
           android:title="@string/display_rotation_title"
-          android:fragment="org.cyanogenmod.cmparts.hardware.DisplayRotation"
-          cm:xmlRes="@xml/display_rotation" />
+          android:fragment="org.lineageos.lineageparts.hardware.DisplayRotation"
+          lineage:xmlRes="@xml/display_rotation" />
 
     <part android:key="status_bar_settings"
           android:title="@string/status_bar_title"
-          android:fragment="org.cyanogenmod.cmparts.statusbar.StatusBarSettings"
-          cm:xmlRes="@xml/status_bar_settings" />
+          android:fragment="org.lineageos.lineageparts.statusbar.StatusBarSettings"
+          lineage:xmlRes="@xml/status_bar_settings" />
 
-    <part android:key="cmstats"
+    <part android:key="lineagestats"
           android:title="@string/anonymous_statistics_title"
-          android:fragment="org.cyanogenmod.cmparts.cmstats.AnonymousStats"
-          cm:xmlRes="@xml/anonymous_stats" />
+          android:fragment="org.lineageos.lineageparts.lineagestats.AnonymousStats"
+          lineage:xmlRes="@xml/anonymous_stats" />
 
     <part android:key="power_menu"
           android:title="@string/power_menu_title"
-          android:fragment="org.cyanogenmod.cmparts.input.PowerMenuActions"
-          cm:xmlRes="@xml/power_menu_settings" />
+          android:fragment="org.lineageos.lineageparts.input.PowerMenuActions"
+          lineage:xmlRes="@xml/power_menu_settings" />
 
     <part android:key="privacy_guard_manager"
-          android:title="@*cyanogenmod.platform:string/privacy_guard_manager_title"
-          android:fragment="org.cyanogenmod.cmparts.privacyguard.PrivacyGuardManager"
-          cm:xmlRes="@xml/privacy_guard_prefs" />
+          android:title="@*lineageos.platform:string/privacy_guard_manager_title"
+          android:fragment="org.lineageos.lineageparts.privacyguard.PrivacyGuardManager"
+          lineage:xmlRes="@xml/privacy_guard_prefs" />
 
     <part android:key="weather_settings"
           android:title="@string/weather_settings_title"
-          android:fragment="org.cyanogenmod.cmparts.weather.WeatherServiceSettings"
-          cm:xmlRes="@xml/weather_settings" />
+          android:fragment="org.lineageos.lineageparts.weather.WeatherServiceSettings"
+          lineage:xmlRes="@xml/weather_settings" />
 
     <part android:key="perf_profile_settings"
           android:title="@string/perf_profile_settings_title"
           android:summary="@string/perf_profile_settings_summary"
-          android:fragment="org.cyanogenmod.cmparts.power.PerfProfileSettings"
-          cm:xmlRes="@xml/perf_profile_settings" />
+          android:fragment="org.lineageos.lineageparts.power.PerfProfileSettings"
+          lineage:xmlRes="@xml/perf_profile_settings" />
 
     <part android:key="expanded_desktop_settings"
           android:title="@string/expanded_desktop_settings_title"
           android:summary="@string/expanded_desktop_settings_summary"
-          android:fragment="org.cyanogenmod.cmparts.applications.ExpandedDesktopSettings"
-          cm:xmlRes="@xml/expanded_desktop_prefs" />
+          android:fragment="org.lineageos.lineageparts.applications.ExpandedDesktopSettings"
+          lineage:xmlRes="@xml/expanded_desktop_prefs" />
 
     <part android:key="charging_sounds_settings"
           android:title="@string/charging_sounds_settings_title"
-          android:fragment="org.cyanogenmod.cmparts.sounds.ChargingSoundsSettings"
-          cm:xmlRes="@xml/charging_sounds_settings" />
+          android:fragment="org.lineageos.lineageparts.sounds.ChargingSoundsSettings"
+          lineage:xmlRes="@xml/charging_sounds_settings" />
 
     <part android:key="touchscreen_gesture_settings"
           android:title="@string/touchscreen_gesture_settings_title"
           android:summary="@string/touchscreen_gesture_settings_summary"
-          android:fragment="org.cyanogenmod.cmparts.gestures.TouchscreenGestureSettings"
-          cm:xmlRes="@xml/touchscreen_gesture_settings" />
+          android:fragment="org.lineageos.lineageparts.gestures.TouchscreenGestureSettings"
+          lineage:xmlRes="@xml/touchscreen_gesture_settings" />
 </parts-catalog>
diff --git a/res/xml/perf_profile_settings.xml b/res/xml/perf_profile_settings.xml
index 3585cb7..b0de93c 100644
--- a/res/xml/perf_profile_settings.xml
+++ b/res/xml/perf_profile_settings.xml
@@ -40,7 +40,7 @@
         android:key="perf_profile_category"
         android:title="@string/perf_profile_category_title">
 
-        <org.cyanogenmod.cmparts.widget.SeekBarPreference
+        <org.lineageos.lineageparts.widget.SeekBarPreference
             android:key="perf_seekbar"
             android:title="@string/perf_profile_title"
             android:max="4"
@@ -48,7 +48,7 @@
             android:persistent="false"
             android:layout="@layout/preference_slider" />
 
-        <cyanogenmod.preference.CMSecureSettingSwitchPreference
+        <lineageos.preference.LineageSecureSettingSwitchPreference
             android:key="app_perf_profiles_enabled"
             android:title="@string/app_perf_profiles_title"
             android:summary="@string/app_perf_profiles_summary"
diff --git a/res/xml/privacy_guard_prefs.xml b/res/xml/privacy_guard_prefs.xml
index 5409d29..6ad9780 100644
--- a/res/xml/privacy_guard_prefs.xml
+++ b/res/xml/privacy_guard_prefs.xml
@@ -17,15 +17,15 @@
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:key="privacy_guard_manager"
-    android:title="@*cyanogenmod.platform:string/privacy_guard_manager_title">
+    android:title="@*lineageos.platform:string/privacy_guard_manager_title">
 
-    <cyanogenmod.preference.CMSecureSettingSwitchPreference
+    <lineageos.preference.LineageSecureSettingSwitchPreference
         android:key="privacy_guard_default"
         android:title="@string/privacy_guard_default_title"
         android:summary="@string/privacy_guard_default_summary"
         android:defaultValue="false" />
 
-    <cyanogenmod.preference.CMSecureSettingSwitchPreference
+    <lineageos.preference.LineageSecureSettingSwitchPreference
         android:key="privacy_guard_notification"
         android:title="@string/privacy_guard_notification_title"
         android:defaultValue="true" />
diff --git a/res/xml/privacy_settings.xml b/res/xml/privacy_settings.xml
index 5ae923a..c3fb516 100644
--- a/res/xml/privacy_settings.xml
+++ b/res/xml/privacy_settings.xml
@@ -22,9 +22,9 @@
     <!-- Privacy Guard -->
     <PreferenceScreen
         android:key="privacy_guard_manager"
-        android:title="@*cyanogenmod.platform:string/privacy_guard_manager_title"
+        android:title="@*lineageos.platform:string/privacy_guard_manager_title"
         android:summary="@string/privacy_guard_manager_summary"
-        android:fragment="org.cyanogenmod.cmparts.privacyguard.PrivacyGuardManager" />
+        android:fragment="org.lineageos.lineageparts.privacyguard.PrivacyGuardManager" />
 
     <!-- Protected apps -->
     <Preference
@@ -36,12 +36,12 @@
             android:targetClass="com.android.settings.applications.ProtectedAppsActivity" />
     </Preference>
 
-    <!-- Anonymous statistics - (CMStats) -->
+    <!-- Anonymous statistics - (LineageStats) -->
     <PreferenceScreen
-        android:key="cmstats"
+        android:key="lineagestats"
         android:title="@string/anonymous_statistics_title"
         android:summary="@string/anonymous_statistics_summary"
-        android:fragment="org.cyanogenmod.cmparts.cmstats.AnonymousStats" >
+        android:fragment="org.lineageos.lineageparts.lineagestats.AnonymousStats" >
     </PreferenceScreen>
 
 </PreferenceScreen>
diff --git a/res/xml/profile_settings.xml b/res/xml/profile_settings.xml
index 186e357..df63763 100644
--- a/res/xml/profile_settings.xml
+++ b/res/xml/profile_settings.xml
@@ -27,7 +27,7 @@
             android:persistent="false"
             android:entryValues="@array/profile_values" />
 
-    <org.cyanogenmod.cmparts.profiles.ProfileRingtonePreference
+    <org.lineageos.lineageparts.profiles.ProfileRingtonePreference
             android:key="soundtone"
             android:title="@string/soundtone_title"
             android:summary="@string/soundtone_summary"
@@ -43,7 +43,7 @@
             android:persistent="false"
             android:entryValues="@array/profile_values" />
 
-    <org.cyanogenmod.cmparts.profiles.ProfileRingtonePreference
+    <org.lineageos.lineageparts.profiles.ProfileRingtonePreference
             android:key="ringtone"
             android:title="@string/ringtone_title"
             android:summary="@string/ringtone_summary"
diff --git a/res/xml/status_bar_settings.xml b/res/xml/status_bar_settings.xml
index e10362b..a85bf8a 100644
--- a/res/xml/status_bar_settings.xml
+++ b/res/xml/status_bar_settings.xml
@@ -16,11 +16,11 @@
 -->
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:lineage="http://schemas.android.com/apk/res/cyanogenmod.platform"
+    xmlns:lineage="http://schemas.android.com/apk/res/lineageos.platform"
     android:key="status_bar_settings"
     android:title="@string/status_bar_title">
 
-    <cyanogenmod.preference.CMSystemSettingListPreference
+    <lineageos.preference.LineageSystemSettingListPreference
         android:key="qs_quick_pulldown"
         android:title="@string/status_bar_quick_qs_pulldown_title"
         android:entries="@array/status_bar_quick_qs_pulldown_entries"
@@ -30,7 +30,7 @@
     <PreferenceCategory
         android:title="@string/status_bar_icons_title">
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="status_bar_notif_count"
             android:title="@string/status_bar_notif_count_title"
             android:summary="@string/status_bar_notif_count_summary"
@@ -48,7 +48,7 @@
     <PreferenceCategory
         android:title="@string/status_bar_clock_title">
 
-        <cyanogenmod.preference.CMSystemSettingListPreference
+        <lineageos.preference.LineageSystemSettingListPreference
             android:key="status_bar_clock"
             android:title="@string/status_bar_clock_position_title"
             android:summary="%s"
@@ -57,7 +57,7 @@
             android:entryValues="@array/status_bar_clock_position_values"
             android:defaultValue="0" />
 
-        <cyanogenmod.preference.CMSystemSettingListPreference
+        <lineageos.preference.LineageSystemSettingListPreference
             android:key="status_bar_am_pm"
             android:title="@string/status_bar_am_pm_title"
             android:summary="%s"
@@ -71,7 +71,7 @@
     <PreferenceCategory
         android:title="@string/status_bar_battery_title">
 
-        <cyanogenmod.preference.CMSystemSettingListPreference
+        <lineageos.preference.LineageSystemSettingListPreference
             android:key="status_bar_battery_style"
             android:title="@string/status_bar_battery_style_title"
             android:summary="%s"
@@ -80,7 +80,7 @@
             android:entryValues="@array/status_bar_battery_style_values"
             android:defaultValue="2" />
 
-        <cyanogenmod.preference.CMSystemSettingListPreference
+        <lineageos.preference.LineageSystemSettingListPreference
             android:key="status_bar_show_battery_percent"
             android:title="@string/status_bar_battery_percentage_title"
             android:summary="%s"
@@ -94,13 +94,13 @@
     <PreferenceCategory
         android:title="@string/status_bar_brightness_category">
 
-        <cyanogenmod.preference.CMSecureSettingSwitchPreference
+        <lineageos.preference.LineageSecureSettingSwitchPreference
             android:key="qs_show_brightness_slider"
             android:title="@string/status_bar_brightness_slider_title"
             android:summary="@string/status_bar_brightness_slider_summary"
             android:defaultValue="true" />
 
-        <cyanogenmod.preference.CMSecureSettingSwitchPreference
+        <lineageos.preference.LineageSecureSettingSwitchPreference
             android:key="qs_show_auto_brightness"
             android:title="@string/status_bar_brightness_slider_auto_title"
             android:summary="@string/status_bar_brightness_slider_auto_summary"
@@ -108,7 +108,7 @@
             lineage:requiresConfig="@*android:bool/config_automatic_brightness_available"
             android:defaultValue="true" />
 
-        <cyanogenmod.preference.CMSystemSettingSwitchPreference
+        <lineageos.preference.LineageSystemSettingSwitchPreference
             android:key="status_bar_brightness_control"
             android:title="@string/status_bar_toggle_brightness"
             android:summary="@string/status_bar_toggle_brightness_summary"
diff --git a/res/xml/touchscreen_gesture_settings.xml b/res/xml/touchscreen_gesture_settings.xml
index fa231dc..5aa2f1e 100644
--- a/res/xml/touchscreen_gesture_settings.xml
+++ b/res/xml/touchscreen_gesture_settings.xml
@@ -20,7 +20,7 @@
     android:key="touchscreen_gesture_settings"
     android:title="@string/touchscreen_gesture_settings_title">
 
-    <cyanogenmod.preference.CMSystemSettingSwitchPreference
+    <lineageos.preference.LineageSystemSettingSwitchPreference
         android:key="touchscreen_gesture_haptic_feedback"
         android:title="@string/touchscreen_gestures_haptic_feedback_title"
         android:summary="@string/touchscreen_gestures_haptic_feedback_summary"
diff --git a/src/org/lineageos/lineageparts/BootReceiver.java b/src/org/lineageos/lineageparts/BootReceiver.java
index d9e8606..ff70dc0 100644
--- a/src/org/lineageos/lineageparts/BootReceiver.java
+++ b/src/org/lineageos/lineageparts/BootReceiver.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts;
+package org.lineageos.lineageparts;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -22,9 +22,9 @@
 import android.content.SharedPreferences;
 import android.support.v7.preference.PreferenceManager;
 
-import org.cyanogenmod.cmparts.contributors.ContributorsCloudFragment;
-import org.cyanogenmod.cmparts.gestures.TouchscreenGestureSettings;
-import org.cyanogenmod.cmparts.input.ButtonSettings;
+import org.lineageos.lineageparts.contributors.ContributorsCloudFragment;
+import org.lineageos.lineageparts.gestures.TouchscreenGestureSettings;
+import org.lineageos.lineageparts.input.ButtonSettings;
 
 public class BootReceiver extends BroadcastReceiver {
 
diff --git a/src/org/lineageos/lineageparts/PartsActivity.java b/src/org/lineageos/lineageparts/PartsActivity.java
index 6c18898..0a8e441 100644
--- a/src/org/lineageos/lineageparts/PartsActivity.java
+++ b/src/org/lineageos/lineageparts/PartsActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts;
+package org.lineageos.lineageparts;
 
 import android.app.Fragment;
 import android.app.FragmentTransaction;
@@ -33,10 +33,10 @@
 
 import com.android.settingslib.drawer.SettingsDrawerActivity;
 
-import org.cyanogenmod.cmparts.profiles.NFCProfileTagCallback;
-import org.cyanogenmod.cmparts.widget.SwitchBar;
-import org.cyanogenmod.internal.cmparts.PartInfo;
-import org.cyanogenmod.internal.cmparts.PartsList;
+import org.lineageos.lineageparts.profiles.NFCProfileTagCallback;
+import org.lineageos.lineageparts.widget.SwitchBar;
+import org.lineageos.internal.lineageparts.PartInfo;
+import org.lineageos.internal.lineageparts.PartsList;
 
 public class PartsActivity extends SettingsDrawerActivity implements
         PreferenceFragment.OnPreferenceStartFragmentCallback,
@@ -62,7 +62,7 @@
     public void onCreate(Bundle bundle) {
         super.onCreate(bundle);
 
-        setContentView(R.layout.cmparts);
+        setContentView(R.layout.lineageparts);
 
         String action = getIntent().getAction();
         ComponentName cn = getIntent().getComponent();
@@ -186,7 +186,7 @@
         }
 
         Intent intent = new Intent();
-        intent.setComponent(PartsList.CMPARTS_ACTIVITY);
+        intent.setComponent(PartsList.LINEAGEPARTS_ACTIVITY);
         intent.putExtra(EXTRA_SHOW_FRAGMENT, fragmentClass);
         intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
         intent.putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, titleRes);
diff --git a/src/org/lineageos/lineageparts/PartsUpdater.java b/src/org/lineageos/lineageparts/PartsUpdater.java
index 8334c05..05c2350 100644
--- a/src/org/lineageos/lineageparts/PartsUpdater.java
+++ b/src/org/lineageos/lineageparts/PartsUpdater.java
@@ -13,30 +13,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts;
+package org.lineageos.lineageparts;
 
 import android.content.Context;
 import android.os.Bundle;
 import android.util.Log;
 
-import org.cyanogenmod.internal.cmparts.PartInfo;
-import org.cyanogenmod.internal.cmparts.PartsList;
+import org.lineageos.internal.lineageparts.PartInfo;
+import org.lineageos.internal.lineageparts.PartsList;
 
 import java.lang.reflect.Field;
 
-import cyanogenmod.preference.RemotePreferenceUpdater;
-import cyanogenmod.preference.SettingsHelper;
+import lineageos.preference.RemotePreferenceUpdater;
+import lineageos.preference.SettingsHelper;
 
-import static cyanogenmod.preference.RemotePreference.EXTRA_KEY;
-import static cyanogenmod.preference.RemotePreference.EXTRA_SUMMARY;
-import static org.cyanogenmod.internal.cmparts.PartsList.EXTRA_PART;
+import static lineageos.preference.RemotePreference.EXTRA_KEY;
+import static lineageos.preference.RemotePreference.EXTRA_SUMMARY;
+import static org.lineageos.internal.lineageparts.PartsList.EXTRA_PART;
 
 /**
  * PartsRefresher keeps remote UI clients up to date with any changes in the
  * state of the Part which should be reflected immediately. For preferences,
  * the clear use case is refreshing the summary.
  *
- * This works in conjunction with CMPartsPreference, which will send an
+ * This works in conjunction with LineagePartsPreference, which will send an
  * ordered broadcast requesting updated information. The part will be
  * looked up, and checked for a static SUMMARY_INFO field. If an
  * instance of SummaryInfo is found in this field, the result of the
diff --git a/src/org/lineageos/lineageparts/PrivacySettings.java b/src/org/lineageos/lineageparts/PrivacySettings.java
index f6be14b..7656801 100644
--- a/src/org/lineageos/lineageparts/PrivacySettings.java
+++ b/src/org/lineageos/lineageparts/PrivacySettings.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts;
+package org.lineageos.lineageparts;
 
 import android.content.Context;
 import android.os.Bundle;
 
-import cyanogenmod.providers.CMSettings;
+import lineageos.providers.LineageSettings;
 
 /**
  * Privacy settings
@@ -36,8 +36,8 @@
     public static final SummaryProvider SUMMARY_PROVIDER = new SummaryProvider() {
         @Override
         public String getSummary(Context context, String key) {
-            if (CMSettings.Secure.getInt(context.getContentResolver(),
-                    CMSettings.Secure.PRIVACY_GUARD_DEFAULT, 0) == 1) {
+            if (LineageSettings.Secure.getInt(context.getContentResolver(),
+                    LineageSettings.Secure.PRIVACY_GUARD_DEFAULT, 0) == 1) {
                 return context.getString(R.string.privacy_guard_default_summary_on);
             }
             return null;
diff --git a/src/org/lineageos/lineageparts/SettingsPreferenceFragment.java b/src/org/lineageos/lineageparts/SettingsPreferenceFragment.java
index 35c6515..0946f68 100644
--- a/src/org/lineageos/lineageparts/SettingsPreferenceFragment.java
+++ b/src/org/lineageos/lineageparts/SettingsPreferenceFragment.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts;
+package org.lineageos.lineageparts;
 
 import android.app.Activity;
 import android.app.Dialog;
@@ -45,15 +45,15 @@
 import android.widget.Button;
 import android.view.animation.*;
 
-import org.cyanogenmod.cmparts.widget.CustomDialogPreference;
-import org.cyanogenmod.cmparts.widget.DialogCreatable;
-import org.cyanogenmod.cmparts.widget.FloatingActionButton;
-import org.cyanogenmod.cmparts.widget.LayoutPreference;
+import org.lineageos.lineageparts.widget.CustomDialogPreference;
+import org.lineageos.lineageparts.widget.DialogCreatable;
+import org.lineageos.lineageparts.widget.FloatingActionButton;
+import org.lineageos.lineageparts.widget.LayoutPreference;
 
 import java.util.Arrays;
 import java.util.UUID;
 
-import cyanogenmod.preference.SettingsHelper;
+import lineageos.preference.SettingsHelper;
 
 /**
  * Base class for Settings fragments, with some helper functions and dialog management.
diff --git a/src/org/lineageos/lineageparts/applications/ExpandedDesktopPrefs.java b/src/org/lineageos/lineageparts/applications/ExpandedDesktopPrefs.java
index 151fc5c..f48c555 100644
--- a/src/org/lineageos/lineageparts/applications/ExpandedDesktopPrefs.java
+++ b/src/org/lineageos/lineageparts/applications/ExpandedDesktopPrefs.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.applications;
+package org.lineageos.lineageparts.applications;
 
 import android.net.Uri;
 import android.os.Bundle;
@@ -27,10 +27,10 @@
 import android.view.WindowManagerGlobal;
 import android.view.WindowManagerPolicyControl;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
-import cyanogenmod.preference.SettingsHelper;
+import lineageos.preference.SettingsHelper;
 
 public class ExpandedDesktopPrefs extends SettingsPreferenceFragment
         implements Preference.OnPreferenceChangeListener, SettingsHelper.OnSettingsChangeListener {
diff --git a/src/org/lineageos/lineageparts/applications/ExpandedDesktopSettings.java b/src/org/lineageos/lineageparts/applications/ExpandedDesktopSettings.java
index 5aa0008..7eddbcc 100644
--- a/src/org/lineageos/lineageparts/applications/ExpandedDesktopSettings.java
+++ b/src/org/lineageos/lineageparts/applications/ExpandedDesktopSettings.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.applications;
+package org.lineageos.lineageparts.applications;
 
 import android.annotation.Nullable;
 import android.app.Fragment;
@@ -45,10 +45,10 @@
 
 import com.android.settingslib.applications.ApplicationsState;
 
-import org.cyanogenmod.cmparts.PartsActivity;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
-import org.cyanogenmod.cmparts.widget.SwitchBar;
+import org.lineageos.lineageparts.PartsActivity;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.widget.SwitchBar;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/src/org/lineageos/lineageparts/contributors/ContributorsCloudFragment.java b/src/org/lineageos/lineageparts/contributors/ContributorsCloudFragment.java
index 4362b07..970b9a5 100644
--- a/src/org/lineageos/lineageparts/contributors/ContributorsCloudFragment.java
+++ b/src/org/lineageos/lineageparts/contributors/ContributorsCloudFragment.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.contributors;
+package org.lineageos.lineageparts.contributors;
 
 import android.animation.Animator;
 import android.animation.Animator.AnimatorListener;
@@ -57,11 +57,11 @@
 import android.widget.SearchView;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.PartsActivity;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.search.BaseSearchIndexProvider;
-import org.cyanogenmod.cmparts.search.SearchIndexableRaw;
-import org.cyanogenmod.cmparts.search.Searchable;
+import org.lineageos.lineageparts.PartsActivity;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.search.BaseSearchIndexProvider;
+import org.lineageos.lineageparts.search.SearchIndexableRaw;
+import org.lineageos.lineageparts.search.Searchable;
 
 import java.io.File;
 import java.io.FileOutputStream;
diff --git a/src/org/lineageos/lineageparts/contributors/ContributorsCloudViewController.java b/src/org/lineageos/lineageparts/contributors/ContributorsCloudViewController.java
index 2237164..b560ff3 100644
--- a/src/org/lineageos/lineageparts/contributors/ContributorsCloudViewController.java
+++ b/src/org/lineageos/lineageparts/contributors/ContributorsCloudViewController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  *******************************************************************************/
 
-package org.cyanogenmod.cmparts.contributors;
+package org.lineageos.lineageparts.contributors;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
diff --git a/src/org/lineageos/lineageparts/gestures/KeyHandler.java b/src/org/lineageos/lineageparts/gestures/KeyHandler.java
index 32b104e..5d7a14a 100644
--- a/src/org/lineageos/lineageparts/gestures/KeyHandler.java
+++ b/src/org/lineageos/lineageparts/gestures/KeyHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.gestures;
+package org.lineageos.lineageparts.gestures;
 
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
@@ -50,7 +50,7 @@
 
 import com.android.internal.os.DeviceKeyHandler;
 
-import cyanogenmod.providers.CMSettings;
+import lineageos.providers.LineageSettings;
 
 import java.util.List;
 
@@ -58,7 +58,7 @@
 
     private static final String TAG = KeyHandler.class.getSimpleName();
 
-    private static final String GESTURE_WAKEUP_REASON = "cmparts-gesture-wakeup";
+    private static final String GESTURE_WAKEUP_REASON = "lineageparts-gesture-wakeup";
     private static final int GESTURE_REQUEST = 0;
     private static final int GESTURE_WAKELOCK_DURATION = 3000;
     private static final int EVENT_PROCESS_WAKELOCK_DURATION = 500;
@@ -102,7 +102,7 @@
 
         mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
         mGestureWakeLock = mPowerManager.newWakeLock(
-                PowerManager.PARTIAL_WAKE_LOCK, "CMPartsGestureWakeLock");
+                PowerManager.PARTIAL_WAKE_LOCK, "LineagePartsGestureWakeLock");
 
         mEventHandler = new EventHandler();
 
@@ -113,18 +113,18 @@
 
         final Resources resources = mContext.getResources();
         mProximityWakeSupported = resources.getBoolean(
-                org.cyanogenmod.platform.internal.R.bool.config_proximityCheckOnWake);
+                org.lineageos.platform.internal.R.bool.config_proximityCheckOnWake);
 
         if (mProximityWakeSupported) {
             mProximityTimeOut = resources.getInteger(
-                    org.cyanogenmod.platform.internal.R.integer.config_proximityCheckTimeout);
+                    org.lineageos.platform.internal.R.integer.config_proximityCheckTimeout);
             mDefaultProximity = mContext.getResources().getBoolean(
-                    org.cyanogenmod.platform.internal.R.bool.config_proximityCheckOnWakeEnabledByDefault);
+                    org.lineageos.platform.internal.R.bool.config_proximityCheckOnWakeEnabledByDefault);
 
             mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
             mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
             mProximityWakeLock = mPowerManager.newWakeLock(
-                    PowerManager.PARTIAL_WAKE_LOCK, "CMPartsProximityWakeLock");
+                    PowerManager.PARTIAL_WAKE_LOCK, "LineagePartsProximityWakeLock");
         }
         mContext.registerReceiver(mUpdateReceiver,
                 new IntentFilter(TouchscreenGestureConstants.UPDATE_PREFS_ACTION));
@@ -152,8 +152,8 @@
 
         if (action != 0 && !mEventHandler.hasMessages(GESTURE_REQUEST)) {
             final Message msg = getMessageForAction(action);
-            final boolean proxWakeEnabled = CMSettings.System.getInt(mContext.getContentResolver(),
-                    CMSettings.System.PROXIMITY_ON_WAKE, mDefaultProximity ? 1 : 0) == 1;
+            final boolean proxWakeEnabled = LineageSettings.System.getInt(mContext.getContentResolver(),
+                    LineageSettings.System.PROXIMITY_ON_WAKE, mDefaultProximity ? 1 : 0) == 1;
             if (mProximityWakeSupported && proxWakeEnabled && mProximitySensor != null) {
                 mGestureWakeLock.acquire(2 * mProximityTimeOut);
                 mEventHandler.sendMessageDelayed(msg, mProximityTimeOut);
@@ -241,7 +241,7 @@
 
     private void launchCamera() {
         mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION);
-        final Intent intent = new Intent(cyanogenmod.content.Intent.ACTION_SCREEN_CAMERA_GESTURE);
+        final Intent intent = new Intent(lineageos.content.Intent.ACTION_SCREEN_CAMERA_GESTURE);
         mContext.sendBroadcastAsUser(intent, UserHandle.CURRENT,
                 Manifest.permission.STATUS_BAR_SERVICE);
         doHapticFeedback();
@@ -352,8 +352,8 @@
         final AudioManager audioManager = (AudioManager) mContext.getSystemService(
                 Context.AUDIO_SERVICE);
         if (audioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT) {
-            final boolean enabled = CMSettings.System.getInt(mContext.getContentResolver(),
-                    CMSettings.System.TOUCHSCREEN_GESTURE_HAPTIC_FEEDBACK, 1) != 0;
+            final boolean enabled = LineageSettings.System.getInt(mContext.getContentResolver(),
+                    LineageSettings.System.TOUCHSCREEN_GESTURE_HAPTIC_FEEDBACK, 1) != 0;
             if (enabled) {
                 mVibrator.vibrate(50);
             }
diff --git a/src/org/lineageos/lineageparts/gestures/TouchscreenGestureConstants.java b/src/org/lineageos/lineageparts/gestures/TouchscreenGestureConstants.java
index aae2834..8a295a5 100644
--- a/src/org/lineageos/lineageparts/gestures/TouchscreenGestureConstants.java
+++ b/src/org/lineageos/lineageparts/gestures/TouchscreenGestureConstants.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.gestures;
+package org.lineageos.lineageparts.gestures;
 
 class TouchscreenGestureConstants {
     // Broadcast action for settings update
-    static final String UPDATE_PREFS_ACTION = "org.cyanogenmod.cmparts.gestures.UPDATE_SETTINGS";
+    static final String UPDATE_PREFS_ACTION = "org.lineageos.lineageparts.gestures.UPDATE_SETTINGS";
     // Broadcast extra: keycode mapping (int[]: key = gesture ID, value = keycode)
     static final String UPDATE_EXTRA_KEYCODE_MAPPING = "keycode_mappings";
     // Broadcast extra: assigned actions (int[]: key = gesture ID, value = action)
diff --git a/src/org/lineageos/lineageparts/gestures/TouchscreenGestureSettings.java b/src/org/lineageos/lineageparts/gestures/TouchscreenGestureSettings.java
index 325df3f..1a3d2e8 100644
--- a/src/org/lineageos/lineageparts/gestures/TouchscreenGestureSettings.java
+++ b/src/org/lineageos/lineageparts/gestures/TouchscreenGestureSettings.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.gestures;
+package org.lineageos.lineageparts.gestures;
 
 import android.content.Context;
 import android.content.Intent;
@@ -25,12 +25,12 @@
 import android.support.v7.preference.ListPreference;
 import android.support.v7.preference.PreferenceManager;
 
-import cyanogenmod.hardware.CMHardwareManager;
-import cyanogenmod.hardware.TouchscreenGesture;
+import lineageos.hardware.LineageHardwareManager;
+import lineageos.hardware.TouchscreenGesture;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
-import org.cyanogenmod.cmparts.utils.ResourceUtils;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.utils.ResourceUtils;
 
 import java.lang.System;
 
@@ -52,7 +52,7 @@
     }
 
     private void initTouchscreenGestures() {
-        final CMHardwareManager manager = CMHardwareManager.getInstance(getContext());
+        final LineageHardwareManager manager = LineageHardwareManager.getInstance(getContext());
         mTouchscreenGestures = manager.getTouchscreenGestures();
         final int[] actions = getDefaultGestureActions(getContext(), mTouchscreenGestures);
         for (final TouchscreenGesture gesture : mTouchscreenGestures) {
@@ -87,7 +87,7 @@
         @Override
         public boolean callChangeListener(final Object newValue) {
             final int action = Integer.parseInt(String.valueOf(newValue));
-            final CMHardwareManager manager = CMHardwareManager.getInstance(mContext);
+            final LineageHardwareManager manager = LineageHardwareManager.getInstance(mContext);
             if (!manager.setTouchscreenGestureEnabled(mGesture, action > 0)) {
                 return false;
             }
@@ -137,7 +137,7 @@
             return;
         }
 
-        final CMHardwareManager manager = CMHardwareManager.getInstance(context);
+        final LineageHardwareManager manager = LineageHardwareManager.getInstance(context);
         final TouchscreenGesture[] gestures = manager.getTouchscreenGestures();
         final int[] actionList = buildActionList(context, gestures);
         for (final TouchscreenGesture gesture : gestures) {
@@ -148,8 +148,8 @@
     }
 
     private static boolean isTouchscreenGesturesSupported(final Context context) {
-        final CMHardwareManager manager = CMHardwareManager.getInstance(context);
-        return manager.isSupported(CMHardwareManager.FEATURE_TOUCHSCREEN_GESTURES);
+        final LineageHardwareManager manager = LineageHardwareManager.getInstance(context);
+        return manager.isSupported(LineageHardwareManager.FEATURE_TOUCHSCREEN_GESTURES);
     }
 
     private static int[] getDefaultGestureActions(final Context context,
diff --git a/src/org/lineageos/lineageparts/hardware/DisplayRotation.java b/src/org/lineageos/lineageparts/hardware/DisplayRotation.java
index 6b72a61..6fccdc8 100644
--- a/src/org/lineageos/lineageparts/hardware/DisplayRotation.java
+++ b/src/org/lineageos/lineageparts/hardware/DisplayRotation.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.hardware;
+package org.lineageos.lineageparts.hardware;
 
 import android.content.Context;
 import android.net.Uri;
@@ -27,8 +27,8 @@
 
 import com.android.internal.view.RotationPolicy;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 public class DisplayRotation extends SettingsPreferenceFragment {
     private static final String TAG = "DisplayRotation";
diff --git a/src/org/lineageos/lineageparts/input/BacklightTimeoutSeekBar.java b/src/org/lineageos/lineageparts/input/BacklightTimeoutSeekBar.java
index 4ffe17d..9b6b94d 100644
--- a/src/org/lineageos/lineageparts/input/BacklightTimeoutSeekBar.java
+++ b/src/org/lineageos/lineageparts/input/BacklightTimeoutSeekBar.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.input;
+package org.lineageos.lineageparts.input;
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
diff --git a/src/org/lineageos/lineageparts/input/ButtonBacklightBrightness.java b/src/org/lineageos/lineageparts/input/ButtonBacklightBrightness.java
index ca08b22..5ac52d6 100644
--- a/src/org/lineageos/lineageparts/input/ButtonBacklightBrightness.java
+++ b/src/org/lineageos/lineageparts/input/ButtonBacklightBrightness.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.input;
+package org.lineageos.lineageparts.input;
 
 import android.app.AlertDialog;
 import android.content.ContentResolver;
@@ -35,10 +35,10 @@
 import android.widget.SeekBar;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.widget.CustomDialogPreference;
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.widget.CustomDialogPreference;
+import org.lineageos.lineageparts.R;
 
-import cyanogenmod.providers.CMSettings;
+import lineageos.providers.LineageSettings;
 
 public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialog> implements
         SeekBar.OnSeekBarChangeListener {
@@ -67,7 +67,7 @@
 
         if (isKeyboardSupported()) {
             mKeyboardBrightness = new BrightnessControl(
-                    CMSettings.Secure.KEYBOARD_BRIGHTNESS, false);
+                    LineageSettings.Secure.KEYBOARD_BRIGHTNESS, false);
             mActiveControl = mKeyboardBrightness;
         }
         if (isButtonSupported()) {
@@ -78,7 +78,7 @@
                     com.android.internal.R.integer.config_buttonBrightnessSettingDefault);
 
             mButtonBrightness = new BrightnessControl(
-                    CMSettings.Secure.BUTTON_BRIGHTNESS, isSingleValue, defaultBrightness);
+                    LineageSettings.Secure.BUTTON_BRIGHTNESS, isSingleValue, defaultBrightness);
             mActiveControl = mButtonBrightness;
         }
 
@@ -266,13 +266,13 @@
     }
 
     private int getTimeout() {
-        return CMSettings.Secure.getInt(mResolver,
-                CMSettings.Secure.BUTTON_BACKLIGHT_TIMEOUT, DEFAULT_BUTTON_TIMEOUT * 1000) / 1000;
+        return LineageSettings.Secure.getInt(mResolver,
+                LineageSettings.Secure.BUTTON_BACKLIGHT_TIMEOUT, DEFAULT_BUTTON_TIMEOUT * 1000) / 1000;
     }
 
     private void applyTimeout(int timeout) {
-        CMSettings.Secure.putInt(mResolver,
-                CMSettings.Secure.BUTTON_BACKLIGHT_TIMEOUT, timeout * 1000);
+        LineageSettings.Secure.putInt(mResolver,
+                LineageSettings.Secure.BUTTON_BACKLIGHT_TIMEOUT, timeout * 1000);
     }
 
     private void updateBrightnessPreview() {
@@ -404,11 +404,11 @@
             } else if (mSeekBar != null && !persisted) {
                 return mSeekBar.getProgress();
             }
-            return CMSettings.Secure.getInt(mResolver, mSetting, mDefaultBrightness);
+            return LineageSettings.Secure.getInt(mResolver, mSetting, mDefaultBrightness);
         }
 
         public void applyBrightness() {
-            CMSettings.Secure.putInt(mResolver, mSetting, getBrightness(false));
+            LineageSettings.Secure.putInt(mResolver, mSetting, getBrightness(false));
         }
 
         /* Behaviors when it's a seekbar */
diff --git a/src/org/lineageos/lineageparts/input/ButtonSettings.java b/src/org/lineageos/lineageparts/input/ButtonSettings.java
index ac6e15c..67447b7 100644
--- a/src/org/lineageos/lineageparts/input/ButtonSettings.java
+++ b/src/org/lineageos/lineageparts/input/ButtonSettings.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.input;
+package org.lineageos.lineageparts.input;
 
 import android.content.ComponentName;
 import android.content.ContentResolver;
@@ -40,17 +40,17 @@
 import android.view.KeyEvent;
 import android.view.WindowManagerGlobal;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
-import org.cyanogenmod.cmparts.utils.DeviceUtils;
-import org.cyanogenmod.cmparts.utils.TelephonyUtils;
-import org.cyanogenmod.internal.util.QSUtils;
-import org.cyanogenmod.internal.util.ScreenType;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.utils.DeviceUtils;
+import org.lineageos.lineageparts.utils.TelephonyUtils;
+import org.lineageos.internal.util.QSUtils;
+import org.lineageos.internal.util.ScreenType;
 
 import java.util.List;
 
-import cyanogenmod.hardware.CMHardwareManager;
-import cyanogenmod.providers.CMSettings;
+import lineageos.hardware.LineageHardwareManager;
+import lineageos.providers.LineageSettings;
 
 public class ButtonSettings extends SettingsPreferenceFragment implements
         Preference.OnPreferenceChangeListener {
@@ -117,7 +117,7 @@
         }
 
         public static Action fromSettings(ContentResolver cr, String setting, Action def) {
-            return fromIntSafe(CMSettings.System.getInt(cr, setting, def.ordinal()));
+            return fromIntSafe(LineageSettings.System.getInt(cr, setting, def.ordinal()));
         }
     }
 
@@ -216,8 +216,8 @@
         // Long press power while display is off to activate torchlight
         mTorchLongPressPowerGesture =
                 (SwitchPreference) findPreference(KEY_TORCH_LONG_PRESS_POWER_GESTURE);
-        final int torchLongPressPowerTimeout = CMSettings.System.getInt(resolver,
-                CMSettings.System.TORCH_LONG_PRESS_POWER_TIMEOUT, 0);
+        final int torchLongPressPowerTimeout = LineageSettings.System.getInt(resolver,
+                LineageSettings.System.TORCH_LONG_PRESS_POWER_TIMEOUT, 0);
         mTorchLongPressPowerTimeout = initList(KEY_TORCH_LONG_PRESS_POWER_TIMEOUT,
                 torchLongPressPowerTimeout);
 
@@ -239,10 +239,10 @@
         Action defaultHomeDoubleTapAction = Action.fromIntSafe(res.getInteger(
                 com.android.internal.R.integer.config_doubleTapOnHomeBehavior));
         Action homeLongPressAction = Action.fromSettings(resolver,
-                CMSettings.System.KEY_HOME_LONG_PRESS_ACTION,
+                LineageSettings.System.KEY_HOME_LONG_PRESS_ACTION,
                 defaultHomeLongPressAction);
         Action homeDoubleTapAction = Action.fromSettings(resolver,
-                CMSettings.System.KEY_HOME_DOUBLE_TAP_ACTION,
+                LineageSettings.System.KEY_HOME_DOUBLE_TAP_ACTION,
                 defaultHomeDoubleTapAction);
 
         // Navigation bar home long press
@@ -264,12 +264,12 @@
         mNavigationRecentsLongPressAction =
                 initRecentsLongPressAction(KEY_NAVIGATION_RECENTS_LONG_PRESS);
 
-        final CMHardwareManager hardware = CMHardwareManager.getInstance(getActivity());
+        final LineageHardwareManager hardware = LineageHardwareManager.getInstance(getActivity());
 
         // Only visible on devices that does not have a navigation bar already,
         // and don't even try unless the existing keys can be disabled
         boolean needsNavigationBar = false;
-        if (hardware.isSupported(CMHardwareManager.FEATURE_KEY_DISABLE)) {
+        if (hardware.isSupported(LineageHardwareManager.FEATURE_KEY_DISABLE)) {
             try {
                 IWindowManager wm = WindowManagerGlobal.getWindowManagerService();
                 needsNavigationBar = wm.needsNavigationBar();
@@ -303,7 +303,7 @@
 
         if (hasHomeKey) {
             if (!showHomeWake) {
-                homeCategory.removePreference(findPreference(CMSettings.System.HOME_WAKE_SCREEN));
+                homeCategory.removePreference(findPreference(LineageSettings.System.HOME_WAKE_SCREEN));
             }
 
             if (!TelephonyUtils.isVoiceCapable(getActivity())) {
@@ -321,7 +321,7 @@
 
         if (hasBackKey) {
             if (!showBackWake) {
-                backCategory.removePreference(findPreference(CMSettings.System.BACK_WAKE_SCREEN));
+                backCategory.removePreference(findPreference(LineageSettings.System.BACK_WAKE_SCREEN));
                 prefScreen.removePreference(backCategory);
             }
         } else {
@@ -330,15 +330,15 @@
 
         if (hasMenuKey) {
             if (!showMenuWake) {
-                menuCategory.removePreference(findPreference(CMSettings.System.MENU_WAKE_SCREEN));
+                menuCategory.removePreference(findPreference(LineageSettings.System.MENU_WAKE_SCREEN));
             }
 
             Action pressAction = Action.fromSettings(resolver,
-                    CMSettings.System.KEY_MENU_ACTION, Action.MENU);
+                    LineageSettings.System.KEY_MENU_ACTION, Action.MENU);
             mMenuPressAction = initList(KEY_MENU_PRESS, pressAction);
 
             Action longPressAction = Action.fromSettings(resolver,
-                        CMSettings.System.KEY_MENU_LONG_PRESS_ACTION,
+                        LineageSettings.System.KEY_MENU_LONG_PRESS_ACTION,
                         hasAssistKey ? Action.NOTHING : Action.SEARCH);
             mMenuLongPressAction = initList(KEY_MENU_LONG_PRESS, longPressAction);
 
@@ -349,15 +349,15 @@
 
         if (hasAssistKey) {
             if (!showAssistWake) {
-                assistCategory.removePreference(findPreference(CMSettings.System.ASSIST_WAKE_SCREEN));
+                assistCategory.removePreference(findPreference(LineageSettings.System.ASSIST_WAKE_SCREEN));
             }
 
             Action pressAction = Action.fromSettings(resolver,
-                    CMSettings.System.KEY_ASSIST_ACTION, Action.SEARCH);
+                    LineageSettings.System.KEY_ASSIST_ACTION, Action.SEARCH);
             mAssistPressAction = initList(KEY_ASSIST_PRESS, pressAction);
 
             Action longPressAction = Action.fromSettings(resolver,
-                    CMSettings.System.KEY_ASSIST_LONG_PRESS_ACTION, Action.VOICE_SEARCH);
+                    LineageSettings.System.KEY_ASSIST_LONG_PRESS_ACTION, Action.VOICE_SEARCH);
             mAssistLongPressAction = initList(KEY_ASSIST_LONG_PRESS, longPressAction);
 
             hasAnyBindableKey = true;
@@ -368,15 +368,15 @@
         if (hasAppSwitchKey) {
             if (!showAppSwitchWake) {
                 appSwitchCategory.removePreference(findPreference(
-                        CMSettings.System.APP_SWITCH_WAKE_SCREEN));
+                        LineageSettings.System.APP_SWITCH_WAKE_SCREEN));
             }
 
             Action pressAction = Action.fromSettings(resolver,
-                    CMSettings.System.KEY_APP_SWITCH_ACTION, Action.APP_SWITCH);
+                    LineageSettings.System.KEY_APP_SWITCH_ACTION, Action.APP_SWITCH);
             mAppSwitchPressAction = initList(KEY_APP_SWITCH_PRESS, pressAction);
 
             Action longPressAction = Action.fromSettings(resolver,
-                    CMSettings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, Action.SPLIT_SCREEN);
+                    LineageSettings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, Action.SPLIT_SCREEN);
             mAppSwitchLongPressAction = initList(KEY_APP_SWITCH_LONG_PRESS, longPressAction);
 
             hasAnyBindableKey = true;
@@ -385,10 +385,10 @@
         }
 
         if (hasCameraKey) {
-            mCameraWakeScreen = (SwitchPreference) findPreference(CMSettings.System.CAMERA_WAKE_SCREEN);
+            mCameraWakeScreen = (SwitchPreference) findPreference(LineageSettings.System.CAMERA_WAKE_SCREEN);
             mCameraSleepOnRelease =
-                    (SwitchPreference) findPreference(CMSettings.System.CAMERA_SLEEP_ON_RELEASE);
-            mCameraLaunch = (SwitchPreference) findPreference(CMSettings.System.CAMERA_LAUNCH);
+                    (SwitchPreference) findPreference(LineageSettings.System.CAMERA_SLEEP_ON_RELEASE);
+            mCameraLaunch = (SwitchPreference) findPreference(LineageSettings.System.CAMERA_LAUNCH);
 
             if (!showCameraWake) {
                 prefScreen.removePreference(mCameraWakeScreen);
@@ -403,12 +403,12 @@
 
         if (DeviceUtils.hasVolumeRocker(getActivity())) {
             if (!showVolumeWake) {
-                volumeCategory.removePreference(findPreference(CMSettings.System.VOLUME_WAKE_SCREEN));
+                volumeCategory.removePreference(findPreference(LineageSettings.System.VOLUME_WAKE_SCREEN));
             }
 
             if (!TelephonyUtils.isVoiceCapable(getActivity())) {
                 volumeCategory.removePreference(
-                        findPreference(CMSettings.System.VOLUME_ANSWER_CALL));
+                        findPreference(LineageSettings.System.VOLUME_ANSWER_CALL));
             }
 
             int cursorControlAction = Settings.System.getInt(resolver,
@@ -416,8 +416,8 @@
             mVolumeKeyCursorControl = initList(KEY_VOLUME_KEY_CURSOR_CONTROL,
                     cursorControlAction);
 
-            int swapVolumeKeys = CMSettings.System.getInt(getContentResolver(),
-                    CMSettings.System.SWAP_VOLUME_KEYS_ON_ROTATION, 0);
+            int swapVolumeKeys = LineageSettings.System.getInt(getContentResolver(),
+                    LineageSettings.System.SWAP_VOLUME_KEYS_ON_ROTATION, 0);
             mSwapVolumeButtons = (SwitchPreference)
                     prefScreen.findPreference(KEY_SWAP_VOLUME_BUTTONS);
             if (mSwapVolumeButtons != null) {
@@ -430,8 +430,8 @@
         try {
             // Only show the navigation bar category on devices that have a navigation bar
             // unless we are forcing it via development settings
-            boolean forceNavbar = CMSettings.Global.getInt(getContentResolver(),
-                    CMSettings.Global.DEV_FORCE_SHOW_NAVBAR, 0) == 1;
+            boolean forceNavbar = LineageSettings.Global.getInt(getContentResolver(),
+                    LineageSettings.Global.DEV_FORCE_SHOW_NAVBAR, 0) == 1;
             boolean hasNavBar = WindowManagerGlobal.getWindowManagerService().hasNavigationBar()
                     || forceNavbar;
 
@@ -440,7 +440,7 @@
             }
 
             if (!hasNavBar && (needsNavigationBar ||
-                    !hardware.isSupported(CMHardwareManager.FEATURE_KEY_DISABLE))) {
+                    !hardware.isSupported(LineageHardwareManager.FEATURE_KEY_DISABLE))) {
                     // Hide navigation bar category
                     prefScreen.removePreference(mNavigationPreferencesCat);
             }
@@ -457,15 +457,15 @@
         if (mCameraWakeScreen != null) {
             if (mCameraSleepOnRelease != null && !getResources().getBoolean(
                     com.android.internal.R.bool.config_singleStageCameraKey)) {
-                mCameraSleepOnRelease.setDependency(CMSettings.System.CAMERA_WAKE_SCREEN);
+                mCameraSleepOnRelease.setDependency(LineageSettings.System.CAMERA_WAKE_SCREEN);
             }
         }
-        mVolumeWakeScreen = (SwitchPreference) findPreference(CMSettings.System.VOLUME_WAKE_SCREEN);
+        mVolumeWakeScreen = (SwitchPreference) findPreference(LineageSettings.System.VOLUME_WAKE_SCREEN);
         mVolumeMusicControls = (SwitchPreference) findPreference(KEY_VOLUME_MUSIC_CONTROLS);
 
         if (mVolumeWakeScreen != null) {
             if (mVolumeMusicControls != null) {
-                mVolumeMusicControls.setDependency(CMSettings.System.VOLUME_WAKE_SCREEN);
+                mVolumeMusicControls.setDependency(LineageSettings.System.VOLUME_WAKE_SCREEN);
                 mVolumeWakeScreen.setDisableDependentsState(true);
             }
         }
@@ -487,11 +487,11 @@
 
         // Home button answers calls.
         if (mHomeAnswerCall != null) {
-            final int incallHomeBehavior = CMSettings.Secure.getInt(getContentResolver(),
-                    CMSettings.Secure.RING_HOME_BUTTON_BEHAVIOR,
-                    CMSettings.Secure.RING_HOME_BUTTON_BEHAVIOR_DEFAULT);
+            final int incallHomeBehavior = LineageSettings.Secure.getInt(getContentResolver(),
+                    LineageSettings.Secure.RING_HOME_BUTTON_BEHAVIOR,
+                    LineageSettings.Secure.RING_HOME_BUTTON_BEHAVIOR_DEFAULT);
             final boolean homeButtonAnswersCall =
-                (incallHomeBehavior == CMSettings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER);
+                (incallHomeBehavior == LineageSettings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER);
             mHomeAnswerCall.setChecked(homeButtonAnswersCall);
         }
     }
@@ -514,8 +514,8 @@
         list.setOnPreferenceChangeListener(this);
 
         // Read the componentName from Settings.Secure, this is the user's prefered setting
-        String componentString = CMSettings.Secure.getString(getContentResolver(),
-                CMSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY);
+        String componentString = LineageSettings.Secure.getString(getContentResolver(),
+                LineageSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY);
         ComponentName targetComponent = null;
         if (componentString == null) {
             list.setSummary(getString(R.string.hardware_keys_action_split_screen));
@@ -526,14 +526,14 @@
         // Dyanamically generate the list array,
         // query PackageManager for all Activites that are registered for ACTION_RECENTS_LONG_PRESS
         PackageManager pm = getPackageManager();
-        Intent intent = new Intent(cyanogenmod.content.Intent.ACTION_RECENTS_LONG_PRESS);
+        Intent intent = new Intent(lineageos.content.Intent.ACTION_RECENTS_LONG_PRESS);
         List<ResolveInfo> recentsActivities = pm.queryIntentActivities(intent,
                 PackageManager.MATCH_DEFAULT_ONLY);
         if (recentsActivities.size() == 0) {
             // No entries available, disable
             list.setSummary(getString(R.string.hardware_keys_action_split_screen));
-            CMSettings.Secure.putString(getContentResolver(),
-                    CMSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY, null);
+            LineageSettings.Secure.putString(getContentResolver(),
+                    LineageSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY, null);
             list.setEnabled(false);
             return list;
         }
@@ -578,7 +578,7 @@
         String value = (String) newValue;
         int index = pref.findIndexOfValue(value);
         pref.setSummary(pref.getEntries()[index]);
-        CMSettings.System.putInt(getContentResolver(), setting, Integer.valueOf(value));
+        LineageSettings.System.putInt(getContentResolver(), setting, Integer.valueOf(value));
     }
 
     private void handleSystemListChange(ListPreference pref, Object newValue, String setting) {
@@ -593,36 +593,36 @@
         if (preference == mHomeLongPressAction ||
                 preference == mNavigationHomeLongPressAction) {
             handleListChange((ListPreference) preference, newValue,
-                    CMSettings.System.KEY_HOME_LONG_PRESS_ACTION);
+                    LineageSettings.System.KEY_HOME_LONG_PRESS_ACTION);
             return true;
         } else if (preference == mHomeDoubleTapAction ||
                 preference == mNavigationHomeDoubleTapAction) {
             handleListChange((ListPreference) preference, newValue,
-                    CMSettings.System.KEY_HOME_DOUBLE_TAP_ACTION);
+                    LineageSettings.System.KEY_HOME_DOUBLE_TAP_ACTION);
             return true;
         } else if (preference == mMenuPressAction) {
             handleListChange(mMenuPressAction, newValue,
-                    CMSettings.System.KEY_MENU_ACTION);
+                    LineageSettings.System.KEY_MENU_ACTION);
             return true;
         } else if (preference == mMenuLongPressAction) {
             handleListChange(mMenuLongPressAction, newValue,
-                    CMSettings.System.KEY_MENU_LONG_PRESS_ACTION);
+                    LineageSettings.System.KEY_MENU_LONG_PRESS_ACTION);
             return true;
         } else if (preference == mAssistPressAction) {
             handleListChange(mAssistPressAction, newValue,
-                    CMSettings.System.KEY_ASSIST_ACTION);
+                    LineageSettings.System.KEY_ASSIST_ACTION);
             return true;
         } else if (preference == mAssistLongPressAction) {
             handleListChange(mAssistLongPressAction, newValue,
-                    CMSettings.System.KEY_ASSIST_LONG_PRESS_ACTION);
+                    LineageSettings.System.KEY_ASSIST_LONG_PRESS_ACTION);
             return true;
         } else if (preference == mAppSwitchPressAction) {
             handleListChange(mAppSwitchPressAction, newValue,
-                    CMSettings.System.KEY_APP_SWITCH_ACTION);
+                    LineageSettings.System.KEY_APP_SWITCH_ACTION);
             return true;
         } else if (preference == mAppSwitchLongPressAction) {
             handleListChange(mAppSwitchLongPressAction, newValue,
-                    CMSettings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION);
+                    LineageSettings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION);
             return true;
         } else if (preference == mVolumeKeyCursorControl) {
             handleSystemListChange(mVolumeKeyCursorControl, newValue,
@@ -639,25 +639,25 @@
             if (putString.length() == 0) {
                 putString = null;
             }
-            CMSettings.Secure.putString(getContentResolver(),
-                    CMSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY, putString);
+            LineageSettings.Secure.putString(getContentResolver(),
+                    LineageSettings.Secure.RECENTS_LONG_PRESS_ACTIVITY, putString);
             return true;
         } else if (preference == mTorchLongPressPowerTimeout) {
             handleListChange(mTorchLongPressPowerTimeout, newValue,
-                    CMSettings.System.TORCH_LONG_PRESS_POWER_TIMEOUT);
+                    LineageSettings.System.TORCH_LONG_PRESS_POWER_TIMEOUT);
             return true;
         }
         return false;
     }
 
     private static void writeDisableNavkeysOption(Context context, boolean enabled) {
-        CMSettings.Global.putInt(context.getContentResolver(),
-                CMSettings.Global.DEV_FORCE_SHOW_NAVBAR, enabled ? 1 : 0);
+        LineageSettings.Global.putInt(context.getContentResolver(),
+                LineageSettings.Global.DEV_FORCE_SHOW_NAVBAR, enabled ? 1 : 0);
     }
 
     private void updateDisableNavkeysOption() {
-        boolean enabled = CMSettings.Global.getInt(getActivity().getContentResolver(),
-                CMSettings.Global.DEV_FORCE_SHOW_NAVBAR, 0) != 0;
+        boolean enabled = LineageSettings.Global.getInt(getActivity().getContentResolver(),
+                LineageSettings.Global.DEV_FORCE_SHOW_NAVBAR, 0) != 0;
 
         mDisableNavigationKeys.setChecked(enabled);
     }
@@ -705,13 +705,13 @@
     }
 
     public static void restoreKeyDisabler(Context context) {
-        CMHardwareManager hardware = CMHardwareManager.getInstance(context);
-        if (!hardware.isSupported(CMHardwareManager.FEATURE_KEY_DISABLE)) {
+        LineageHardwareManager hardware = LineageHardwareManager.getInstance(context);
+        if (!hardware.isSupported(LineageHardwareManager.FEATURE_KEY_DISABLE)) {
             return;
         }
 
-        writeDisableNavkeysOption(context, CMSettings.Global.getInt(context.getContentResolver(),
-                CMSettings.Global.DEV_FORCE_SHOW_NAVBAR, 0) != 0);
+        writeDisableNavkeysOption(context, LineageSettings.Global.getInt(context.getContentResolver(),
+                LineageSettings.Global.DEV_FORCE_SHOW_NAVBAR, 0) != 0);
     }
 
 
@@ -731,8 +731,8 @@
                     value = 1;
                 }
             }
-            CMSettings.System.putInt(getActivity().getContentResolver(),
-                    CMSettings.System.SWAP_VOLUME_KEYS_ON_ROTATION, value);
+            LineageSettings.System.putInt(getActivity().getContentResolver(),
+                    LineageSettings.System.SWAP_VOLUME_KEYS_ON_ROTATION, value);
         } else if (preference == mDisableNavigationKeys) {
             mDisableNavigationKeys.setEnabled(false);
             mNavigationPreferencesCat.setEnabled(false);
@@ -766,9 +766,9 @@
     }
 
     private void handleToggleHomeButtonAnswersCallPreferenceClick() {
-        CMSettings.Secure.putInt(getContentResolver(),
-                CMSettings.Secure.RING_HOME_BUTTON_BEHAVIOR, (mHomeAnswerCall.isChecked()
-                        ? CMSettings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER
-                        : CMSettings.Secure.RING_HOME_BUTTON_BEHAVIOR_DO_NOTHING));
+        LineageSettings.Secure.putInt(getContentResolver(),
+                LineageSettings.Secure.RING_HOME_BUTTON_BEHAVIOR, (mHomeAnswerCall.isChecked()
+                        ? LineageSettings.Secure.RING_HOME_BUTTON_BEHAVIOR_ANSWER
+                        : LineageSettings.Secure.RING_HOME_BUTTON_BEHAVIOR_DO_NOTHING));
     }
 }
diff --git a/src/org/lineageos/lineageparts/input/PowerMenuActions.java b/src/org/lineageos/lineageparts/input/PowerMenuActions.java
index 5336765..aad5889 100644
--- a/src/org/lineageos/lineageparts/input/PowerMenuActions.java
+++ b/src/org/lineageos/lineageparts/input/PowerMenuActions.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.input;
+package org.lineageos.lineageparts.input;
 
 import android.content.Context;
 import android.content.Intent;
@@ -27,27 +27,27 @@
 import android.support.v7.preference.CheckBoxPreference;
 import android.support.v7.preference.Preference;
 
-import com.android.internal.util.cm.PowerMenuConstants;
+import com.android.internal.util.lineage.PowerMenuConstants;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import cyanogenmod.providers.CMSettings;
+import lineageos.providers.LineageSettings;
 
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_AIRPLANE;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_ASSIST;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_BUGREPORT;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_LOCKDOWN;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_RESTART;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_SCREENSHOT;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_SETTINGS;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_SILENT;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_USERS;
-import static com.android.internal.util.cm.PowerMenuConstants.GLOBAL_ACTION_KEY_VOICEASSIST;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_AIRPLANE;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_ASSIST;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_BUGREPORT;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_LOCKDOWN;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_RESTART;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_SCREENSHOT;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_SETTINGS;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_SILENT;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_USERS;
+import static com.android.internal.util.lineage.PowerMenuConstants.GLOBAL_ACTION_KEY_VOICEASSIST;
 
 public class PowerMenuActions extends SettingsPreferenceFragment {
     final static String TAG = "PowerMenuActions";
@@ -265,8 +265,8 @@
     private void getUserConfig() {
         mLocalUserConfig.clear();
         String[] defaultActions;
-        String savedActions = CMSettings.Secure.getStringForUser(mContext.getContentResolver(),
-                CMSettings.Secure.POWER_MENU_ACTIONS, UserHandle.USER_CURRENT);
+        String savedActions = LineageSettings.Secure.getStringForUser(mContext.getContentResolver(),
+                LineageSettings.Secure.POWER_MENU_ACTIONS, UserHandle.USER_CURRENT);
 
         if (savedActions == null) {
             defaultActions = mContext.getResources().getStringArray(
@@ -301,8 +301,8 @@
             }
         }
 
-        CMSettings.Secure.putStringForUser(getContentResolver(),
-                CMSettings.Secure.POWER_MENU_ACTIONS, s.toString(), UserHandle.USER_CURRENT);
+        LineageSettings.Secure.putStringForUser(getContentResolver(),
+                LineageSettings.Secure.POWER_MENU_ACTIONS, s.toString(), UserHandle.USER_CURRENT);
         updatePowerMenuDialog();
     }
 
diff --git a/src/org/lineageos/lineageparts/lineagestats/AnonymousStats.java b/src/org/lineageos/lineageparts/lineagestats/AnonymousStats.java
index 3a6669d..eff1abc 100644
--- a/src/org/lineageos/lineageparts/lineagestats/AnonymousStats.java
+++ b/src/org/lineageos/lineageparts/lineagestats/AnonymousStats.java
@@ -14,18 +14,18 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.cmstats;
+package org.lineageos.lineageparts.lineagestats;
 
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 public class AnonymousStats extends SettingsPreferenceFragment {
 
-    private static final String PREF_FILE_NAME = "CMStats";
+    private static final String PREF_FILE_NAME = "LineageStats";
     /* package */ static final String ANONYMOUS_OPT_IN = "pref_anonymous_opt_in";
     /* package */ static final String ANONYMOUS_LAST_CHECKED = "pref_anonymous_checked_in";
 
diff --git a/src/org/lineageos/lineageparts/lineagestats/PreviewData.java b/src/org/lineageos/lineageparts/lineagestats/PreviewData.java
index f918702..cc47dc8 100644
--- a/src/org/lineageos/lineageparts/lineagestats/PreviewData.java
+++ b/src/org/lineageos/lineageparts/lineagestats/PreviewData.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.cmstats;
+package org.lineageos.lineageparts.lineagestats;
 
 import android.content.Context;
 import android.os.Bundle;
 import android.support.v7.preference.PreferenceScreen;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 public class PreviewData extends SettingsPreferenceFragment {
     private static final String UNIQUE_ID = "preview_id";
diff --git a/src/org/lineageos/lineageparts/lineagestats/ReportingService.java b/src/org/lineageos/lineageparts/lineagestats/ReportingService.java
index 396f6a5..d413150 100644
--- a/src/org/lineageos/lineageparts/lineagestats/ReportingService.java
+++ b/src/org/lineageos/lineageparts/lineagestats/ReportingService.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.cmstats;
+package org.lineageos.lineageparts.lineagestats;
 
 import android.app.IntentService;
 import android.app.job.JobInfo;
@@ -27,7 +27,7 @@
 import android.util.Log;
 
 public class ReportingService extends IntentService {
-    /* package */ static final String TAG = "CMStats";
+    /* package */ static final String TAG = "LineageStats";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
     public ReportingService() {
@@ -45,29 +45,29 @@
         String deviceCarrier = Utilities.getCarrier(getApplicationContext());
         String deviceCarrierId = Utilities.getCarrierId(getApplicationContext());
 
-        final int cmOrgJobId = AnonymousStats.getNextJobId(getApplicationContext());
+        final int lineageOrgJobId = AnonymousStats.getNextJobId(getApplicationContext());
 
-        if (DEBUG) Log.d(TAG, "scheduling job id: " + cmOrgJobId);
+        if (DEBUG) Log.d(TAG, "scheduling job id: " + lineageOrgJobId);
 
-        PersistableBundle cmBundle = new PersistableBundle();
-        cmBundle.putString(StatsUploadJobService.KEY_DEVICE_NAME, deviceName);
-        cmBundle.putString(StatsUploadJobService.KEY_UNIQUE_ID, deviceId);
-        cmBundle.putString(StatsUploadJobService.KEY_VERSION, deviceVersion);
-        cmBundle.putString(StatsUploadJobService.KEY_COUNTRY, deviceCountry);
-        cmBundle.putString(StatsUploadJobService.KEY_CARRIER, deviceCarrier);
-        cmBundle.putString(StatsUploadJobService.KEY_CARRIER_ID, deviceCarrierId);
-        cmBundle.putLong(StatsUploadJobService.KEY_TIMESTAMP, System.currentTimeMillis());
+        PersistableBundle lineageBundle = new PersistableBundle();
+        lineageBundle.putString(StatsUploadJobService.KEY_DEVICE_NAME, deviceName);
+        lineageBundle.putString(StatsUploadJobService.KEY_UNIQUE_ID, deviceId);
+        lineageBundle.putString(StatsUploadJobService.KEY_VERSION, deviceVersion);
+        lineageBundle.putString(StatsUploadJobService.KEY_COUNTRY, deviceCountry);
+        lineageBundle.putString(StatsUploadJobService.KEY_CARRIER, deviceCarrier);
+        lineageBundle.putString(StatsUploadJobService.KEY_CARRIER_ID, deviceCarrierId);
+        lineageBundle.putLong(StatsUploadJobService.KEY_TIMESTAMP, System.currentTimeMillis());
 
         // set job types
-        cmBundle.putInt(StatsUploadJobService.KEY_JOB_TYPE,
-                StatsUploadJobService.JOB_TYPE_CMORG);
+        lineageBundle.putInt(StatsUploadJobService.KEY_JOB_TYPE,
+                StatsUploadJobService.JOB_TYPE_LineageORG);
 
-        // schedule cmorg stats upload
-        js.schedule(new JobInfo.Builder(cmOrgJobId, new ComponentName(getPackageName(),
+        // schedule lineage stats upload
+        js.schedule(new JobInfo.Builder(lineageOrgJobId, new ComponentName(getPackageName(),
                 StatsUploadJobService.class.getName()))
                 .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
                 .setMinimumLatency(1000)
-                .setExtras(cmBundle)
+                .setExtras(lineageBundle)
                 .setPersisted(true)
                 .build());
 
diff --git a/src/org/lineageos/lineageparts/lineagestats/ReportingServiceManager.java b/src/org/lineageos/lineageparts/lineagestats/ReportingServiceManager.java
index 31251a6..414411b 100644
--- a/src/org/lineageos/lineageparts/lineagestats/ReportingServiceManager.java
+++ b/src/org/lineageos/lineageparts/lineagestats/ReportingServiceManager.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.cmstats;
+package org.lineageos.lineageparts.lineagestats;
 
 import android.app.AlarmManager;
 import android.app.PendingIntent;
@@ -34,7 +34,7 @@
     private static final String TAG = ReportingServiceManager.class.getSimpleName();
 
     public static final String ACTION_LAUNCH_SERVICE =
-            "org.cyanogenmod.cmparts.action.TRIGGER_REPORT_METRICS";
+            "org.lineageos.lineageparts.action.TRIGGER_REPORT_METRICS";
     public static final String EXTRA_FORCE = "force";
 
     @Override
diff --git a/src/org/lineageos/lineageparts/lineagestats/StatsUploadJobService.java b/src/org/lineageos/lineageparts/lineagestats/StatsUploadJobService.java
index 07e168c..93b4d60 100644
--- a/src/org/lineageos/lineageparts/lineagestats/StatsUploadJobService.java
+++ b/src/org/lineageos/lineageparts/lineagestats/StatsUploadJobService.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.cmstats;
+package org.lineageos.lineageparts.lineagestats;
 
 import android.app.job.JobParameters;
 import android.app.job.JobService;
@@ -24,7 +24,7 @@
 import android.os.PersistableBundle;
 import android.util.ArrayMap;
 import android.util.Log;
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 import org.json.JSONException;
 import org.json.JSONObject;
 
@@ -45,7 +45,7 @@
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
     public static final String KEY_JOB_TYPE = "job_type";
-    public static final int JOB_TYPE_CMORG = 1;
+    public static final int JOB_TYPE_LineageORG = 1;
 
     public static final String KEY_UNIQUE_ID = "uniqueId";
     public static final String KEY_DEVICE_NAME = "deviceName";
@@ -115,11 +115,11 @@
             int jobType = extras.getInt(KEY_JOB_TYPE, -1);
             if (!isCancelled()) {
                 switch (jobType) {
-                    case JOB_TYPE_CMORG:
+                    case JOB_TYPE_LineageORG:
                         try {
                             JSONObject json = buildStatsRequest(deviceId, deviceName,
                                     deviceVersion, deviceCountry, deviceCarrier, deviceCarrierId);
-                            success = uploadToCM(json);
+                            success = uploadToLineage(json);
                         } catch (IOException | JSONException e) {
                             Log.e(TAG, "Could not upload stats checkin to community server", e);
                             success = false;
@@ -153,8 +153,8 @@
         return request;
     }
 
-    private boolean uploadToCM(JSONObject json) throws IOException {
-        final Uri uri = Uri.parse(getString(R.string.stats_cm_url));
+    private boolean uploadToLineage(JSONObject json) throws IOException {
+        final Uri uri = Uri.parse(getString(R.string.stats_lineage_url));
         URL url = new URL(uri.toString());
         HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
         try {
@@ -168,7 +168,7 @@
             os.close();
 
             final int responseCode = urlConnection.getResponseCode();
-            if (DEBUG) Log.d(TAG, "cm server response code=" + responseCode);
+            if (DEBUG) Log.d(TAG, "lineage server response code=" + responseCode);
             final boolean success = responseCode == HttpURLConnection.HTTP_OK;
             if (!success) {
                 Log.w(TAG, "failed sending, server returned: " + getResponse(urlConnection,
diff --git a/src/org/lineageos/lineageparts/lineagestats/Utilities.java b/src/org/lineageos/lineageparts/lineagestats/Utilities.java
index efb7379..f09c4b0 100644
--- a/src/org/lineageos/lineageparts/lineagestats/Utilities.java
+++ b/src/org/lineageos/lineageparts/lineagestats/Utilities.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.cmstats;
+package org.lineageos.lineageparts.lineagestats;
 
 import android.content.Context;
 import android.os.Build;
@@ -23,7 +23,7 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
-import cyanogenmod.providers.CMSettings;
+import lineageos.providers.LineageSettings;
 
 import java.math.BigInteger;
 import java.net.NetworkInterface;
@@ -63,11 +63,11 @@
     }
 
     public static String getDevice() {
-        return SystemProperties.get("ro.cm.device", Build.PRODUCT);
+        return SystemProperties.get("ro.lineage.device", Build.PRODUCT);
     }
 
     public static String getModVersion() {
-        return SystemProperties.get("ro.cm.version", Build.DISPLAY);
+        return SystemProperties.get("ro.lineage.version", Build.DISPLAY);
     }
 
     public static String digest(String input) {
@@ -85,8 +85,8 @@
      * @return Whether or not stats collection is enabled.
      */
     public static boolean isStatsCollectionEnabled(Context context) {
-        return CMSettings.Secure.getInt(context.getContentResolver(),
-                CMSettings.Secure.STATS_COLLECTION, 1) != 0;
+        return LineageSettings.Secure.getInt(context.getContentResolver(),
+                LineageSettings.Secure.STATS_COLLECTION, 1) != 0;
     }
 
     /**
@@ -96,7 +96,7 @@
      */
     public static void setStatsCollectionEnabled(Context context, boolean enabled) {
         int enable = (enabled) ? 1 : 0;
-        CMSettings.Secure.putInt(context.getContentResolver(),
-                CMSettings.Secure.STATS_COLLECTION, enable);
+        LineageSettings.Secure.putInt(context.getContentResolver(),
+                LineageSettings.Secure.STATS_COLLECTION, enable);
     }
 }
diff --git a/src/org/lineageos/lineageparts/livedisplay/DisplayColor.java b/src/org/lineageos/lineageparts/livedisplay/DisplayColor.java
index 1bc9b38..e272653 100644
--- a/src/org/lineageos/lineageparts/livedisplay/DisplayColor.java
+++ b/src/org/lineageos/lineageparts/livedisplay/DisplayColor.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.livedisplay;
+package org.lineageos.lineageparts.livedisplay;
 
 import android.app.AlertDialog;
 import android.content.Context;
@@ -26,11 +26,11 @@
 import android.widget.SeekBar;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.widget.CustomDialogPreference;
-import org.cyanogenmod.cmparts.widget.IntervalSeekBar;
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.widget.CustomDialogPreference;
+import org.lineageos.lineageparts.widget.IntervalSeekBar;
+import org.lineageos.lineageparts.R;
 
-import cyanogenmod.hardware.LiveDisplayManager;
+import lineageos.hardware.LiveDisplayManager;
 
 /**
  * Special preference type that allows configuration of Color settings
diff --git a/src/org/lineageos/lineageparts/livedisplay/DisplayTemperature.java b/src/org/lineageos/lineageparts/livedisplay/DisplayTemperature.java
index dedbbd7..a60d5e0 100644
--- a/src/org/lineageos/lineageparts/livedisplay/DisplayTemperature.java
+++ b/src/org/lineageos/lineageparts/livedisplay/DisplayTemperature.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.livedisplay;
+package org.lineageos.lineageparts.livedisplay;
 
 import android.app.AlertDialog;
 import android.content.Context;
@@ -27,12 +27,12 @@
 import android.widget.SeekBar;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.widget.CustomDialogPreference;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.internal.util.MathUtils;
+import org.lineageos.lineageparts.widget.CustomDialogPreference;
+import org.lineageos.lineageparts.R;
+import org.lineageos.internal.util.MathUtils;
 
-import cyanogenmod.hardware.LiveDisplayConfig;
-import cyanogenmod.hardware.LiveDisplayManager;
+import lineageos.hardware.LiveDisplayConfig;
+import lineageos.hardware.LiveDisplayManager;
 
 /**
  * Preference for selection of color temperature range for LiveDisplay
diff --git a/src/org/lineageos/lineageparts/livedisplay/LiveDisplay.java b/src/org/lineageos/lineageparts/livedisplay/LiveDisplay.java
index bf6ae60..0dec65f 100644
--- a/src/org/lineageos/lineageparts/livedisplay/LiveDisplay.java
+++ b/src/org/lineageos/lineageparts/livedisplay/LiveDisplay.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.livedisplay;
+package org.lineageos.lineageparts.livedisplay;
 
 import android.content.Context;
 import android.content.res.Resources;
@@ -29,31 +29,31 @@
 
 import com.android.internal.util.ArrayUtils;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
-import org.cyanogenmod.cmparts.search.BaseSearchIndexProvider;
-import org.cyanogenmod.cmparts.search.SearchIndexableRaw;
-import org.cyanogenmod.cmparts.search.Searchable;
-import org.cyanogenmod.cmparts.utils.ResourceUtils;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.search.BaseSearchIndexProvider;
+import org.lineageos.lineageparts.search.SearchIndexableRaw;
+import org.lineageos.lineageparts.search.Searchable;
+import org.lineageos.lineageparts.utils.ResourceUtils;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
-import cyanogenmod.hardware.CMHardwareManager;
-import cyanogenmod.hardware.DisplayMode;
-import cyanogenmod.hardware.LiveDisplayConfig;
-import cyanogenmod.hardware.LiveDisplayManager;
-import cyanogenmod.preference.SettingsHelper;
-import cyanogenmod.providers.CMSettings;
+import lineageos.hardware.LineageHardwareManager;
+import lineageos.hardware.DisplayMode;
+import lineageos.hardware.LiveDisplayConfig;
+import lineageos.hardware.LiveDisplayManager;
+import lineageos.preference.SettingsHelper;
+import lineageos.providers.LineageSettings;
 
-import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_CABC;
-import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_COLOR_ADJUSTMENT;
-import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_COLOR_ENHANCEMENT;
-import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_DISPLAY_MODES;
-import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_PICTURE_ADJUSTMENT;
-import static cyanogenmod.hardware.LiveDisplayManager.MODE_OFF;
-import static cyanogenmod.hardware.LiveDisplayManager.MODE_OUTDOOR;
+import static lineageos.hardware.LiveDisplayManager.FEATURE_CABC;
+import static lineageos.hardware.LiveDisplayManager.FEATURE_COLOR_ADJUSTMENT;
+import static lineageos.hardware.LiveDisplayManager.FEATURE_COLOR_ENHANCEMENT;
+import static lineageos.hardware.LiveDisplayManager.FEATURE_DISPLAY_MODES;
+import static lineageos.hardware.LiveDisplayManager.FEATURE_PICTURE_ADJUSTMENT;
+import static lineageos.hardware.LiveDisplayManager.MODE_OFF;
+import static lineageos.hardware.LiveDisplayManager.MODE_OUTDOOR;
 
 public class LiveDisplay extends SettingsPreferenceFragment implements Searchable,
         Preference.OnPreferenceChangeListener, SettingsHelper.OnSettingsChangeListener {
@@ -82,11 +82,11 @@
             KEY_LIVE_DISPLAY_COLOR_PROFILE + "_%s_summary";
 
     private final Uri DISPLAY_TEMPERATURE_DAY_URI =
-            CMSettings.System.getUriFor(CMSettings.System.DISPLAY_TEMPERATURE_DAY);
+            LineageSettings.System.getUriFor(LineageSettings.System.DISPLAY_TEMPERATURE_DAY);
     private final Uri DISPLAY_TEMPERATURE_NIGHT_URI =
-            CMSettings.System.getUriFor(CMSettings.System.DISPLAY_TEMPERATURE_NIGHT);
+            LineageSettings.System.getUriFor(LineageSettings.System.DISPLAY_TEMPERATURE_NIGHT);
     private final Uri DISPLAY_TEMPERATURE_MODE_URI =
-            CMSettings.System.getUriFor(CMSettings.System.DISPLAY_TEMPERATURE_MODE);
+            LineageSettings.System.getUriFor(LineageSettings.System.DISPLAY_TEMPERATURE_MODE);
 
     private ListPreference mLiveDisplay;
 
@@ -110,14 +110,14 @@
     private LiveDisplayManager mLiveDisplayManager;
     private LiveDisplayConfig mConfig;
 
-    private CMHardwareManager mHardware;
+    private LineageHardwareManager mHardware;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         final Resources res = getResources();
 
-        mHardware = CMHardwareManager.getInstance(getActivity());
+        mHardware = LineageHardwareManager.getInstance(getActivity());
         mLiveDisplayManager = LiveDisplayManager.getInstance(getActivity());
         mConfig = mLiveDisplayManager.getConfig();
 
@@ -134,11 +134,11 @@
         mLiveDisplay.setValue(String.valueOf(adaptiveMode));
 
         mModeEntries = res.getStringArray(
-                org.cyanogenmod.platform.internal.R.array.live_display_entries);
+                org.lineageos.platform.internal.R.array.live_display_entries);
         mModeValues = res.getStringArray(
-                org.cyanogenmod.platform.internal.R.array.live_display_values);
+                org.lineageos.platform.internal.R.array.live_display_values);
         mModeSummaries = res.getStringArray(
-                org.cyanogenmod.platform.internal.R.array.live_display_summaries);
+                org.lineageos.platform.internal.R.array.live_display_summaries);
 
         // Remove outdoor mode from lists if there is no support
         if (!mConfig.hasFeature(LiveDisplayManager.MODE_OUTDOOR)) {
@@ -380,7 +380,7 @@
 
             // Add keywords for supported color profiles
             if (config.hasFeature(FEATURE_DISPLAY_MODES)) {
-                DisplayMode[] modes = CMHardwareManager.getInstance(context).getDisplayModes();
+                DisplayMode[] modes = LineageHardwareManager.getInstance(context).getDisplayModes();
                 if (modes != null && modes.length > 0) {
                     for (DisplayMode mode : modes) {
                         result.add(ResourceUtils.getLocalizedString(
diff --git a/src/org/lineageos/lineageparts/livedisplay/PictureAdjustment.java b/src/org/lineageos/lineageparts/livedisplay/PictureAdjustment.java
index b08964f..0e5b9ef 100644
--- a/src/org/lineageos/lineageparts/livedisplay/PictureAdjustment.java
+++ b/src/org/lineageos/lineageparts/livedisplay/PictureAdjustment.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.livedisplay;
+package org.lineageos.lineageparts.livedisplay;
 
 import android.app.AlertDialog;
 import android.content.Context;
@@ -27,14 +27,14 @@
 import android.widget.SeekBar;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.widget.CustomDialogPreference;
-import org.cyanogenmod.cmparts.widget.IntervalSeekBar;
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.widget.CustomDialogPreference;
+import org.lineageos.lineageparts.widget.IntervalSeekBar;
+import org.lineageos.lineageparts.R;
 
 import java.util.List;
 
-import cyanogenmod.hardware.HSIC;
-import cyanogenmod.hardware.LiveDisplayManager;
+import lineageos.hardware.HSIC;
+import lineageos.hardware.LiveDisplayManager;
 
 /**
  * Special preference type that allows configuration of Color settings
diff --git a/src/org/lineageos/lineageparts/notificationlight/AlphaPatternDrawable.java b/src/org/lineageos/lineageparts/notificationlight/AlphaPatternDrawable.java
index 5bd7246..3717363 100644
--- a/src/org/lineageos/lineageparts/notificationlight/AlphaPatternDrawable.java
+++ b/src/org/lineageos/lineageparts/notificationlight/AlphaPatternDrawable.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.notificationlight;
+package org.lineageos.lineageparts.notificationlight;
 
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
diff --git a/src/org/lineageos/lineageparts/notificationlight/ApplicationLightPreference.java b/src/org/lineageos/lineageparts/notificationlight/ApplicationLightPreference.java
index f54b3e7..c45f107 100644
--- a/src/org/lineageos/lineageparts/notificationlight/ApplicationLightPreference.java
+++ b/src/org/lineageos/lineageparts/notificationlight/ApplicationLightPreference.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.notificationlight;
+package org.lineageos.lineageparts.notificationlight;
 
 import android.app.AlertDialog;
 import android.app.Dialog;
@@ -31,8 +31,8 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.widget.CustomDialogPreference;
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.widget.CustomDialogPreference;
+import org.lineageos.lineageparts.R;
 
 public class ApplicationLightPreference extends CustomDialogPreference<LightSettingsDialog>
         implements View.OnLongClickListener {
diff --git a/src/org/lineageos/lineageparts/notificationlight/BatteryLightSettings.java b/src/org/lineageos/lineageparts/notificationlight/BatteryLightSettings.java
index c8b20c7..03c7f77 100644
--- a/src/org/lineageos/lineageparts/notificationlight/BatteryLightSettings.java
+++ b/src/org/lineageos/lineageparts/notificationlight/BatteryLightSettings.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.notificationlight;
+package org.lineageos.lineageparts.notificationlight;
 
 import android.app.NotificationManager;
 import android.content.ContentResolver;
@@ -28,11 +28,11 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
-import cyanogenmod.preference.CMSystemSettingSwitchPreference;
-import cyanogenmod.providers.CMSettings;
+import lineageos.preference.LineageSystemSettingSwitchPreference;
+import lineageos.providers.LineageSettings;
 
 public class BatteryLightSettings extends SettingsPreferenceFragment implements
         Preference.OnPreferenceChangeListener {
@@ -48,8 +48,8 @@
     private ApplicationLightPreference mLowColorPref;
     private ApplicationLightPreference mMediumColorPref;
     private ApplicationLightPreference mFullColorPref;
-    private CMSystemSettingSwitchPreference mLightEnabledPref;
-    private CMSystemSettingSwitchPreference mPulseEnabledPref;
+    private LineageSystemSettingSwitchPreference mLightEnabledPref;
+    private LineageSystemSettingSwitchPreference mPulseEnabledPref;
 
     private static final int MENU_RESET = Menu.FIRST;
 
@@ -64,8 +64,8 @@
 
         PreferenceGroup mGeneralPrefs = (PreferenceGroup) prefSet.findPreference("general_section");
 
-        mLightEnabledPref = (CMSystemSettingSwitchPreference) prefSet.findPreference(LIGHT_ENABLED_PREF);
-        mPulseEnabledPref = (CMSystemSettingSwitchPreference) prefSet.findPreference(PULSE_ENABLED_PREF);
+        mLightEnabledPref = (LineageSystemSettingSwitchPreference) prefSet.findPreference(LIGHT_ENABLED_PREF);
+        mPulseEnabledPref = (LineageSystemSettingSwitchPreference) prefSet.findPreference(PULSE_ENABLED_PREF);
 
         final NotificationManager nm = getContext().getSystemService(NotificationManager.class);
 
@@ -92,7 +92,7 @@
             resetColors();
         }
 
-        watch(CMSettings.System.getUriFor(CMSettings.System.BATTERY_LIGHT_ENABLED));
+        watch(LineageSettings.System.getUriFor(LineageSettings.System.BATTERY_LIGHT_ENABLED));
     }
 
     @Override
@@ -106,19 +106,19 @@
         Resources res = getResources();
 
         if (mLowColorPref != null) {
-            int lowColor = CMSettings.System.getInt(resolver, CMSettings.System.BATTERY_LIGHT_LOW_COLOR,
+            int lowColor = LineageSettings.System.getInt(resolver, LineageSettings.System.BATTERY_LIGHT_LOW_COLOR,
                     res.getInteger(com.android.internal.R.integer.config_notificationsBatteryLowARGB));
             mLowColorPref.setAllValues(lowColor, 0, 0, false);
         }
 
         if (mMediumColorPref != null) {
-            int mediumColor = CMSettings.System.getInt(resolver, CMSettings.System.BATTERY_LIGHT_MEDIUM_COLOR,
+            int mediumColor = LineageSettings.System.getInt(resolver, LineageSettings.System.BATTERY_LIGHT_MEDIUM_COLOR,
                     res.getInteger(com.android.internal.R.integer.config_notificationsBatteryMediumARGB));
             mMediumColorPref.setAllValues(mediumColor, 0, 0, false);
         }
 
         if (mFullColorPref != null) {
-            int fullColor = CMSettings.System.getInt(resolver, CMSettings.System.BATTERY_LIGHT_FULL_COLOR,
+            int fullColor = LineageSettings.System.getInt(resolver, LineageSettings.System.BATTERY_LIGHT_FULL_COLOR,
                     res.getInteger(com.android.internal.R.integer.config_notificationsBatteryFullARGB));
             mFullColorPref.setAllValues(fullColor, 0, 0, false);
         }
@@ -134,11 +134,11 @@
         ContentResolver resolver = getActivity().getContentResolver();
 
         if (key.equals(LOW_COLOR_PREF)) {
-            CMSettings.System.putInt(resolver, CMSettings.System.BATTERY_LIGHT_LOW_COLOR, color);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.BATTERY_LIGHT_LOW_COLOR, color);
         } else if (key.equals(MEDIUM_COLOR_PREF)) {
-            CMSettings.System.putInt(resolver, CMSettings.System.BATTERY_LIGHT_MEDIUM_COLOR, color);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.BATTERY_LIGHT_MEDIUM_COLOR, color);
         } else if (key.equals(FULL_COLOR_PREF)) {
-            CMSettings.System.putInt(resolver, CMSettings.System.BATTERY_LIGHT_FULL_COLOR, color);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.BATTERY_LIGHT_FULL_COLOR, color);
         }
     }
 
@@ -169,11 +169,11 @@
         Resources res = getResources();
 
         // Reset to the framework default colors
-        CMSettings.System.putInt(resolver, CMSettings.System.BATTERY_LIGHT_LOW_COLOR,
+        LineageSettings.System.putInt(resolver, LineageSettings.System.BATTERY_LIGHT_LOW_COLOR,
                 res.getInteger(com.android.internal.R.integer.config_notificationsBatteryLowARGB));
-        CMSettings.System.putInt(resolver, CMSettings.System.BATTERY_LIGHT_MEDIUM_COLOR,
+        LineageSettings.System.putInt(resolver, LineageSettings.System.BATTERY_LIGHT_MEDIUM_COLOR,
                 res.getInteger(com.android.internal.R.integer.config_notificationsBatteryMediumARGB));
-        CMSettings.System.putInt(resolver, CMSettings.System.BATTERY_LIGHT_FULL_COLOR,
+        LineageSettings.System.putInt(resolver, LineageSettings.System.BATTERY_LIGHT_FULL_COLOR,
                 res.getInteger(com.android.internal.R.integer.config_notificationsBatteryFullARGB));
         refreshDefault();
     }
@@ -199,8 +199,8 @@
     public static final SummaryProvider SUMMARY_PROVIDER = new SummaryProvider() {
         @Override
         public String getSummary(Context context, String key) {
-            if (CMSettings.System.getInt(context.getContentResolver(),
-                    CMSettings.System.BATTERY_LIGHT_ENABLED, 1) == 1) {
+            if (LineageSettings.System.getInt(context.getContentResolver(),
+                    LineageSettings.System.BATTERY_LIGHT_ENABLED, 1) == 1) {
                 return context.getString(R.string.enabled);
             }
             return context.getString(R.string.disabled);
diff --git a/src/org/lineageos/lineageparts/notificationlight/ColorPanelView.java b/src/org/lineageos/lineageparts/notificationlight/ColorPanelView.java
index b2a24d5..20c2f32 100644
--- a/src/org/lineageos/lineageparts/notificationlight/ColorPanelView.java
+++ b/src/org/lineageos/lineageparts/notificationlight/ColorPanelView.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.notificationlight;
+package org.lineageos.lineageparts.notificationlight;
 
 import android.content.Context;
 import android.graphics.Canvas;
diff --git a/src/org/lineageos/lineageparts/notificationlight/ColorPickerView.java b/src/org/lineageos/lineageparts/notificationlight/ColorPickerView.java
index a3a06e3..c660115 100644
--- a/src/org/lineageos/lineageparts/notificationlight/ColorPickerView.java
+++ b/src/org/lineageos/lineageparts/notificationlight/ColorPickerView.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.notificationlight;
+package org.lineageos.lineageparts.notificationlight;
 
 import android.content.Context;
 import android.graphics.Canvas;
diff --git a/src/org/lineageos/lineageparts/notificationlight/LightSettingsDialog.java b/src/org/lineageos/lineageparts/notificationlight/LightSettingsDialog.java
index a20bcfb..accfb61 100644
--- a/src/org/lineageos/lineageparts/notificationlight/LightSettingsDialog.java
+++ b/src/org/lineageos/lineageparts/notificationlight/LightSettingsDialog.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.notificationlight;
+package org.lineageos.lineageparts.notificationlight;
 
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -45,8 +45,8 @@
 import android.widget.SpinnerAdapter;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.notificationlight.ColorPickerView.OnColorChangedListener;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.notificationlight.ColorPickerView.OnColorChangedListener;
 
 import java.util.ArrayList;
 import java.util.Locale;
diff --git a/src/org/lineageos/lineageparts/notificationlight/NotificationLightSettings.java b/src/org/lineageos/lineageparts/notificationlight/NotificationLightSettings.java
index a54e0d3..40017b3 100644
--- a/src/org/lineageos/lineageparts/notificationlight/NotificationLightSettings.java
+++ b/src/org/lineageos/lineageparts/notificationlight/NotificationLightSettings.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.notificationlight;
+package org.lineageos.lineageparts.notificationlight;
 
 import android.app.AlertDialog;
 import android.app.Dialog;
@@ -42,20 +42,20 @@
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ListView;
 
-import org.cyanogenmod.cmparts.widget.PackageListAdapter;
-import org.cyanogenmod.cmparts.widget.PackageListAdapter.PackageItem;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.widget.PackageListAdapter;
+import org.lineageos.lineageparts.widget.PackageListAdapter.PackageItem;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import cyanogenmod.preference.CMSystemSettingSwitchPreference;
-import cyanogenmod.preference.SystemSettingSwitchPreference;
-import cyanogenmod.providers.CMSettings;
-import cyanogenmod.util.ColorUtils;
+import lineageos.preference.LineageSystemSettingSwitchPreference;
+import lineageos.preference.SystemSettingSwitchPreference;
+import lineageos.providers.LineageSettings;
+import lineageos.util.ColorUtils;
 
 public class NotificationLightSettings extends SettingsPreferenceFragment implements
         Preference.OnPreferenceChangeListener, ApplicationLightPreference.ItemLongClickListener {
@@ -75,10 +75,10 @@
     private PreferenceGroup mApplicationPrefList;
     private PreferenceScreen mNotificationLedBrightnessPref;
     private SystemSettingSwitchPreference mEnabledPref;
-    private CMSystemSettingSwitchPreference mCustomEnabledPref;
-    private CMSystemSettingSwitchPreference mMultipleLedsEnabledPref;
-    private CMSystemSettingSwitchPreference mScreenOnLightsPref;
-    private CMSystemSettingSwitchPreference mAutoGenerateColors;
+    private LineageSystemSettingSwitchPreference mCustomEnabledPref;
+    private LineageSystemSettingSwitchPreference mMultipleLedsEnabledPref;
+    private LineageSystemSettingSwitchPreference mScreenOnLightsPref;
+    private LineageSystemSettingSwitchPreference mAutoGenerateColors;
     private ApplicationLightPreference mDefaultPref;
     private ApplicationLightPreference mCallPref;
     private ApplicationLightPreference mVoicemailPref;
@@ -121,19 +121,19 @@
 
         mDefaultPref = (ApplicationLightPreference) findPreference(DEFAULT_PREF);
 
-        mAutoGenerateColors = (CMSystemSettingSwitchPreference)
-                findPreference(CMSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO);
+        mAutoGenerateColors = (LineageSystemSettingSwitchPreference)
+                findPreference(LineageSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO);
 
         // Advanced light settings
         mNotificationLedBrightnessPref = (PreferenceScreen)
-                findPreference(CMSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL);
-        mMultipleLedsEnabledPref = (CMSystemSettingSwitchPreference)
-                findPreference(CMSettings.System.NOTIFICATION_LIGHT_MULTIPLE_LEDS_ENABLE);
-        mScreenOnLightsPref = (CMSystemSettingSwitchPreference)
-                findPreference(CMSettings.System.NOTIFICATION_LIGHT_SCREEN_ON);
+                findPreference(LineageSettings.System.NOTIFICATION_LIGHT_BRIGHTNESS_LEVEL);
+        mMultipleLedsEnabledPref = (LineageSystemSettingSwitchPreference)
+                findPreference(LineageSettings.System.NOTIFICATION_LIGHT_MULTIPLE_LEDS_ENABLE);
+        mScreenOnLightsPref = (LineageSystemSettingSwitchPreference)
+                findPreference(LineageSettings.System.NOTIFICATION_LIGHT_SCREEN_ON);
         mScreenOnLightsPref.setOnPreferenceChangeListener(this);
-        mCustomEnabledPref = (CMSystemSettingSwitchPreference)
-                findPreference(CMSettings.System.NOTIFICATION_LIGHT_PULSE_CUSTOM_ENABLE);
+        mCustomEnabledPref = (LineageSystemSettingSwitchPreference)
+                findPreference(LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CUSTOM_ENABLE);
         if (!nm.doLightsSupport(
                 NotificationManager.LIGHTS_ADJUSTABLE_NOTIFICATION_LED_BRIGHTNESS)) {
             mAdvancedPrefs.removePreference(mNotificationLedBrightnessPref);
@@ -185,7 +185,7 @@
             mGeneralPrefs.removePreference(mAutoGenerateColors);
         } else {
             mAutoGenerateColors.setOnPreferenceChangeListener(this);
-            watch(CMSettings.System.getUriFor(CMSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO));
+            watch(LineageSettings.System.getUriFor(LineageSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO));
         }
 
         watch(Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE));
@@ -201,34 +201,34 @@
 
     private void refreshDefault() {
         ContentResolver resolver = getActivity().getContentResolver();
-        int color = CMSettings.System.getInt(resolver,
-                CMSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_COLOR, mDefaultColor);
-        int timeOn = CMSettings.System.getInt(resolver,
-                CMSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_LED_ON, mDefaultLedOn);
-        int timeOff = CMSettings.System.getInt(resolver,
-                CMSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_LED_OFF, mDefaultLedOff);
+        int color = LineageSettings.System.getInt(resolver,
+                LineageSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_COLOR, mDefaultColor);
+        int timeOn = LineageSettings.System.getInt(resolver,
+                LineageSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_LED_ON, mDefaultLedOn);
+        int timeOff = LineageSettings.System.getInt(resolver,
+                LineageSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_LED_OFF, mDefaultLedOff);
 
         mDefaultPref.setAllValues(color, timeOn, timeOff);
 
         // Get Missed call and Voicemail values
         if (mCallPref != null) {
-            int callColor = CMSettings.System.getInt(resolver,
-                    CMSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_COLOR, mDefaultColor);
-            int callTimeOn = CMSettings.System.getInt(resolver,
-                    CMSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_LED_ON, mDefaultLedOn);
-            int callTimeOff = CMSettings.System.getInt(resolver,
-                    CMSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_LED_OFF, mDefaultLedOff);
+            int callColor = LineageSettings.System.getInt(resolver,
+                    LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_COLOR, mDefaultColor);
+            int callTimeOn = LineageSettings.System.getInt(resolver,
+                    LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_LED_ON, mDefaultLedOn);
+            int callTimeOff = LineageSettings.System.getInt(resolver,
+                    LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_LED_OFF, mDefaultLedOff);
 
             mCallPref.setAllValues(callColor, callTimeOn, callTimeOff);
         }
 
         if (mVoicemailPref != null) {
-            int vmailColor = CMSettings.System.getInt(resolver,
-                    CMSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_COLOR, mDefaultColor);
-            int vmailTimeOn = CMSettings.System.getInt(resolver,
-                    CMSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_LED_ON, mDefaultLedOn);
-            int vmailTimeOff = CMSettings.System.getInt(resolver,
-                    CMSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_LED_OFF, mDefaultLedOff);
+            int vmailColor = LineageSettings.System.getInt(resolver,
+                    LineageSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_COLOR, mDefaultColor);
+            int vmailTimeOn = LineageSettings.System.getInt(resolver,
+                    LineageSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_LED_ON, mDefaultLedOn);
+            int vmailTimeOff = LineageSettings.System.getInt(resolver,
+                    LineageSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_LED_OFF, mDefaultLedOff);
 
             mVoicemailPref.setAllValues(vmailColor, vmailTimeOn, vmailTimeOff);
         }
@@ -314,8 +314,8 @@
     }
 
     private int getInitialColorForPackage(String packageName) {
-        boolean autoColor = CMSettings.System.getInt(getActivity().getContentResolver(),
-                CMSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO, mMultiColorLed ? 1 : 0) == 1;
+        boolean autoColor = LineageSettings.System.getInt(getActivity().getContentResolver(),
+                LineageSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO, mMultiColorLed ? 1 : 0) == 1;
         int color = mDefaultColor;
         if (autoColor) {
             try {
@@ -347,8 +347,8 @@
     }
 
     private boolean parsePackageList() {
-        final String baseString = CMSettings.System.getString(getActivity().getContentResolver(),
-                CMSettings.System.NOTIFICATION_LIGHT_PULSE_CUSTOM_VALUES);
+        final String baseString = LineageSettings.System.getString(getActivity().getContentResolver(),
+                LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CUSTOM_VALUES);
 
         if (TextUtils.equals(mPackageList, baseString)) {
             return false;
@@ -382,8 +382,8 @@
         if (preferencesUpdated) {
             mPackageList = value;
         }
-        CMSettings.System.putString(getActivity().getContentResolver(),
-                                  CMSettings.System.NOTIFICATION_LIGHT_PULSE_CUSTOM_VALUES, value);
+        LineageSettings.System.putString(getActivity().getContentResolver(),
+                                  LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CUSTOM_VALUES, value);
     }
 
     /**
@@ -398,21 +398,21 @@
         ContentResolver resolver = getActivity().getContentResolver();
 
         if (packageName.equals(DEFAULT_PREF)) {
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_COLOR, color);
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_LED_ON, timeon);
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_LED_OFF, timeoff);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_COLOR, color);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_LED_ON, timeon);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_LED_OFF, timeoff);
             refreshDefault();
             return;
         } else if (packageName.equals(MISSED_CALL_PREF)) {
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_COLOR, color);
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_LED_ON, timeon);
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_LED_OFF, timeoff);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_COLOR, color);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_LED_ON, timeon);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_LED_OFF, timeoff);
             refreshDefault();
             return;
         } else if (packageName.equals(VOICEMAIL_PREF)) {
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_COLOR, color);
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_LED_ON, timeon);
-            CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_LED_OFF, timeoff);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_COLOR, color);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_LED_ON, timeon);
+            LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_LED_OFF, timeoff);
             refreshDefault();
             return;
         }
@@ -431,9 +431,9 @@
         ContentResolver resolver = getActivity().getContentResolver();
 
         // Reset to the framework default colors
-        CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_COLOR, mDefaultColor);
-        CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_COLOR, mDefaultColor);
-        CMSettings.System.putInt(resolver, CMSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_COLOR, mDefaultColor);
+        LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_DEFAULT_COLOR, mDefaultColor);
+        LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_CALL_COLOR, mDefaultColor);
+        LineageSettings.System.putInt(resolver, LineageSettings.System.NOTIFICATION_LIGHT_PULSE_VMAIL_COLOR, mDefaultColor);
 
         refreshDefault();
     }
@@ -594,8 +594,8 @@
         public String getSummary(Context context, String key) {
             if (Settings.System.getInt(context.getContentResolver(),
                     Settings.System.NOTIFICATION_LIGHT_PULSE, 1) == 1) {
-                if (CMSettings.System.getInt(context.getContentResolver(),
-                        CMSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO, 1) == 1) {
+                if (LineageSettings.System.getInt(context.getContentResolver(),
+                        LineageSettings.System.NOTIFICATION_LIGHT_COLOR_AUTO, 1) == 1) {
                     return context.getString(R.string.notification_light_automagic_summary);
                 }
                 return context.getString(R.string.enabled);
diff --git a/src/org/lineageos/lineageparts/power/PerfProfileSettings.java b/src/org/lineageos/lineageparts/power/PerfProfileSettings.java
index ec2138d..03136aa 100644
--- a/src/org/lineageos/lineageparts/power/PerfProfileSettings.java
+++ b/src/org/lineageos/lineageparts/power/PerfProfileSettings.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.power;
+package org.lineageos.lineageparts.power;
 
 import android.animation.AnimatorSet;
 import android.animation.ValueAnimator;
@@ -35,20 +35,20 @@
 import android.view.animation.AccelerateDecelerateInterpolator;
 import android.widget.Toast;
 
-import org.cyanogenmod.cmparts.PartsUpdater;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.widget.SeekBarPreference;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
-import org.cyanogenmod.graphics.drawable.StopMotionVectorDrawable;
+import org.lineageos.lineageparts.PartsUpdater;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.widget.SeekBarPreference;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+import org.lineageos.graphics.drawable.StopMotionVectorDrawable;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import cyanogenmod.power.PerformanceManager;
-import cyanogenmod.power.PerformanceProfile;
-import cyanogenmod.providers.CMSettings;
+import lineageos.power.PerformanceManager;
+import lineageos.power.PerformanceProfile;
+import lineageos.providers.LineageSettings;
 
-import static cyanogenmod.power.PerformanceManager.PROFILE_POWER_SAVE;
+import static lineageos.power.PerformanceManager.PROFILE_POWER_SAVE;
 
 public class PerfProfileSettings extends SettingsPreferenceFragment
         implements Preference.OnPreferenceChangeListener {
@@ -116,7 +116,7 @@
             mPerfSeekBar.setOnPreferenceChangeListener(this);
             updatePerfSettings();
 
-            watch(CMSettings.Secure.getUriFor(CMSettings.Secure.PERFORMANCE_PROFILE));
+            watch(LineageSettings.Secure.getUriFor(LineageSettings.Secure.PERFORMANCE_PROFILE));
         }
 
         mAutoPowerSavePref.setEntries(R.array.auto_power_save_entries);
diff --git a/src/org/lineageos/lineageparts/privacyguard/AppInfoLoader.java b/src/org/lineageos/lineageparts/privacyguard/AppInfoLoader.java
index f9785b8..b7658c0 100644
--- a/src/org/lineageos/lineageparts/privacyguard/AppInfoLoader.java
+++ b/src/org/lineageos/lineageparts/privacyguard/AppInfoLoader.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.privacyguard;
+package org.lineageos.lineageparts.privacyguard;
 
 import android.app.AppOpsManager;
 import android.content.AsyncTaskLoader;
@@ -22,7 +22,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageInfo;
 
-import org.cyanogenmod.cmparts.privacyguard.PrivacyGuardManager.AppInfo;
+import org.lineageos.lineageparts.privacyguard.PrivacyGuardManager.AppInfo;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardAppListAdapter.java b/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardAppListAdapter.java
index 2d1654f..d08747e 100644
--- a/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardAppListAdapter.java
+++ b/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardAppListAdapter.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.privacyguard;
+package org.lineageos.lineageparts.privacyguard;
 
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -29,8 +29,8 @@
 import android.widget.SectionIndexer;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.privacyguard.PrivacyGuardManager.AppInfo;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.privacyguard.PrivacyGuardManager.AppInfo;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardManager.java b/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardManager.java
index fa06cf4..c23d42b 100644
--- a/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardManager.java
+++ b/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardManager.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.privacyguard;
+package org.lineageos.lineageparts.privacyguard;
 
 import android.app.FragmentTransaction;
 import android.view.animation.AnimationUtils;
@@ -48,8 +48,8 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardPrefs.java b/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardPrefs.java
index 3a14750..b2f0666 100644
--- a/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardPrefs.java
+++ b/src/org/lineageos/lineageparts/privacyguard/PrivacyGuardPrefs.java
@@ -15,17 +15,17 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.privacyguard;
+package org.lineageos.lineageparts.privacyguard;
 
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
-import cyanogenmod.providers.CMSettings;
+import lineageos.providers.LineageSettings;
 
 public class PrivacyGuardPrefs extends SettingsPreferenceFragment {
 
@@ -39,7 +39,7 @@
     @Override
     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
         addPreferencesFromResource(R.xml.privacy_guard_prefs);
-        watch(CMSettings.Secure.getUriFor(CMSettings.Secure.PRIVACY_GUARD_DEFAULT));
+        watch(LineageSettings.Secure.getUriFor(LineageSettings.Secure.PRIVACY_GUARD_DEFAULT));
     }
 
     @Override
diff --git a/src/org/lineageos/lineageparts/profiles/AppGroupConfig.java b/src/org/lineageos/lineageparts/profiles/AppGroupConfig.java
index 250cc1f..86b69d7 100644
--- a/src/org/lineageos/lineageparts/profiles/AppGroupConfig.java
+++ b/src/org/lineageos/lineageparts/profiles/AppGroupConfig.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.app.AlertDialog;
 import android.app.Dialog;
@@ -42,12 +42,12 @@
 import android.widget.ListView;
 import android.widget.Toast;
 
-import org.cyanogenmod.cmparts.widget.PackageListAdapter;
-import org.cyanogenmod.cmparts.widget.PackageListAdapter.PackageItem;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.widget.PackageListAdapter;
+import org.lineageos.lineageparts.widget.PackageListAdapter.PackageItem;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
-import cyanogenmod.app.ProfileManager;
+import lineageos.app.ProfileManager;
 
 public class AppGroupConfig extends SettingsPreferenceFragment
         implements Preference.OnPreferenceChangeListener {
diff --git a/src/org/lineageos/lineageparts/profiles/AppGroupList.java b/src/org/lineageos/lineageparts/profiles/AppGroupList.java
index 747a7b8..77d710e 100644
--- a/src/org/lineageos/lineageparts/profiles/AppGroupList.java
+++ b/src/org/lineageos/lineageparts/profiles/AppGroupList.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.annotation.Nullable;
 import android.app.AlertDialog;
@@ -29,14 +29,14 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.cyanogenmod.cmparts.widget.FloatingActionButton;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
-import org.cyanogenmod.internal.util.ScreenType;
+import org.lineageos.lineageparts.widget.FloatingActionButton;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+import org.lineageos.internal.util.ScreenType;
 
 import java.util.UUID;
 
-import cyanogenmod.app.ProfileManager;
+import lineageos.app.ProfileManager;
 
 public class AppGroupList extends SettingsPreferenceFragment {
 
diff --git a/src/org/lineageos/lineageparts/profiles/NFCProfile.java b/src/org/lineageos/lineageparts/profiles/NFCProfile.java
index b61ca2d..f8c3fcd 100644
--- a/src/org/lineageos/lineageparts/profiles/NFCProfile.java
+++ b/src/org/lineageos/lineageparts/profiles/NFCProfile.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import java.util.UUID;
 
@@ -29,11 +29,11 @@
 import android.os.Parcelable;
 import android.widget.Toast;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileManager;
-import cyanogenmod.providers.CMSettings;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
+import lineageos.providers.LineageSettings;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 /**
  * This activity handles NDEF_DISCOVERED intents with the cm/profile mime type.
@@ -86,8 +86,8 @@
     private void handleProfileMimeType(byte[] payload) {
         UUID profileUuid = NFCProfileUtils.toUUID(payload);
 
-        boolean enabled = CMSettings.System.getInt(getContentResolver(),
-                CMSettings.System.SYSTEM_PROFILES_ENABLED, 1) == 1;
+        boolean enabled = LineageSettings.System.getInt(getContentResolver(),
+                LineageSettings.System.SYSTEM_PROFILES_ENABLED, 1) == 1;
 
         if (enabled) {
             // Only do NFC profile changing if System Profile support is enabled
diff --git a/src/org/lineageos/lineageparts/profiles/NFCProfileSelect.java b/src/org/lineageos/lineageparts/profiles/NFCProfileSelect.java
index 0e8cf0b..89c9f6f 100644
--- a/src/org/lineageos/lineageparts/profiles/NFCProfileSelect.java
+++ b/src/org/lineageos/lineageparts/profiles/NFCProfileSelect.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import java.util.UUID;
 
@@ -27,10 +27,10 @@
 import android.view.View.OnClickListener;
 import android.widget.Toast;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileManager;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 /**
  * Activity to support attaching a unknown NFC tag to an existing profile.
diff --git a/src/org/lineageos/lineageparts/profiles/NFCProfileTagCallback.java b/src/org/lineageos/lineageparts/profiles/NFCProfileTagCallback.java
index 3f2d9a8..0ecae6f 100644
--- a/src/org/lineageos/lineageparts/profiles/NFCProfileTagCallback.java
+++ b/src/org/lineageos/lineageparts/profiles/NFCProfileTagCallback.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.nfc.Tag;
 
diff --git a/src/org/lineageos/lineageparts/profiles/NFCProfileUtils.java b/src/org/lineageos/lineageparts/profiles/NFCProfileUtils.java
index e2f1c6a..7f796d3 100644
--- a/src/org/lineageos/lineageparts/profiles/NFCProfileUtils.java
+++ b/src/org/lineageos/lineageparts/profiles/NFCProfileUtils.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.content.Context;
 import android.nfc.NdefMessage;
@@ -25,7 +25,7 @@
 import android.os.Vibrator;
 import android.util.Log;
 
-import cyanogenmod.app.Profile;
+import lineageos.app.Profile;
 
 import java.io.IOException;
 import java.util.UUID;
diff --git a/src/org/lineageos/lineageparts/profiles/NFCProfileWriter.java b/src/org/lineageos/lineageparts/profiles/NFCProfileWriter.java
index 77c9bde..8e22384 100644
--- a/src/org/lineageos/lineageparts/profiles/NFCProfileWriter.java
+++ b/src/org/lineageos/lineageparts/profiles/NFCProfileWriter.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.app.Activity;
 import android.app.PendingIntent;
@@ -27,10 +27,10 @@
 import android.util.Log;
 import android.widget.Toast;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileManager;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 import java.util.UUID;
 
diff --git a/src/org/lineageos/lineageparts/profiles/NamePreference.java b/src/org/lineageos/lineageparts/profiles/NamePreference.java
index c48f737..f4184ea 100644
--- a/src/org/lineageos/lineageparts/profiles/NamePreference.java
+++ b/src/org/lineageos/lineageparts/profiles/NamePreference.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.app.AlertDialog;
 import android.content.Context;
@@ -26,7 +26,7 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 public class NamePreference extends Preference implements
         View.OnClickListener, Preference.OnPreferenceChangeListener {
diff --git a/src/org/lineageos/lineageparts/profiles/ProfileGroupConfig.java b/src/org/lineageos/lineageparts/profiles/ProfileGroupConfig.java
index 9f6aaa6..bf99bcd 100644
--- a/src/org/lineageos/lineageparts/profiles/ProfileGroupConfig.java
+++ b/src/org/lineageos/lineageparts/profiles/ProfileGroupConfig.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import java.util.UUID;
 
@@ -24,13 +24,13 @@
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileGroup;
-import cyanogenmod.app.ProfileGroup.Mode;
-import cyanogenmod.app.ProfileManager;
+import lineageos.app.Profile;
+import lineageos.app.ProfileGroup;
+import lineageos.app.ProfileGroup.Mode;
+import lineageos.app.ProfileManager;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 public class ProfileGroupConfig extends SettingsPreferenceFragment implements
         OnPreferenceChangeListener {
diff --git a/src/org/lineageos/lineageparts/profiles/ProfileRingtonePreference.java b/src/org/lineageos/lineageparts/profiles/ProfileRingtonePreference.java
index 385739c..712f280 100644
--- a/src/org/lineageos/lineageparts/profiles/ProfileRingtonePreference.java
+++ b/src/org/lineageos/lineageparts/profiles/ProfileRingtonePreference.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.content.Context;
 import android.content.Intent;
@@ -22,7 +22,7 @@
 import android.net.Uri;
 import android.util.AttributeSet;
 
-import org.cyanogenmod.cmparts.widget.RingtonePreference;
+import org.lineageos.lineageparts.widget.RingtonePreference;
 
 public class ProfileRingtonePreference extends RingtonePreference {
     private static final String TAG = "ProfileRingtonePreference";
diff --git a/src/org/lineageos/lineageparts/profiles/ProfilesPreference.java b/src/org/lineageos/lineageparts/profiles/ProfilesPreference.java
index 02a3e19..17e1bd5 100644
--- a/src/org/lineageos/lineageparts/profiles/ProfilesPreference.java
+++ b/src/org/lineageos/lineageparts/profiles/ProfilesPreference.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.content.ActivityNotFoundException;
 import android.os.Bundle;
@@ -24,9 +24,9 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.PartsActivity;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.PartsActivity;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 public class ProfilesPreference extends CheckBoxPreference implements View.OnClickListener {
     private static final String TAG = ProfilesPreference.class.getSimpleName();
diff --git a/src/org/lineageos/lineageparts/profiles/ProfilesSettings.java b/src/org/lineageos/lineageparts/profiles/ProfilesSettings.java
index c63a6cc..aaff296 100644
--- a/src/org/lineageos/lineageparts/profiles/ProfilesSettings.java
+++ b/src/org/lineageos/lineageparts/profiles/ProfilesSettings.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.annotation.Nullable;
 import android.app.Activity;
@@ -37,19 +37,19 @@
 import android.widget.FrameLayout;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.widget.CMBaseSystemSettingSwitchBar;
-import org.cyanogenmod.cmparts.PartsActivity;
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.widget.LineageBaseSystemSettingSwitchBar;
+import org.lineageos.lineageparts.PartsActivity;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 import java.util.UUID;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileManager;
-import cyanogenmod.providers.CMSettings;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
+import lineageos.providers.LineageSettings;
 
 public class ProfilesSettings extends SettingsPreferenceFragment
-        implements CMBaseSystemSettingSwitchBar.SwitchBarChangeCallback,
+        implements LineageBaseSystemSettingSwitchBar.SwitchBarChangeCallback,
         Preference.OnPreferenceChangeListener {
     private static final String TAG = "ProfilesSettings";
 
@@ -63,7 +63,7 @@
     private final BroadcastReceiver mReceiver;
 
     private ProfileManager mProfileManager;
-    private CMBaseSystemSettingSwitchBar mProfileEnabler;
+    private LineageBaseSystemSettingSwitchBar mProfileEnabler;
 
     private boolean mEnabled;
 
@@ -163,8 +163,8 @@
     public void onStart() {
         super.onStart();
         final PartsActivity activity = (PartsActivity) getActivity();
-        mProfileEnabler = new CMBaseSystemSettingSwitchBar(activity, activity.getSwitchBar(),
-                CMSettings.System.SYSTEM_PROFILES_ENABLED, true, this);
+        mProfileEnabler = new LineageBaseSystemSettingSwitchBar(activity, activity.getSwitchBar(),
+                LineageSettings.System.SYSTEM_PROFILES_ENABLED, true, this);
     }
 
     @Override
@@ -233,8 +233,8 @@
     private void updateProfilesEnabledState() {
         Activity activity = getActivity();
 
-        mEnabled = CMSettings.System.getInt(activity.getContentResolver(),
-                CMSettings.System.SYSTEM_PROFILES_ENABLED, 1) == 1;
+        mEnabled = LineageSettings.System.getInt(activity.getContentResolver(),
+                LineageSettings.System.SYSTEM_PROFILES_ENABLED, 1) == 1;
         activity.invalidateOptionsMenu();
 
         getFloatingActionButton().setVisibility(mEnabled ? View.VISIBLE : View.GONE);
diff --git a/src/org/lineageos/lineageparts/profiles/SetupActionsFragment.java b/src/org/lineageos/lineageparts/profiles/SetupActionsFragment.java
index 7c99ede..0a430f1 100644
--- a/src/org/lineageos/lineageparts/profiles/SetupActionsFragment.java
+++ b/src/org/lineageos/lineageparts/profiles/SetupActionsFragment.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.app.ActionBar;
 import android.app.Activity;
@@ -58,48 +58,48 @@
 import android.widget.SeekBar;
 import android.widget.TextView;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileGroup;
-import cyanogenmod.app.ProfileManager;
-import cyanogenmod.profiles.AirplaneModeSettings;
-import cyanogenmod.profiles.BrightnessSettings;
-import cyanogenmod.profiles.ConnectionSettings;
-import cyanogenmod.profiles.LockSettings;
-import cyanogenmod.profiles.RingModeSettings;
-import cyanogenmod.profiles.StreamSettings;
+import lineageos.app.Profile;
+import lineageos.app.ProfileGroup;
+import lineageos.app.ProfileManager;
+import lineageos.profiles.AirplaneModeSettings;
+import lineageos.profiles.BrightnessSettings;
+import lineageos.profiles.ConnectionSettings;
+import lineageos.profiles.LockSettings;
+import lineageos.profiles.RingModeSettings;
+import lineageos.profiles.StreamSettings;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.PartsActivity;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
-import org.cyanogenmod.cmparts.profiles.actions.item.AirplaneModeItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.AppGroupItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.BrightnessItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.ConnectionOverrideItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.DisabledItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.DozeModeItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.Header;
-import org.cyanogenmod.cmparts.profiles.actions.item.Item;
-import org.cyanogenmod.cmparts.profiles.actions.item.LockModeItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.NotificationLightModeItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.ProfileNameItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.RingModeItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.TriggerItem;
-import org.cyanogenmod.cmparts.profiles.actions.item.VolumeStreamItem;
-import org.cyanogenmod.cmparts.utils.DeviceUtils;
-import org.cyanogenmod.cmparts.utils.TelephonyUtils;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.PartsActivity;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.profiles.actions.item.AirplaneModeItem;
+import org.lineageos.lineageparts.profiles.actions.item.AppGroupItem;
+import org.lineageos.lineageparts.profiles.actions.item.BrightnessItem;
+import org.lineageos.lineageparts.profiles.actions.item.ConnectionOverrideItem;
+import org.lineageos.lineageparts.profiles.actions.item.DisabledItem;
+import org.lineageos.lineageparts.profiles.actions.item.DozeModeItem;
+import org.lineageos.lineageparts.profiles.actions.item.Header;
+import org.lineageos.lineageparts.profiles.actions.item.Item;
+import org.lineageos.lineageparts.profiles.actions.item.LockModeItem;
+import org.lineageos.lineageparts.profiles.actions.item.NotificationLightModeItem;
+import org.lineageos.lineageparts.profiles.actions.item.ProfileNameItem;
+import org.lineageos.lineageparts.profiles.actions.item.RingModeItem;
+import org.lineageos.lineageparts.profiles.actions.item.TriggerItem;
+import org.lineageos.lineageparts.profiles.actions.item.VolumeStreamItem;
+import org.lineageos.lineageparts.utils.DeviceUtils;
+import org.lineageos.lineageparts.utils.TelephonyUtils;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import static cyanogenmod.profiles.ConnectionSettings.PROFILE_CONNECTION_2G3G4G;
-import static cyanogenmod.profiles.ConnectionSettings.PROFILE_CONNECTION_BLUETOOTH;
-import static cyanogenmod.profiles.ConnectionSettings.PROFILE_CONNECTION_GPS;
-import static cyanogenmod.profiles.ConnectionSettings.PROFILE_CONNECTION_MOBILEDATA;
-import static cyanogenmod.profiles.ConnectionSettings.PROFILE_CONNECTION_NFC;
-import static cyanogenmod.profiles.ConnectionSettings.PROFILE_CONNECTION_SYNC;
-import static cyanogenmod.profiles.ConnectionSettings.PROFILE_CONNECTION_WIFI;
-import static cyanogenmod.profiles.ConnectionSettings.PROFILE_CONNECTION_WIFIAP;
+import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_2G3G4G;
+import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_BLUETOOTH;
+import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_GPS;
+import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_MOBILEDATA;
+import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_NFC;
+import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_SYNC;
+import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_WIFI;
+import static lineageos.profiles.ConnectionSettings.PROFILE_CONNECTION_WIFIAP;
 
 public class SetupActionsFragment extends SettingsPreferenceFragment
         implements AdapterView.OnItemClickListener {
@@ -775,7 +775,7 @@
 //            final ConnectionSettings setting = mProfile.getConnectionSettingWithSubId(subId);
 
             switch (selectedMode) {
-                case ConnectionOverrideItem.CM_MODE_SYSTEM_DEFAULT:
+                case ConnectionOverrideItem.Lineage_MODE_SYSTEM_DEFAULT:
                     setting.setOverride(false);
                     break;
                 default:
diff --git a/src/org/lineageos/lineageparts/profiles/SetupDefaultProfileReceiver.java b/src/org/lineageos/lineageparts/profiles/SetupDefaultProfileReceiver.java
index f26516b..3134105 100644
--- a/src/org/lineageos/lineageparts/profiles/SetupDefaultProfileReceiver.java
+++ b/src/org/lineageos/lineageparts/profiles/SetupDefaultProfileReceiver.java
@@ -13,15 +13,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileManager;
-import cyanogenmod.providers.CMSettings;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
+import lineageos.providers.LineageSettings;
 
 import java.util.UUID;
 
@@ -29,8 +29,8 @@
 
     @Override
     public void onReceive(Context context, Intent intent) {
-        if (CMSettings.System.getInt(context.getContentResolver(),
-                CMSettings.System.SYSTEM_PROFILES_ENABLED, 1) == 1) {
+        if (LineageSettings.System.getInt(context.getContentResolver(),
+                LineageSettings.System.SYSTEM_PROFILES_ENABLED, 1) == 1) {
             ProfileManager profileManager = ProfileManager.getInstance(context);
             Profile defaultProfile = profileManager.getProfile(
                     UUID.fromString("0230226d-0d05-494a-a9bd-d222a1117655"));
diff --git a/src/org/lineageos/lineageparts/profiles/SetupTriggersFragment.java b/src/org/lineageos/lineageparts/profiles/SetupTriggersFragment.java
index 238beac..109ac60 100644
--- a/src/org/lineageos/lineageparts/profiles/SetupTriggersFragment.java
+++ b/src/org/lineageos/lineageparts/profiles/SetupTriggersFragment.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.annotation.Nullable;
 import android.app.ActionBar;
@@ -28,13 +28,13 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileManager;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
-import org.cyanogenmod.cmparts.PartsActivity;
-import org.cyanogenmod.cmparts.profiles.triggers.NfcTriggerFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.PartsActivity;
+import org.lineageos.lineageparts.profiles.triggers.NfcTriggerFragment;
 
 public class SetupTriggersFragment extends SettingsPreferenceFragment {
 
diff --git a/src/org/lineageos/lineageparts/profiles/TriggerPagerAdapter.java b/src/org/lineageos/lineageparts/profiles/TriggerPagerAdapter.java
index 1e2b2d1..c952df7 100644
--- a/src/org/lineageos/lineageparts/profiles/TriggerPagerAdapter.java
+++ b/src/org/lineageos/lineageparts/profiles/TriggerPagerAdapter.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles;
+package org.lineageos.lineageparts.profiles;
 
 import android.app.Activity;
 import android.app.Fragment;
@@ -23,10 +23,10 @@
 import android.util.SparseArray;
 import android.view.ViewGroup;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.triggers.BluetoothTriggerFragment;
-import org.cyanogenmod.cmparts.profiles.triggers.NfcTriggerFragment;
-import org.cyanogenmod.cmparts.profiles.triggers.WifiTriggerFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.triggers.BluetoothTriggerFragment;
+import org.lineageos.lineageparts.profiles.triggers.NfcTriggerFragment;
+import org.lineageos.lineageparts.profiles.triggers.WifiTriggerFragment;
 import com.google.android.collect.Lists;
 
 import java.lang.ref.WeakReference;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/ItemListAdapter.java b/src/org/lineageos/lineageparts/profiles/actions/ItemListAdapter.java
index 3658a70..a38e398 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/ItemListAdapter.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/ItemListAdapter.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions;
+package org.lineageos.lineageparts.profiles.actions;
 
 import android.content.Context;
 import android.view.LayoutInflater;
@@ -21,7 +21,7 @@
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 
-import org.cyanogenmod.cmparts.profiles.actions.item.Item;
+import org.lineageos.lineageparts.profiles.actions.item.Item;
 
 import java.util.List;
 
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/AirplaneModeItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/AirplaneModeItem.java
index 94f06ec..3c9d2f0 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/AirplaneModeItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/AirplaneModeItem.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
-import cyanogenmod.profiles.AirplaneModeSettings;
+import lineageos.profiles.AirplaneModeSettings;
 
 public class AirplaneModeItem extends BaseItem {
     AirplaneModeSettings mSettings;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/AppGroupItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/AppGroupItem.java
index ce5cd64..a244f57 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/AppGroupItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/AppGroupItem.java
@@ -13,17 +13,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
 import android.app.NotificationGroup;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
 import java.util.UUID;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileGroup;
+import lineageos.app.Profile;
+import lineageos.app.ProfileGroup;
 
 public class AppGroupItem extends BaseItem {
     Profile mProfile;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/BaseItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/BaseItem.java
index 02988cf..de04a25 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/BaseItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/BaseItem.java
@@ -1,4 +1,4 @@
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
 import android.content.Context;
 import android.view.LayoutInflater;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/BrightnessItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/BrightnessItem.java
index b291058..c711044 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/BrightnessItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/BrightnessItem.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
-import cyanogenmod.profiles.BrightnessSettings;
+import lineageos.profiles.BrightnessSettings;
 
 public class BrightnessItem extends BaseItem {
     BrightnessSettings mSettings;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/ConnectionOverrideItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/ConnectionOverrideItem.java
index 302dd02..8aa3767 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/ConnectionOverrideItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/ConnectionOverrideItem.java
@@ -13,22 +13,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
 import android.content.Context;
 import android.telephony.SubscriptionManager;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
-import org.cyanogenmod.cmparts.utils.TelephonyUtils;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.utils.TelephonyUtils;
 
-import cyanogenmod.profiles.ConnectionSettings;
+import lineageos.profiles.ConnectionSettings;
 
 public class ConnectionOverrideItem extends BaseItem {
     int mConnectionId;
     ConnectionSettings mConnectionSettings;
 
-    public static final int CM_MODE_SYSTEM_DEFAULT = -1;
+    public static final int Lineage_MODE_SYSTEM_DEFAULT = -1;
 
     public ConnectionOverrideItem(int connectionId, ConnectionSettings settings) {
         mConnectionId = connectionId;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/DisabledItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/DisabledItem.java
index 60ced30..05f6e76 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/DisabledItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/DisabledItem.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
 public class DisabledItem extends BaseItem {
 
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/DozeModeItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/DozeModeItem.java
index 4cb8216..c341c6c 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/DozeModeItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/DozeModeItem.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
-import cyanogenmod.app.Profile;
+import lineageos.app.Profile;
 
 public class DozeModeItem extends BaseItem {
     Profile mProfile;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/Header.java b/src/org/lineageos/lineageparts/profiles/actions/item/Header.java
index c6fadb2..a69a097 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/Header.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/Header.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
 import android.view.LayoutInflater;
 import android.view.View;
@@ -21,7 +21,7 @@
 import android.widget.TextView;
 
 import android.support.v14.preference.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
 public class Header implements Item {
     private final String name;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/Item.java b/src/org/lineageos/lineageparts/profiles/actions/item/Item.java
index 7016299..722ccfd 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/Item.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/Item.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
 public interface Item {
     public ItemListAdapter.RowType getRowType();
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/LockModeItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/LockModeItem.java
index 774e150..9b742f1 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/LockModeItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/LockModeItem.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
-import cyanogenmod.app.Profile;
+import lineageos.app.Profile;
 
 public class LockModeItem extends BaseItem {
     Profile mProfile;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/NotificationLightModeItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/NotificationLightModeItem.java
index 910635f..2dfb59b 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/NotificationLightModeItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/NotificationLightModeItem.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
-import cyanogenmod.app.Profile;
+import lineageos.app.Profile;
 
 public class NotificationLightModeItem extends BaseItem {
     Profile mProfile;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/ProfileNameItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/ProfileNameItem.java
index 4698666..57e3f76 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/ProfileNameItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/ProfileNameItem.java
@@ -13,11 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
-import cyanogenmod.app.Profile;
+import lineageos.app.Profile;
 
 public class ProfileNameItem extends BaseItem {
     Profile mProfile;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/RingModeItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/RingModeItem.java
index be83f24..3078f60 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/RingModeItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/RingModeItem.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
-import cyanogenmod.profiles.RingModeSettings;
+import lineageos.profiles.RingModeSettings;
 
 public class RingModeItem extends BaseItem {
     RingModeSettings mSettings;
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/TriggerItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/TriggerItem.java
index 35ef675..bc0e362 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/TriggerItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/TriggerItem.java
@@ -13,14 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
 import java.util.ArrayList;
 
-import cyanogenmod.app.Profile;
+import lineageos.app.Profile;
 
 public class TriggerItem extends BaseItem {
 
diff --git a/src/org/lineageos/lineageparts/profiles/actions/item/VolumeStreamItem.java b/src/org/lineageos/lineageparts/profiles/actions/item/VolumeStreamItem.java
index 2852d66..9f56414 100644
--- a/src/org/lineageos/lineageparts/profiles/actions/item/VolumeStreamItem.java
+++ b/src/org/lineageos/lineageparts/profiles/actions/item/VolumeStreamItem.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.actions.item;
+package org.lineageos.lineageparts.profiles.actions.item;
 
 import android.content.Context;
 import android.media.AudioManager;
@@ -22,10 +22,10 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.actions.ItemListAdapter;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.actions.ItemListAdapter;
 
-import cyanogenmod.profiles.StreamSettings;
+import lineageos.profiles.StreamSettings;
 
 public class VolumeStreamItem extends BaseItem {
     private int mStreamId;
diff --git a/src/org/lineageos/lineageparts/profiles/triggers/AbstractTriggerItem.java b/src/org/lineageos/lineageparts/profiles/triggers/AbstractTriggerItem.java
index 3b95831..d7b817b 100644
--- a/src/org/lineageos/lineageparts/profiles/triggers/AbstractTriggerItem.java
+++ b/src/org/lineageos/lineageparts/profiles/triggers/AbstractTriggerItem.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.triggers;
+package org.lineageos.lineageparts.profiles.triggers;
 
-import cyanogenmod.app.Profile;
+import lineageos.app.Profile;
 
 public class AbstractTriggerItem {
     private int mIcon;
diff --git a/src/org/lineageos/lineageparts/profiles/triggers/BluetoothTriggerFragment.java b/src/org/lineageos/lineageparts/profiles/triggers/BluetoothTriggerFragment.java
index fb72fd7..0bd83f5 100644
--- a/src/org/lineageos/lineageparts/profiles/triggers/BluetoothTriggerFragment.java
+++ b/src/org/lineageos/lineageparts/profiles/triggers/BluetoothTriggerFragment.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.triggers;
+package org.lineageos.lineageparts.profiles.triggers;
 
 import android.app.AlertDialog;
 import android.app.ListFragment;
@@ -34,11 +34,11 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileManager;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.ProfilesSettings;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.ProfilesSettings;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/org/lineageos/lineageparts/profiles/triggers/NfcTriggerFragment.java b/src/org/lineageos/lineageparts/profiles/triggers/NfcTriggerFragment.java
index c8709fe..adb684c 100644
--- a/src/org/lineageos/lineageparts/profiles/triggers/NfcTriggerFragment.java
+++ b/src/org/lineageos/lineageparts/profiles/triggers/NfcTriggerFragment.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.triggers;
+package org.lineageos.lineageparts.profiles.triggers;
 
 import android.app.Fragment;
 import android.app.PendingIntent;
@@ -28,13 +28,13 @@
 import android.view.ViewGroup;
 import android.widget.Toast;
 
-import cyanogenmod.app.Profile;
+import lineageos.app.Profile;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.PartsActivity;
-import org.cyanogenmod.cmparts.profiles.NFCProfileTagCallback;
-import org.cyanogenmod.cmparts.profiles.NFCProfileUtils;
-import org.cyanogenmod.cmparts.profiles.ProfilesSettings;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.PartsActivity;
+import org.lineageos.lineageparts.profiles.NFCProfileTagCallback;
+import org.lineageos.lineageparts.profiles.NFCProfileUtils;
+import org.lineageos.lineageparts.profiles.ProfilesSettings;
 
 public class NfcTriggerFragment extends Fragment implements NFCProfileTagCallback {
     Profile mProfile;
diff --git a/src/org/lineageos/lineageparts/profiles/triggers/WifiTriggerFragment.java b/src/org/lineageos/lineageparts/profiles/triggers/WifiTriggerFragment.java
index f9603d9..9d5ad38 100644
--- a/src/org/lineageos/lineageparts/profiles/triggers/WifiTriggerFragment.java
+++ b/src/org/lineageos/lineageparts/profiles/triggers/WifiTriggerFragment.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.profiles.triggers;
+package org.lineageos.lineageparts.profiles.triggers;
 
 import android.app.AlertDialog;
 import android.app.ListFragment;
@@ -33,11 +33,11 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
-import cyanogenmod.app.Profile;
-import cyanogenmod.app.ProfileManager;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.profiles.ProfilesSettings;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.profiles.ProfilesSettings;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/org/lineageos/lineageparts/search/BaseSearchIndexProvider.java b/src/org/lineageos/lineageparts/search/BaseSearchIndexProvider.java
index 56df441..70d3c6e 100644
--- a/src/org/lineageos/lineageparts/search/BaseSearchIndexProvider.java
+++ b/src/org/lineageos/lineageparts/search/BaseSearchIndexProvider.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.search;
+package org.lineageos.lineageparts.search;
 
 import android.content.Context;
 
diff --git a/src/org/lineageos/lineageparts/search/LineagePartsSearchIndexablesProvider.java b/src/org/lineageos/lineageparts/search/LineagePartsSearchIndexablesProvider.java
index 4537e32..b7de5a4 100644
--- a/src/org/lineageos/lineageparts/search/LineagePartsSearchIndexablesProvider.java
+++ b/src/org/lineageos/lineageparts/search/LineagePartsSearchIndexablesProvider.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.search;
+package org.lineageos.lineageparts.search;
 
 import android.database.Cursor;
 import android.database.MatrixCursor;
@@ -21,10 +21,10 @@
 import android.util.ArraySet;
 import android.util.Log;
 
-import org.cyanogenmod.cmparts.search.Searchable.SearchIndexProvider;
-import org.cyanogenmod.internal.cmparts.PartInfo;
-import org.cyanogenmod.internal.cmparts.PartsList;
-import org.cyanogenmod.platform.internal.R;
+import org.lineageos.lineageparts.search.Searchable.SearchIndexProvider;
+import org.lineageos.internal.lineageparts.PartInfo;
+import org.lineageos.internal.lineageparts.PartsList;
+import org.lineageos.platform.internal.R;
 
 import java.lang.reflect.Field;
 import java.util.Collections;
@@ -54,14 +54,14 @@
 import static android.provider.SearchIndexablesContract.INDEXABLES_RAW_COLUMNS;
 import static android.provider.SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS;
 import static android.provider.SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS;
-import static org.cyanogenmod.internal.cmparts.PartsList.CMPARTS_ACTIVITY;
+import static org.lineageos.internal.lineageparts.PartsList.LINEAGEPARTS_ACTIVITY;
 
 /**
  * Provides search metadata to the Settings app
  */
-public class CMPartsSearchIndexablesProvider extends SearchIndexablesProvider {
+public class LineagePartsSearchIndexablesProvider extends SearchIndexablesProvider {
 
-    private static final String TAG = CMPartsSearchIndexablesProvider.class.getSimpleName();
+    private static final String TAG = LineagePartsSearchIndexablesProvider.class.getSimpleName();
 
     private static final String FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER =
             "SEARCH_INDEX_DATA_PROVIDER";
@@ -83,10 +83,10 @@
             ref[COLUMN_INDEX_XML_RES_RANK] = 2;
             ref[COLUMN_INDEX_XML_RES_RESID] = i.getXmlRes();
             ref[COLUMN_INDEX_XML_RES_CLASS_NAME] = null;
-            ref[COLUMN_INDEX_XML_RES_ICON_RESID] = R.drawable.ic_launcher_cyanogenmod;
+            ref[COLUMN_INDEX_XML_RES_ICON_RESID] = R.drawable.ic_launcher_lineageos;
             ref[COLUMN_INDEX_XML_RES_INTENT_ACTION] = i.getAction();
-            ref[COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE] = CMPARTS_ACTIVITY.getPackageName();
-            ref[COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS] = CMPARTS_ACTIVITY.getClassName();
+            ref[COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE] = LINEAGEPARTS_ACTIVITY.getPackageName();
+            ref[COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS] = LINEAGEPARTS_ACTIVITY.getClassName();
             cursor.addRow(ref);
         }
         return cursor;
@@ -134,13 +134,13 @@
                 ref[COLUMN_INDEX_RAW_SCREEN_TITLE] = raw.screenTitle != null ?
                         raw.screenTitle : i.getTitle();
                 ref[COLUMN_INDEX_RAW_ICON_RESID] = raw.iconResId > 0 ? raw.iconResId :
-                        (i.getIconRes() > 0 ? i.getIconRes() : R.drawable.ic_launcher_cyanogenmod);
+                        (i.getIconRes() > 0 ? i.getIconRes() : R.drawable.ic_launcher_lineageos);
                 ref[COLUMN_INDEX_RAW_INTENT_ACTION] = raw.intentAction != null ?
                         raw.intentAction : i.getAction();
                 ref[COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE] = raw.intentTargetPackage != null ?
-                        raw.intentTargetPackage : CMPARTS_ACTIVITY.getPackageName();
+                        raw.intentTargetPackage : LINEAGEPARTS_ACTIVITY.getPackageName();
                 ref[COLUMN_INDEX_RAW_INTENT_TARGET_CLASS] = raw.intentTargetClass != null ?
-                        raw.intentTargetClass : CMPARTS_ACTIVITY.getClassName();
+                        raw.intentTargetClass : LINEAGEPARTS_ACTIVITY.getClassName();
                 ref[COLUMN_INDEX_RAW_KEY] = raw.key != null ?
                         raw.key : i.getName();
                 ref[COLUMN_INDEX_RAW_USER_ID] = -1;
diff --git a/src/org/lineageos/lineageparts/search/SearchIndexableRaw.java b/src/org/lineageos/lineageparts/search/SearchIndexableRaw.java
index ce52bc0..3d7e36d 100644
--- a/src/org/lineageos/lineageparts/search/SearchIndexableRaw.java
+++ b/src/org/lineageos/lineageparts/search/SearchIndexableRaw.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.search;
+package org.lineageos.lineageparts.search;
 
 import android.content.Context;
 import android.provider.SearchIndexableData;
diff --git a/src/org/lineageos/lineageparts/search/Searchable.java b/src/org/lineageos/lineageparts/search/Searchable.java
index 8aa14ae..03b27c8 100644
--- a/src/org/lineageos/lineageparts/search/Searchable.java
+++ b/src/org/lineageos/lineageparts/search/Searchable.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.search;
+package org.lineageos.lineageparts.search;
 
 import android.content.Context;
 
diff --git a/src/org/lineageos/lineageparts/sounds/ChargingSoundsSettings.java b/src/org/lineageos/lineageparts/sounds/ChargingSoundsSettings.java
index 630a22c..33bc4d1 100644
--- a/src/org/lineageos/lineageparts/sounds/ChargingSoundsSettings.java
+++ b/src/org/lineageos/lineageparts/sounds/ChargingSoundsSettings.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.sounds;
+package org.lineageos.lineageparts.sounds;
 
 import android.app.Activity;
 import android.content.Context;
@@ -28,10 +28,10 @@
 import android.provider.Settings;
 import android.support.v7.preference.Preference;
 
-import cyanogenmod.providers.CMSettings;
+import lineageos.providers.LineageSettings;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 public class ChargingSoundsSettings extends SettingsPreferenceFragment {
 
@@ -58,8 +58,8 @@
         }
 
         mChargingSoundsRingtone = findPreference(KEY_CHARGING_SOUNDS_RINGTONE);
-        String curTone = CMSettings.Global.getString(getContentResolver(),
-                CMSettings.Global.POWER_NOTIFICATIONS_RINGTONE);
+        String curTone = LineageSettings.Global.getString(getContentResolver(),
+                LineageSettings.Global.POWER_NOTIFICATIONS_RINGTONE);
         if (curTone == null) {
             updateChargingRingtone(Settings.System.DEFAULT_NOTIFICATION_URI.toString(), true);
         } else {
@@ -90,8 +90,8 @@
 
         mChargingSoundsRingtone.setSummary(toneName);
         if (persist) {
-            CMSettings.Global.putString(getContentResolver(),
-                    CMSettings.Global.POWER_NOTIFICATIONS_RINGTONE, toneUriString);
+            LineageSettings.Global.putString(getContentResolver(),
+                    LineageSettings.Global.POWER_NOTIFICATIONS_RINGTONE, toneUriString);
         }
     }
 
@@ -99,8 +99,8 @@
     public boolean onPreferenceTreeClick(Preference preference) {
         if (preference == mChargingSoundsRingtone) {
             launchNotificationSoundPicker(REQUEST_CODE_CHARGING_NOTIFICATIONS_RINGTONE,
-                    CMSettings.Global.getString(getContentResolver(),
-                    CMSettings.Global.POWER_NOTIFICATIONS_RINGTONE));
+                    LineageSettings.Global.getString(getContentResolver(),
+                    LineageSettings.Global.POWER_NOTIFICATIONS_RINGTONE));
         }
         return super.onPreferenceTreeClick(preference);
     }
diff --git a/src/org/lineageos/lineageparts/statusbar/StatusBarSettings.java b/src/org/lineageos/lineageparts/statusbar/StatusBarSettings.java
index 2d468c7..e662acd 100644
--- a/src/org/lineageos/lineageparts/statusbar/StatusBarSettings.java
+++ b/src/org/lineageos/lineageparts/statusbar/StatusBarSettings.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.statusbar;
+package org.lineageos.lineageparts.statusbar;
 
 import android.os.Bundle;
 import android.support.v7.preference.Preference;
@@ -22,10 +22,10 @@
 import android.text.format.DateFormat;
 import android.view.View;
 
-import cyanogenmod.preference.CMSystemSettingListPreference;
+import lineageos.preference.LineageSystemSettingListPreference;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 public class StatusBarSettings extends SettingsPreferenceFragment
         implements OnPreferenceChangeListener {
@@ -42,34 +42,34 @@
     private static final int PULLDOWN_DIR_RIGHT = 1;
     private static final int PULLDOWN_DIR_LEFT = 2;
 
-    private CMSystemSettingListPreference mQuickPulldown;
-    private CMSystemSettingListPreference mStatusBarClock;
-    private CMSystemSettingListPreference mStatusBarAmPm;
-    private CMSystemSettingListPreference mStatusBarBattery;
-    private CMSystemSettingListPreference mStatusBarBatteryShowPercent;
+    private LineageSystemSettingListPreference mQuickPulldown;
+    private LineageSystemSettingListPreference mStatusBarClock;
+    private LineageSystemSettingListPreference mStatusBarAmPm;
+    private LineageSystemSettingListPreference mStatusBarBattery;
+    private LineageSystemSettingListPreference mStatusBarBatteryShowPercent;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.status_bar_settings);
 
-        mStatusBarClock = (CMSystemSettingListPreference) findPreference(STATUS_BAR_CLOCK_STYLE);
+        mStatusBarClock = (LineageSystemSettingListPreference) findPreference(STATUS_BAR_CLOCK_STYLE);
         mStatusBarBatteryShowPercent =
-                (CMSystemSettingListPreference) findPreference(STATUS_BAR_SHOW_BATTERY_PERCENT);
+                (LineageSystemSettingListPreference) findPreference(STATUS_BAR_SHOW_BATTERY_PERCENT);
 
-        mStatusBarAmPm = (CMSystemSettingListPreference) findPreference(STATUS_BAR_AM_PM);
+        mStatusBarAmPm = (LineageSystemSettingListPreference) findPreference(STATUS_BAR_AM_PM);
         if (DateFormat.is24HourFormat(getActivity())) {
             mStatusBarAmPm.setEnabled(false);
             mStatusBarAmPm.setSummary(R.string.status_bar_am_pm_info);
         }
 
         mStatusBarBattery =
-                (CMSystemSettingListPreference) findPreference(STATUS_BAR_BATTERY_STYLE);
+                (LineageSystemSettingListPreference) findPreference(STATUS_BAR_BATTERY_STYLE);
         mStatusBarBattery.setOnPreferenceChangeListener(this);
         enableStatusBarBatteryDependents(mStatusBarBattery.getIntValue(2));
 
         mQuickPulldown =
-                (CMSystemSettingListPreference) findPreference(STATUS_BAR_QUICK_QS_PULLDOWN);
+                (LineageSystemSettingListPreference) findPreference(STATUS_BAR_QUICK_QS_PULLDOWN);
         mQuickPulldown.setOnPreferenceChangeListener(this);
         updateQuickPulldownSummary(mQuickPulldown.getIntValue(0));
     }
diff --git a/src/org/lineageos/lineageparts/utils/DeviceUtils.java b/src/org/lineageos/lineageparts/utils/DeviceUtils.java
index 1930312..7601215 100644
--- a/src/org/lineageos/lineageparts/utils/DeviceUtils.java
+++ b/src/org/lineageos/lineageparts/utils/DeviceUtils.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.utils;
+package org.lineageos.lineageparts.utils;
 
 import android.app.Activity;
 import android.bluetooth.BluetoothAdapter;
@@ -31,7 +31,7 @@
 import android.text.TextUtils;
 import android.view.Surface;
 
-import org.cyanogenmod.cmparts.input.ButtonSettings;
+import org.lineageos.lineageparts.input.ButtonSettings;
 
 public class DeviceUtils {
 
diff --git a/src/org/lineageos/lineageparts/utils/ResourceUtils.java b/src/org/lineageos/lineageparts/utils/ResourceUtils.java
index 85ea311..ec077af 100644
--- a/src/org/lineageos/lineageparts/utils/ResourceUtils.java
+++ b/src/org/lineageos/lineageparts/utils/ResourceUtils.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.utils;
+package org.lineageos.lineageparts.utils;
 
 import android.content.res.Resources;
 import android.util.Log;
@@ -33,7 +33,7 @@
     public static String getStringForResourceName(final Resources res,
                                                   final String resourceName,
                                                   final String defaultValue) {
-        final int resId = res.getIdentifier(resourceName, "string", "org.cyanogenmod.cmparts");
+        final int resId = res.getIdentifier(resourceName, "string", "org.lineageos.lineageparts");
         if (resId <= 0) {
             Log.e(TAG, "No resource found for " + resourceName);
             return defaultValue;
diff --git a/src/org/lineageos/lineageparts/utils/TelephonyUtils.java b/src/org/lineageos/lineageparts/utils/TelephonyUtils.java
index dd89121..e1a4b35 100644
--- a/src/org/lineageos/lineageparts/utils/TelephonyUtils.java
+++ b/src/org/lineageos/lineageparts/utils/TelephonyUtils.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.utils;
+package org.lineageos.lineageparts.utils;
 
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -37,7 +37,7 @@
 
     // from MobileNetworkSettings
     public static final String ACTION_PICK_NETWORK_MODE =
-            "cyanogenmod.platform.intent.action.NETWORK_MODE_PICKER";
+            "lineageos.platform.intent.action.NETWORK_MODE_PICKER";
     public static final String EXTRA_NONE_TEXT = "network_mode_picker::neutral_text";
     public static final String EXTRA_SHOW_NONE = "network_mode_picker::show_none";
     public static final String EXTRA_INITIAL_NETWORK_VALUE = "network_mode_picker::selected_mode";
diff --git a/src/org/lineageos/lineageparts/weather/WeatherServiceSettings.java b/src/org/lineageos/lineageparts/weather/WeatherServiceSettings.java
index ba0cbdb..58532e2 100644
--- a/src/org/lineageos/lineageparts/weather/WeatherServiceSettings.java
+++ b/src/org/lineageos/lineageparts/weather/WeatherServiceSettings.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.weather;
+package org.lineageos.lineageparts.weather;
 
 import android.app.Activity;
 import android.content.ActivityNotFoundException;
@@ -50,8 +50,8 @@
 import com.android.internal.content.PackageMonitor;
 import com.android.internal.os.BackgroundThread;
 
-import org.cyanogenmod.cmparts.R;
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.R;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -60,9 +60,9 @@
 import java.util.List;
 import java.util.Locale;
 
-import cyanogenmod.providers.CMSettings;
-import cyanogenmod.providers.WeatherContract;
-import cyanogenmod.weatherservice.WeatherProviderService;
+import lineageos.providers.LineageSettings;
+import lineageos.providers.WeatherContract;
+import lineageos.weatherservice.WeatherProviderService;
 
 public class WeatherServiceSettings extends SettingsPreferenceFragment
         implements Preference.OnPreferenceChangeListener {
@@ -99,7 +99,7 @@
         mTemperatureUnit = (ListPreference) ps.findPreference(PREFERENCE_TEMP_UNIT);
         mTemperatureUnit.setOnPreferenceChangeListener(this);
 
-        watch(CMSettings.Secure.getUriFor(CMSettings.Secure.WEATHER_PROVIDER_SERVICE));
+        watch(LineageSettings.Secure.getUriFor(LineageSettings.Secure.WEATHER_PROVIDER_SERVICE));
     }
 
     @Override
@@ -120,8 +120,8 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         if (preference == mTemperatureUnit) {
-            CMSettings.Global.putInt(mContext.getContentResolver(),
-                    CMSettings.Global.WEATHER_TEMPERATURE_UNIT,
+            LineageSettings.Global.putInt(mContext.getContentResolver(),
+                    LineageSettings.Global.WEATHER_TEMPERATURE_UNIT,
                     Integer.valueOf((String) newValue));
         }
         return true;
@@ -188,7 +188,7 @@
             }
 
             if (!resolveInfo.serviceInfo.permission.equals(
-                    cyanogenmod.platform.Manifest.permission.BIND_WEATHER_PROVIDER_SERVICE)) {
+                    lineageos.platform.Manifest.permission.BIND_WEATHER_PROVIDER_SERVICE)) {
                 continue;
             }
             WeatherProviderServiceInfo serviceInfo = new WeatherProviderServiceInfo();
@@ -247,8 +247,8 @@
      * If none is selected yet, returns a unit appropriate for the current locale
      */
     public static int getSelectedTemperatureUnit(Context context) {
-        int tempUnit = CMSettings.Global.getInt(context.getContentResolver(),
-                CMSettings.Global.WEATHER_TEMPERATURE_UNIT, -1);
+        int tempUnit = LineageSettings.Global.getInt(context.getContentResolver(),
+                LineageSettings.Global.WEATHER_TEMPERATURE_UNIT, -1);
         if (tempUnit != -1) {
             return tempUnit;
         }
@@ -353,8 +353,8 @@
             if (!mInfo.isActive) {
                 markAsActiveProvider();
                 mInfo.isActive = true;
-                CMSettings.Secure.putString(mContext.getContentResolver(),
-                        CMSettings.Secure.WEATHER_PROVIDER_SERVICE,
+                LineageSettings.Secure.putString(mContext.getContentResolver(),
+                        LineageSettings.Secure.WEATHER_PROVIDER_SERVICE,
                         mInfo.componentName.flattenToString());
             }
         }
@@ -435,8 +435,8 @@
     }
 
     private static ComponentName getEnabledWeatherServiceProvider(Context context) {
-        String activeWeatherServiceProvider = CMSettings.Secure.getString(
-                context.getContentResolver(), CMSettings.Secure.WEATHER_PROVIDER_SERVICE);
+        String activeWeatherServiceProvider = LineageSettings.Secure.getString(
+                context.getContentResolver(), LineageSettings.Secure.WEATHER_PROVIDER_SERVICE);
         if (activeWeatherServiceProvider == null) return null;
         return ComponentName.unflattenFromString(activeWeatherServiceProvider);
     }
@@ -478,7 +478,7 @@
             if (infos != null && infos.size() > 0) {
                 for (WeatherProviderServiceInfo info : infos) {
                     if (info.isActive) {
-                        Log.d(TAG, "cmparts: found active provider: " + info.caption);
+                        Log.d(TAG, "lineageparts: found active provider: " + info.caption);
                         return String.valueOf(info.caption);
                     }
                 }
diff --git a/src/org/lineageos/lineageparts/widget/CustomDialogPreference.java b/src/org/lineageos/lineageparts/widget/CustomDialogPreference.java
index f32b7dd..ad0ffb1 100644
--- a/src/org/lineageos/lineageparts/widget/CustomDialogPreference.java
+++ b/src/org/lineageos/lineageparts/widget/CustomDialogPreference.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.app.AlertDialog;
 import android.app.Dialog;
diff --git a/src/org/lineageos/lineageparts/widget/DialogCreatable.java b/src/org/lineageos/lineageparts/widget/DialogCreatable.java
index a871547..31fc350 100644
--- a/src/org/lineageos/lineageparts/widget/DialogCreatable.java
+++ b/src/org/lineageos/lineageparts/widget/DialogCreatable.java
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.app.Dialog;
 
-import org.cyanogenmod.cmparts.SettingsPreferenceFragment;
+import org.lineageos.lineageparts.SettingsPreferenceFragment;
 
 /**
  * Letting the class, assumed to be Fragment, create a Dialog on it. Should be useful
diff --git a/src/org/lineageos/lineageparts/widget/DividerPreference.java b/src/org/lineageos/lineageparts/widget/DividerPreference.java
index 169d2a5..97c051f 100644
--- a/src/org/lineageos/lineageparts/widget/DividerPreference.java
+++ b/src/org/lineageos/lineageparts/widget/DividerPreference.java
@@ -12,7 +12,7 @@
  * permissions and limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -20,7 +20,7 @@
 import android.support.v7.preference.PreferenceViewHolder;
 import android.util.AttributeSet;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 public class DividerPreference extends Preference {
 
diff --git a/src/org/lineageos/lineageparts/widget/FloatingActionButton.java b/src/org/lineageos/lineageparts/widget/FloatingActionButton.java
index 8c8cd26..ac2f561 100644
--- a/src/org/lineageos/lineageparts/widget/FloatingActionButton.java
+++ b/src/org/lineageos/lineageparts/widget/FloatingActionButton.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.animation.AnimatorInflater;
 import android.content.Context;
@@ -24,7 +24,7 @@
 import android.view.ViewOutlineProvider;
 import android.widget.ImageView;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 public class FloatingActionButton extends ImageView {
 
diff --git a/src/org/lineageos/lineageparts/widget/IntervalSeekBar.java b/src/org/lineageos/lineageparts/widget/IntervalSeekBar.java
index d4df86c..f33b81e 100644
--- a/src/org/lineageos/lineageparts/widget/IntervalSeekBar.java
+++ b/src/org/lineageos/lineageparts/widget/IntervalSeekBar.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.util.AttributeSet;
 import android.widget.SeekBar;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 /**
  * Custom SeekBar that allows setting both a minimum and maximum value.
diff --git a/src/org/lineageos/lineageparts/widget/LayoutPreference.java b/src/org/lineageos/lineageparts/widget/LayoutPreference.java
index f6f339b..a897988 100644
--- a/src/org/lineageos/lineageparts/widget/LayoutPreference.java
+++ b/src/org/lineageos/lineageparts/widget/LayoutPreference.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.content.res.Resources;
@@ -27,7 +27,7 @@
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 public class LayoutPreference extends Preference {
 
diff --git a/src/org/lineageos/lineageparts/widget/LineageBaseSystemSettingSwitchBar.java b/src/org/lineageos/lineageparts/widget/LineageBaseSystemSettingSwitchBar.java
index 250d482..5b80ca6 100644
--- a/src/org/lineageos/lineageparts/widget/LineageBaseSystemSettingSwitchBar.java
+++ b/src/org/lineageos/lineageparts/widget/LineageBaseSystemSettingSwitchBar.java
@@ -14,16 +14,16 @@
 * limitations under the License.
 */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.net.Uri;
 import android.widget.Switch;
 
-import cyanogenmod.preference.SettingsHelper;
-import cyanogenmod.providers.CMSettings;
+import lineageos.preference.SettingsHelper;
+import lineageos.providers.LineageSettings;
 
-public class CMBaseSystemSettingSwitchBar implements SwitchBar.OnSwitchChangeListener,
+public class LineageBaseSystemSettingSwitchBar implements SwitchBar.OnSwitchChangeListener,
         SettingsHelper.OnSettingsChangeListener {
 
     private Context mContext;
@@ -40,7 +40,7 @@
         public void onEnablerChanged(boolean isEnabled);
     }
 
-    public CMBaseSystemSettingSwitchBar(Context context, SwitchBar switchBar, String key,
+    public LineageBaseSystemSettingSwitchBar(Context context, SwitchBar switchBar, String key,
                                       boolean defaultState, SwitchBarChangeCallback callback) {
         mContext = context;
         mSwitchBar = switchBar;
@@ -72,7 +72,7 @@
         if (!mListeningToOnSwitchChange) {
             mSwitchBar.addOnSwitchChangeListener(this);
             SettingsHelper.get(mContext).startWatching(
-                    this, CMSettings.System.getUriFor(mSettingKey));
+                    this, LineageSettings.System.getUriFor(mSettingKey));
 
             mListeningToOnSwitchChange = true;
         }
@@ -97,7 +97,7 @@
     }
 
     private void setSwitchState() {
-        boolean enabled = CMSettings.System.getInt(mContext.getContentResolver(),
+        boolean enabled = LineageSettings.System.getInt(mContext.getContentResolver(),
                 mSettingKey, mDefaultState) == 1;
         mStateMachineEvent = true;
         setSwitchBarChecked(enabled);
@@ -112,7 +112,7 @@
         }
 
         // Handle a switch change
-        CMSettings.System.putInt(mContext.getContentResolver(),
+        LineageSettings.System.putInt(mContext.getContentResolver(),
                 mSettingKey, isChecked ? 1 : 0);
 
         if (mCallback != null) {
diff --git a/src/org/lineageos/lineageparts/widget/PackageListAdapter.java b/src/org/lineageos/lineageparts/widget/PackageListAdapter.java
index fcc2684..4c3abf2 100644
--- a/src/org/lineageos/lineageparts/widget/PackageListAdapter.java
+++ b/src/org/lineageos/lineageparts/widget/PackageListAdapter.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.content.Intent;
@@ -32,7 +32,7 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 import java.util.Collections;
 import java.util.LinkedList;
diff --git a/src/org/lineageos/lineageparts/widget/RingtonePreference.java b/src/org/lineageos/lineageparts/widget/RingtonePreference.java
index 4203700..51e7655 100644
--- a/src/org/lineageos/lineageparts/widget/RingtonePreference.java
+++ b/src/org/lineageos/lineageparts/widget/RingtonePreference.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.content.Intent;
diff --git a/src/org/lineageos/lineageparts/widget/SeekBarPreference.java b/src/org/lineageos/lineageparts/widget/SeekBarPreference.java
index 17fdf68..270b71c 100644
--- a/src/org/lineageos/lineageparts/widget/SeekBarPreference.java
+++ b/src/org/lineageos/lineageparts/widget/SeekBarPreference.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -32,7 +32,7 @@
 
 import com.android.settingslib.RestrictedPreference;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 /**
  * Based on android.preference.SeekBarPreference, but uses support preference as base.
diff --git a/src/org/lineageos/lineageparts/widget/SwitchBar.java b/src/org/lineageos/lineageparts/widget/SwitchBar.java
index 2e5b1fb..ee09c05 100644
--- a/src/org/lineageos/lineageparts/widget/SwitchBar.java
+++ b/src/org/lineageos/lineageparts/widget/SwitchBar.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -32,7 +32,7 @@
 import android.widget.Switch;
 import android.widget.TextView;
 
-import org.cyanogenmod.cmparts.R;
+import org.lineageos.lineageparts.R;
 
 import java.util.ArrayList;
 
diff --git a/src/org/lineageos/lineageparts/widget/ToggleSwitch.java b/src/org/lineageos/lineageparts/widget/ToggleSwitch.java
index 0bde18f..765a90e 100644
--- a/src/org/lineageos/lineageparts/widget/ToggleSwitch.java
+++ b/src/org/lineageos/lineageparts/widget/ToggleSwitch.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.util.AttributeSet;
diff --git a/src/org/lineageos/lineageparts/widget/WallOfTextPreference.java b/src/org/lineageos/lineageparts/widget/WallOfTextPreference.java
index 58fe399..40ef2c7 100644
--- a/src/org/lineageos/lineageparts/widget/WallOfTextPreference.java
+++ b/src/org/lineageos/lineageparts/widget/WallOfTextPreference.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.cyanogenmod.cmparts.widget;
+package org.lineageos.lineageparts.widget;
 
 import android.content.Context;
 import android.support.v7.preference.PreferenceViewHolder;
