diff --git a/Android.bp b/Android.bp
index d3a7c51..8676f26 100644
--- a/Android.bp
+++ b/Android.bp
@@ -19,22 +19,6 @@
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
-filegroup {
-    name: "ThemePicker_srcs",
-    srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-    ],
-}
-
-filegroup {
-    name: "ThemePicker_src_overrides",
-    srcs: [
-        "src_override/**/*.java",
-        "src_override/**/*.kt",
-    ],
-}
-
 // Production-only files that should be excluded in tests.
 filegroup {
     name: "ThemePicker_src_prod",
@@ -42,6 +26,30 @@
     srcs: ["src_override/com/android/customization/picker/CustomizationPickerApplication.java"],
 }
 
+java_library {
+    name: "ThemePickerOverridesLib",
+    srcs: [
+        "src_override/**/*.java",
+        "src_override/**/*.kt",
+    ],
+    exclude_srcs: [":ThemePicker_src_prod"],
+    libs: [
+        "hilt_android",
+        "ThemePickerLib",
+    ],
+}
+
+java_library {
+    name: "ThemePickerApplicationLib",
+    srcs: [":ThemePicker_src_prod"],
+    libs: [
+        "hilt_android",
+        "ThemePickerLib",
+        "ThemePickerOverridesLib",
+    ],
+}
+
+
 filegroup {
     name: "ThemePicker_Manifest",
     srcs: [
@@ -49,39 +57,14 @@
     ],
 }
 
-genrule {
-    name: "ThemePicker_res",
-    tools: ["soong_zip"],
-    srcs: [
-        "res/**/*",
-    ],
-    out: ["ThemePicker_res.zip"],
-    cmd: "INPUTS=($(in)) && "
-        + "RES_DIR=$$(dirname $$(dirname $${INPUTS[0]})) && "
-        + "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
-}
-
-genrule {
-    name: "ThemePicker_res_overrides",
-    tools: ["soong_zip"],
-    srcs: [
-        "res_override/**/*",
-    ],
-    out: ["ThemePicker_res_overrides.zip"],
-    cmd: "INPUTS=($(in)) && "
-        + "RES_DIR=$$(dirname $$(dirname $${INPUTS[0]})) && "
-        + "$(location soong_zip) -o $(out) -C $$RES_DIR -D $$RES_DIR"
-}
-
-// Common defaults that doesn't have ThemePicker specifics.
-java_defaults {
-    name: "ThemePicker_common_defaults",
+android_library {
+    name: "ThemePickerLib",
 
     static_libs: [
         "guava",
         "monet",
-	    "renderscript_toolkit",
-        "wallpaper-common-deps",
+        "renderscript_toolkit",
+        "WallpaperPicker2Lib",
         "SettingsLibSettingsTheme",
         "SystemUI-statsd",
         "styleprotoslite",
@@ -93,21 +76,35 @@
         "hilt_android",
     ],
 
-    jni_libs: [
-        "librenderscript-toolkit",
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.kt",
     ],
 
-    srcs: [
-        ":WallpaperPicker2_srcs",
-        ":ThemePicker_srcs",
+    resource_dirs: [
+        "res",
+        "res_override",
+    ],
+
+    manifest: "AndroidManifest-empty.xml",
+}
+
+java_defaults {
+    name: "ThemePicker_defaults",
+    static_libs: [
+        "ThemePickerLib",
+        "ThemePickerOverridesLib",
+        "hilt_android",
+    ],
+
+    jni_libs: [
+        "librenderscript-toolkit",
     ],
 
     required: ["android.software.theme_picker.xml"],
 
     use_embedded_native_libs: true,
 
-    resource_zips: [":WallpaperPicker2_res", ":ThemePicker_res", ":ThemePicker_res_overrides"],
-
     optimize: {
         enabled: false,
     },
@@ -118,12 +115,6 @@
     system_ext_specific: true,
 }
 
-java_defaults {
-    name: "ThemePicker_defaults",
-    defaults: ["ThemePicker_common_defaults"],
-    srcs: [":ThemePicker_src_overrides"],
-}
-
 prebuilt_etc {
     name: "android.software.theme_picker.xml",
     system_ext_specific: true,
@@ -136,10 +127,12 @@
 //
 android_app {
     name: "ThemePicker",
+    package_name: "com.android.wallpaper",
     defaults: ["ThemePicker_defaults"],
 
     platform_apis: true,
     manifest: "AndroidManifest.xml",
     additional_manifests: [":WallpaperPicker2_Manifest"],
     overrides: ["WallpaperPicker", "WallpaperPicker2"],
+    static_libs: ["ThemePickerApplicationLib"],
 }
diff --git a/AndroidManifest-empty.xml b/AndroidManifest-empty.xml
new file mode 100644
index 0000000..e2b3605
--- /dev/null
+++ b/AndroidManifest-empty.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:tools="http://schemas.android.com/tools"
+          package="com.android.themepicker">
+</manifest>
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index b8126e5..6e5844d 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,7 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
+
+<!-- The package name here must match the Studio namespace given in
+     WallpaperPickerGoogle gradle config for Studio builds to succeed.
+     `package_name` in Android.bp overrides this with the actual package name.
+ -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
-          package="com.android.wallpaper">
+          package="com.google.android.apps.wallpaper">
 
     <uses-sdk android:targetSdkVersion="30" android:minSdkVersion="28"/>
 
@@ -15,6 +20,7 @@
     <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
     <uses-permission android:name="android.permission.READ_WALLPAPER_INTERNAL"/>
     <uses-permission android:name="android.permission.SET_WALLPAPER"/>
+    <uses-permission android:name="android.permission.SET_WALLPAPER_DIM_AMOUNT" />
 
     <queries>
         <package android:name="android"/>
diff --git a/android.software.theme_picker.xml b/android.software.theme_picker.xml
index 95d49f4..7e0de8a 100644
--- a/android.software.theme_picker.xml
+++ b/android.software.theme_picker.xml
@@ -24,5 +24,6 @@
         <permission name="android.permission.SET_WALLPAPER"/>
         <permission name="android.permission.SET_WALLPAPER_COMPONENT"/>
         <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
+        <permission name="android.permission.SET_WALLPAPER_DIM_AMOUNT"/>
     </privapp-permissions>
 </permissions>
diff --git a/res/drawable/saturation_progress_drawable.xml b/res/drawable/saturation_progress_drawable.xml
index 1461abe..3fe0bdc 100644
--- a/res/drawable/saturation_progress_drawable.xml
+++ b/res/drawable/saturation_progress_drawable.xml
@@ -24,7 +24,7 @@
             <shape>
                 <size android:height="4dp" />
                 <corners android:radius="2dp" />
-                <solid android:color="@color/system_outline_variant" />
+                <solid android:color="@color/system_outline" />
             </shape>
         </inset>
     </item>
diff --git a/res/layout/fragment_grid.xml b/res/layout/fragment_grid.xml
index f022268..e77da57 100644
--- a/res/layout/fragment_grid.xml
+++ b/res/layout/fragment_grid.xml
@@ -33,9 +33,11 @@
     <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
         android:layout_width="match_parent"
         android:layout_height="0dp"
+        android:layout_marginHorizontal="24dp"
         android:layout_weight="1"
+        android:paddingBottom="40dp"
         android:paddingTop="20dp"
-        android:paddingBottom="40dp">
+        android:clipChildren="false">
 
         <include
             android:id="@+id/preview"
diff --git a/res/layout/notification_section.xml b/res/layout/notification_section.xml
index 3e29a4e..22c676e 100644
--- a/res/layout/notification_section.xml
+++ b/res/layout/notification_section.xml
@@ -33,6 +33,7 @@
         android:layout_weight="1"
         android:layout_gravity="center"
         android:text="@string/show_notifications_on_lock_screen"
+        android:paddingEnd="@dimen/notification_section_title_padding"
         style="@style/SectionTitleTextStyle"/>
 
     <Switch
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index f6ba1f8..75d177a 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -23,8 +23,8 @@
     <string name="clock_description" msgid="3563839327378948">"Kies gepasmaakte horlosie"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Verander ’n gepasmaakte horlosie"</string>
     <string name="select_clock_action_description" msgid="5025888763471843648">"Horlosieskermopsie <xliff:g id="ID_1">%1$s</xliff:g>"</string>
-    <string name="clock_settings_title" msgid="2050906379377120431">"Horlosiekleur en grootte"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Horlosiekleur en grootte"</string>
+    <string name="clock_settings_title" msgid="2050906379377120431">"Horlosiekleur en -grootte"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Horlosiekleur en -grootte"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Kleur"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Rooi"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 86670d7..26899b0 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -38,10 +38,10 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"أزرق مخضرّ"</string>
     <string name="clock_size" msgid="5028923902364418263">"الحجم"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"ديناميكي"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"يتغير حجم الساعة وفقًا للمحتوى على شاشة القفل."</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"يتغير حجم الساعة وفقًا للمحتوى على شاشة القفل"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"كبير"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"صغير"</string>
-    <string name="clock_size_small_description" msgid="4089511196955732480">"تظهر ساعة صغيرة في زاوية الشاشة."</string>
+    <string name="clock_size_small_description" msgid="4089511196955732480">"تظهر ساعة صغيرة في زاوية الشاشة"</string>
     <string name="grid_title" msgid="1688173478777254123">"شبكة التطبيقات"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"تطبيق"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"انقُر للتعديل."</string>
@@ -111,11 +111,11 @@
     <string name="beta_title" msgid="8703819523760746458">"تجريبي"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"تغيير شبكة التطبيقات"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"ألوان الخلفية"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"تتطابق الأيقونات والنصوص والمزيد مع الألوان في الخلفية."</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"تتطابق الأيقونات والنصوص والمزيد مع الألوان في الخلفية"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"لون الخلفية"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"الألوان الأساسية"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"ألوان أخرى"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"اختَر أي لون للرموز والساعة وغير ذلك."</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"اختَر أي لون للرموز والساعة وغير ذلك"</string>
     <string name="color_changed" msgid="7029571720331641235">"تم تغيير اللون."</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"ألوان ديناميكية"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"ألوان النظام"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index fc1ff2f..da75f4d 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -111,7 +111,7 @@
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Promjena mreže aplikacije"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Boje pozadinske slike"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikone, tekst i drugo odgovaraju bojama pozadinske slike"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikone, tekst i drugo odgovara bojama pozadinske slike"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Boja pozadinske slike"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Osnovne boje"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Druge boje"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 4eb0eb4..da17365 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -111,7 +111,7 @@
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Změnit mřížku aplikací"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Barvy tapety"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikony, text atd. odpovídají barvami vaší tapetě"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikony, text a další prvky jsou barevně sladěné s vaší tapetou"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Barva tapety"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Základní barvy"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Další barvy"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 4319b93..4392fb8 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -64,7 +64,7 @@
     <string name="preview_name_shape" msgid="5676971146080968721">"Form"</string>
     <string name="preview_name_wallpaper" msgid="1738652462949531828">"Baggrund"</string>
     <string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
-    <string name="font_card_body" msgid="6790525594503904468">"Føj dine foretrukne skrifttyper til alle skærmbilleder"</string>
+    <string name="font_card_body" msgid="6790525594503904468">"Føj dine foretrukne skrifttyper til alle skærme"</string>
     <string name="grid_options_title" msgid="7071930966989877023">"Vælg gitterstørrelse"</string>
     <string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
     <string name="apply_grid_btn_note" msgid="2966021967355139181">"Når du ændrer gitterstørrelsen genindlæses arbejdsområdet, hvilket kan tage et par sekunder."</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 09e70ec..47ea22e 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -17,14 +17,14 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="1647136562008520313">"Hintergrund und Stil"</string>
+    <string name="app_name" msgid="1647136562008520313">"Hintergrund &amp; Stil"</string>
     <string name="theme_title" msgid="2144932106319405101">"Design"</string>
     <string name="clock_title" msgid="1974314575211361352">"Benutzerdefinierte Uhr"</string>
     <string name="clock_description" msgid="3563839327378948">"Benutzerdefinierte Uhr wählen"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Benutzerdefinierte Uhr ändern"</string>
     <string name="select_clock_action_description" msgid="5025888763471843648">"Zifferblatt-Option <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="clock_settings_title" msgid="2050906379377120431">"Uhr-Farbe &amp; -Größe"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Uhr-Farbe &amp; -Größe"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Uhr-Farbe und -Größe"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Farbe"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Rot"</string>
@@ -115,7 +115,7 @@
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Hintergrundfarbe"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Standardfarben"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Andere Farben"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"Beliebige Farbe für Symbole, Uhr und mehr auswählen"</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"Farbe für Symbole, Uhr und mehr auswählen"</string>
     <string name="color_changed" msgid="7029571720331641235">"Farbe geändert"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Dynamisch"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Systemfarben"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 8e6ddfd..1ff32ad 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -42,7 +42,7 @@
     <string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Pequeño"</string>
     <string name="clock_size_small_description" msgid="4089511196955732480">"Aparece un reloj pequeño en la esquina de tu pantalla"</string>
-    <string name="grid_title" msgid="1688173478777254123">"Cuadr. de apps"</string>
+    <string name="grid_title" msgid="1688173478777254123">"Cuadrícula de apps"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Aplicar"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Presiona para editar"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"Conservar fondo de pantalla actual"</string>
@@ -122,7 +122,7 @@
     <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Acceso izquierdo"</string>
     <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Acceso derecho"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"Ninguno"</string>
-    <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"No se puede agregar el acceso directo"</string>
+    <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"No se puede agregar"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para agregar la app <xliff:g id="APPNAME">%1$s</xliff:g> como acceso directo, asegúrate que se cumplan los siguientes requisitos:"</string>
     <string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Listo"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 6e58709..ced8e8d 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -122,7 +122,7 @@
     <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Acceso izquierdo"</string>
     <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Acceso derecho"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"Ninguno"</string>
-    <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"No puede añadir el acceso directo"</string>
+    <string name="keyguard_affordance_enablement_dialog_headline" msgid="365379085932610314">"Acceso directo no añadido"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para añadir la aplicación <xliff:g id="APPNAME">%1$s</xliff:g> como acceso directo:"</string>
     <string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Hecho"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 0dd9e4b..9bf7642 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -107,7 +107,7 @@
     <string name="mode_title" msgid="2394873501427436055">"زمینه تیره"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"به‌دلیل روشن بودن «بهینه‌سازی باتری» موقتاً غیرفعال شده است"</string>
     <string name="mode_changed" msgid="2243581369395418584">"زمینه تغییر کرد"</string>
-    <string name="themed_icon_title" msgid="7312460430471956558">"نمادهای دارای زمینه"</string>
+    <string name="themed_icon_title" msgid="7312460430471956558">"نمادهای موضوعی"</string>
     <string name="beta_title" msgid="8703819523760746458">"بتا"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"تغییر جدول برنامه"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"رنگ‌های کاغذدیواری"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 1d58aa6..5c5b720 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -41,7 +41,7 @@
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"La taille de l\'horloge change selon le contenu de l\'écran de verrouillage"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Petite"</string>
-    <string name="clock_size_small_description" msgid="4089511196955732480">"Une petite horloge s\'affiche dans le coin de votre écran."</string>
+    <string name="clock_size_small_description" msgid="4089511196955732480">"Une petite horloge s\'affiche dans le coin de votre écran"</string>
     <string name="grid_title" msgid="1688173478777254123">"Grille d\'applis"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Appliquer"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Appuyer pour modifier"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 65fcf7e..be31e65 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -38,11 +38,11 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"Tirkiznoplava"</string>
     <string name="clock_size" msgid="5028923902364418263">"Veličina"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamičan"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Veličina sata mijenja se u skladu sa sadržajem zaključanog zaslona"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Veličina sata mijenja se u skladu sa sadržajem na zaključanom zaslonu"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Velik"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Mali"</string>
     <string name="clock_size_small_description" msgid="4089511196955732480">"U kutu zaslona prikazuje se mali sat"</string>
-    <string name="grid_title" msgid="1688173478777254123">"Rešetka aplik."</string>
+    <string name="grid_title" msgid="1688173478777254123">"Rešetka aplikacija"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Primijeni"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Dodirnite da biste uredili"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"Zadrži trenutačnu pozadinu"</string>
@@ -130,7 +130,7 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Prečaci"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ništa"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaz obavijesti na zaključanom zaslonu"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaži obavijesti na zaključanom zaslonu"</string>
     <string name="more_settings_section_title" msgid="1331425454775815958">"Više opcija zaključanog zaslona"</string>
     <string name="more_settings_section_description" msgid="1860115709122398325">"Privatnost, Upravo svira i drugo"</string>
     <string name="more_colors" msgid="3191071655353004591">"Više boja"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 5256ee6..81951de 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -24,7 +24,7 @@
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Egyedi óra módosítása"</string>
     <string name="select_clock_action_description" msgid="5025888763471843648">"Kiválasztott óralap-beállítás: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="clock_settings_title" msgid="2050906379377120431">"Óra színe és mérete"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Óra színe &amp; mérete"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Óra színe és mérete"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Szín"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Piros"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index c4ff381..7e097b3 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -38,10 +38,10 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"Hijau Kebiruan"</string>
     <string name="clock_size" msgid="5028923902364418263">"Ukuran"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamis"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Ukuran jam berubah sesuai dengan konten layar kunci"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Ukuran jam berubah menurut konten layar kunci"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Besar"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Kecil"</string>
-    <string name="clock_size_small_description" msgid="4089511196955732480">"Jam kecil ditampilkan di sudut layar Anda"</string>
+    <string name="clock_size_small_description" msgid="4089511196955732480">"Jam kecil ditampilkan di sudut layar"</string>
     <string name="grid_title" msgid="1688173478777254123">"Petak aplikasi"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Terapkan"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Ketuk untuk mengedit"</string>
@@ -114,7 +114,7 @@
     <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikon, teks, dan lain-lain serasi dengan warna wallpaper"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Warna wallpaper"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Warna dasar"</string>
-    <string name="preset_color_tab_2" msgid="1444107326712562538">"Warna lainnya"</string>
+    <string name="preset_color_tab_2" msgid="1444107326712562538">"Warna lain"</string>
     <string name="preset_color_subheader" msgid="8230588536141279371">"Pilih warna untuk ikon, jam, dan lain-lain"</string>
     <string name="color_changed" msgid="7029571720331641235">"Warna diubah"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Dinamis"</string>
@@ -131,9 +131,9 @@
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Tidak ada"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Tampilkan notifikasi di layar kunci"</string>
-    <string name="more_settings_section_title" msgid="1331425454775815958">"Opsi layar kunci lainnya"</string>
-    <string name="more_settings_section_description" msgid="1860115709122398325">"Privasi, Now Playing, dan lainnya"</string>
-    <string name="more_colors" msgid="3191071655353004591">"Warna Lainnya"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Opsi lain layar kunci"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privasi, Now Playing, dan lain-lain"</string>
+    <string name="more_colors" msgid="3191071655353004591">"Warna lain"</string>
     <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"Tema dinamis utama"</string>
     <string name="content_description_neutral_color_option" msgid="3385443834001275301">"Tema netral utama"</string>
     <string name="content_description_vibrant_color_option" msgid="2230249305878632821">"Tema cerah utama"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index af565a4..31500ca 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -38,10 +38,10 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"ティール"</string>
     <string name="clock_size" msgid="5028923902364418263">"サイズ"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"動的"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"時計のサイズがロック画面の状況に応じて変わります"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"時計のサイズをロック画面の内容に応じて調整します"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"大"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"小"</string>
-    <string name="clock_size_small_description" msgid="4089511196955732480">"画面の隅に小さい時計を表示する"</string>
+    <string name="clock_size_small_description" msgid="4089511196955732480">"画面の隅に小さい時計を表示します"</string>
     <string name="grid_title" msgid="1688173478777254123">"アプリグリッド"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"適用"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"タップして編集"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 6e839d8..fdb21bd 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -42,7 +42,7 @@
     <string name="clock_size_large" msgid="3143248715744138979">"Үлкен"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Кішi"</string>
     <string name="clock_size_small_description" msgid="4089511196955732480">"Экранның бұрышында шағын сағат көрсетіледі."</string>
-    <string name="grid_title" msgid="1688173478777254123">"Қолданба торы"</string>
+    <string name="grid_title" msgid="1688173478777254123">"Қолданбалар торы"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Қолдану"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Өзгерту үшін түртіңіз"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"Қазіргі тұсқағазды қалдыру"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index c3e5c99..5ff5575 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -42,7 +42,7 @@
     <string name="clock_size_large" msgid="3143248715744138979">"Чоң"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Кичине"</string>
     <string name="clock_size_small_description" msgid="4089511196955732480">"Кичинекей саат экрандын бурчунда көрүнүп турат"</string>
-    <string name="grid_title" msgid="1688173478777254123">"Колдонмонун торчосу"</string>
+    <string name="grid_title" msgid="1688173478777254123">"Колдонмолор торчосу"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Колдонуу"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Өзгөртүү үчүн таптап коюңуз"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"Учурдагы тушкагаз калсын"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 26ef5fe..d415b28 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -41,7 +41,7 @@
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Saiz jam berubah mengikut kandungan skrin kunci"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Besar"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Kecil"</string>
-    <string name="clock_size_small_description" msgid="4089511196955732480">"Jam kecil yang dipaparkan pada penjuru skrin anda"</string>
+    <string name="clock_size_small_description" msgid="4089511196955732480">"Jam kecil dipaparkan di penjuru skrin"</string>
     <string name="grid_title" msgid="1688173478777254123">"Grid apl"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Gunakan"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Ketik untuk edit"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index bdc67c5..cbe4079 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -111,7 +111,7 @@
     <string name="beta_title" msgid="8703819523760746458">"စမ်းသပ်"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"အက်ပ်ဇယား ပြောင်းရန်"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"နောက်ခံအရောင်များ"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"သင်္ကေတ၊ စာသားစသည်တို့သည် သင့်နောက်ခံအရောင်များနှင့် ကိုက်ညီသည်"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"သင်္ကေတ၊ စာသားစသည်တို့သည် သင့်နောက်ခံအရောင်များနှင့် လိုက်ဖက်သည်"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"နောက်ခံအရောင်"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"အခြေခံအရောင်များ"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"အခြားအရောင်"</string>
@@ -131,7 +131,7 @@
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>၊ <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"မရှိ"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"အကြောင်းကြားချက်များကို လော့ခ်မျက်နှာပြင်တွင် ပြပါ"</string>
-    <string name="more_settings_section_title" msgid="1331425454775815958">"နောက်ထပ် လော့ခ်မျက်နှာပြင် နည်းလမ်းများ"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"လော့ခ်မျက်နှာပြင် ရွေးစရာများ"</string>
     <string name="more_settings_section_description" msgid="1860115709122398325">"ကိုယ်ရေးအချက်အလက်လုံခြုံမှု၊ Now Playing နှင့်အခြား"</string>
     <string name="more_colors" msgid="3191071655353004591">"နောက်ထပ်အရောင်များ"</string>
     <string name="content_description_dynamic_color_option" msgid="2191721655642529886">"မူလ ပြောင်းလဲနိုင်သော အပြင်အဆင်"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 04efb6f..93a3461 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -41,7 +41,7 @@
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Het formaat van de klok past zich aan de content van het vergrendelscherm aan"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Groot"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Klein"</string>
-    <string name="clock_size_small_description" msgid="4089511196955732480">"Er staat een kleine klok in de hoek van je scherm"</string>
+    <string name="clock_size_small_description" msgid="4089511196955732480">"Er wordt een kleine klok weergegeven in de hoek van het scherm"</string>
     <string name="grid_title" msgid="1688173478777254123">"App-raster"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Toepassen"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tik om te bewerken"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 18350d8..b64c09e 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -41,7 +41,7 @@
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ଘଣ୍ଟାର ଆକାର ଲକ ସ୍କ୍ରିନର ବିଷୟବସ୍ତୁ ଅନୁସାରେ ପରିବର୍ତ୍ତନ ହୋଇଥାଏ"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"ବଡ଼"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"ଛୋଟ"</string>
-    <string name="clock_size_small_description" msgid="4089511196955732480">"ଆପଣଙ୍କ ସ୍କ୍ରିନର କୋଣରେ ଏକ ଛୋଟ କ୍ଲକ ଦେଖାଯାଉଛି"</string>
+    <string name="clock_size_small_description" msgid="4089511196955732480">"ଆପଣଙ୍କ ସ୍କ୍ରିନର କୋଣରେ ଏକ ଛୋଟ ଘଣ୍ଟା ଦେଖାଯାଏ"</string>
     <string name="grid_title" msgid="1688173478777254123">"ଆପ ଗ୍ରିଡ"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"ପ୍ରୟୋଗ କରନ୍ତୁ"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ଏଡିଟ କରିବା ପାଇଁ ଟାପ କରନ୍ତୁ"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 6a3521d..58b1421 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -23,8 +23,8 @@
     <string name="clock_description" msgid="3563839327378948">"Escolha rel. pers."</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Altere um relógio personalizado"</string>
     <string name="select_clock_action_description" msgid="5025888763471843648">"Opção de mostrador <xliff:g id="ID_1">%1$s</xliff:g>"</string>
-    <string name="clock_settings_title" msgid="2050906379377120431">"Cor/tamanho relógio"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Cor/tamanho relógio"</string>
+    <string name="clock_settings_title" msgid="2050906379377120431">"Cor e tamanho do relógio"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Cor e tamanho do relógio"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Cor"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Vermelho"</string>
@@ -57,7 +57,7 @@
     <string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g>, em pré-visualização atualmente"</string>
     <string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, alteração selecionada e pré-visualizada"</string>
     <string name="theme_description" msgid="3697012391785254635">"Tipo de letra: <xliff:g id="ID_1">%1$s</xliff:g>, ícones: <xliff:g id="ID_2">%2$s</xliff:g>, forma: <xliff:g id="ID_3">%3$s</xliff:g>, cor: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
-    <string name="default_theme_title" msgid="2555741736622366797">"Predef."</string>
+    <string name="default_theme_title" msgid="2555741736622366797">"Predefinido"</string>
     <string name="preview_name_font" msgid="4465423899630037038">"Tipo de letra"</string>
     <string name="preview_name_icon" msgid="6818927315316316440">"Ícone"</string>
     <string name="preview_name_color" msgid="8776203144994416172">"Cor"</string>
@@ -110,7 +110,7 @@
     <string name="themed_icon_title" msgid="7312460430471956558">"Ícones temáticos"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Altere a grelha de apps"</string>
-    <string name="wallpaper_color_tab" msgid="1447926591721403840">"Cores imag. de fundo"</string>
+    <string name="wallpaper_color_tab" msgid="1447926591721403840">"Cores do fundo"</string>
     <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto, etc. condizem com a imagem de fundo"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Cor da imagem de fundo"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Cores básicas"</string>
@@ -130,7 +130,7 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Atalhos"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nenhum"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostre as notificações no ecrã de bloqueio"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar as notificações no ecrã de bloqueio"</string>
     <string name="more_settings_section_title" msgid="1331425454775815958">"Mais opções do ecrã de bloqueio"</string>
     <string name="more_settings_section_description" msgid="1860115709122398325">"Privacidade, A reproduzir e muito mais"</string>
     <string name="more_colors" msgid="3191071655353004591">"Mais cores"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index c418f84..271a201 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -42,7 +42,7 @@
     <string name="clock_size_large" msgid="3143248715744138979">"Veľké"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Malé"</string>
     <string name="clock_size_small_description" msgid="4089511196955732480">"V rohu obrazovky sa zobrazujú malé hodiny"</string>
-    <string name="grid_title" msgid="1688173478777254123">"Mriežka aplik."</string>
+    <string name="grid_title" msgid="1688173478777254123">"Mriežka aplikácií"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Použiť"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Klepnutím upravte"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"Ponechať aktuálnu tapetu"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 3899537..61eada7 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -41,7 +41,7 @@
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Velikost ure se spremeni glede na vsebino zaklenjenega zaslona."</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Velika"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Majhna"</string>
-    <string name="clock_size_small_description" msgid="4089511196955732480">"V kotu zaslona je prikazana majhna ura"</string>
+    <string name="clock_size_small_description" msgid="4089511196955732480">"V kotu zaslona je prikazana majhna ura."</string>
     <string name="grid_title" msgid="1688173478777254123">"Mreža aplikacij"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Uporabi"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Dotaknite se za urejanje"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 1f1326d..3b6d501 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -38,7 +38,7 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"蓝绿色"</string>
     <string name="clock_size" msgid="5028923902364418263">"大小"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"动态"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"时钟大小会依据锁定屏幕上的内容而变化"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"时钟大小会随锁屏内容而变化"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"大"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"小"</string>
     <string name="clock_size_small_description" msgid="4089511196955732480">"一个小型时钟显示在界面一角"</string>
@@ -107,11 +107,11 @@
     <string name="mode_title" msgid="2394873501427436055">"深色主题"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"因省电模式已开启，该功能被暂时停用了"</string>
     <string name="mode_changed" msgid="2243581369395418584">"主题已更改"</string>
-    <string name="themed_icon_title" msgid="7312460430471956558">"主题图标"</string>
+    <string name="themed_icon_title" msgid="7312460430471956558">"图标匹配主题"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta 版"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"更改应用网格"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"壁纸颜色"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"图标、文字等项目的颜色会与您壁纸中的颜色相配"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"图标、文字等内容的颜色会与壁纸中的颜色相配"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"壁纸颜色"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"基本颜色"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"其他颜色"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 417856b..743f1ec 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -42,7 +42,7 @@
     <string name="clock_size_large" msgid="3143248715744138979">"大"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"小"</string>
     <string name="clock_size_small_description" msgid="4089511196955732480">"在畫面角落顯示小型時鐘"</string>
-    <string name="grid_title" msgid="1688173478777254123">"應用程式格線"</string>
+    <string name="grid_title" msgid="1688173478777254123">"應用程式排列顯示"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"套用"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"輕觸這裡即可編輯"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"繼續使用目前的桌布"</string>
@@ -109,7 +109,7 @@
     <string name="mode_changed" msgid="2243581369395418584">"主題已變更"</string>
     <string name="themed_icon_title" msgid="7312460430471956558">"圖示套用主題色"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta 版"</string>
-    <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"變更應用程式格線"</string>
+    <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"變更應用程式排列顯示"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"桌布顏色"</string>
     <string name="wallpaper_color_subheader" msgid="4044464573669965670">"為圖示、文字和其他項目選擇與桌布相襯的顏色"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"桌布顏色"</string>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index aa6c477..2f9daae 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -171,4 +171,8 @@
     <dimen name="clock_color_size_button_corner_radius">16dp</dimen>
     <dimen name="clock_color_size_button_icon_size">20dp</dimen>
     <dimen name="clock_color_size_button_icon_margin_end">12dp</dimen>
+
+    <!-- Notification item dimensions -->
+    <dimen name="notification_section_title_padding">8dp</dimen>
+
 </resources>
diff --git a/src/com/android/customization/model/ResourceConstants.java b/src/com/android/customization/model/ResourceConstants.java
index aaee935..c1cff13 100644
--- a/src/com/android/customization/model/ResourceConstants.java
+++ b/src/com/android/customization/model/ResourceConstants.java
@@ -19,7 +19,7 @@
 import android.content.res.Resources;
 import android.provider.Settings.Secure;
 
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/src/com/android/customization/model/color/ColorCustomizationManager.java b/src/com/android/customization/model/color/ColorCustomizationManager.java
index a09efd2..5bd302b 100644
--- a/src/com/android/customization/model/color/ColorCustomizationManager.java
+++ b/src/com/android/customization/model/color/ColorCustomizationManager.java
@@ -48,7 +48,7 @@
 import com.android.customization.model.color.ColorOptionsProvider.ColorSource;
 import com.android.customization.model.theme.OverlayManagerCompat;
 import com.android.customization.module.logging.ThemesUserEventLogger;
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 
 import org.json.JSONArray;
 import org.json.JSONException;
diff --git a/src/com/android/customization/model/color/ColorOption.java b/src/com/android/customization/model/color/ColorOption.java
index f57aa86..ae695dd 100644
--- a/src/com/android/customization/model/color/ColorOption.java
+++ b/src/com/android/customization/model/color/ColorOption.java
@@ -30,7 +30,7 @@
 import com.android.customization.model.color.ColorOptionsProvider.ColorSource;
 import com.android.customization.module.logging.ThemesUserEventLogger;
 import com.android.systemui.monet.Style;
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 
 import org.json.JSONException;
 import org.json.JSONObject;
diff --git a/src/com/android/customization/model/color/ColorOptionImpl.kt b/src/com/android/customization/model/color/ColorOptionImpl.kt
index f090528..ecef2a7 100644
--- a/src/com/android/customization/model/color/ColorOptionImpl.kt
+++ b/src/com/android/customization/model/color/ColorOptionImpl.kt
@@ -23,7 +23,7 @@
 import com.android.customization.model.color.ColorOptionsProvider.ColorSource
 import com.android.customization.picker.color.shared.model.ColorType
 import com.android.systemui.monet.Style
-import com.android.wallpaper.R
+import com.android.themepicker.R
 
 /**
  * Represents a color option in the revamped UI, it can be used for both wallpaper and preset colors
diff --git a/src/com/android/customization/model/color/ColorProvider.kt b/src/com/android/customization/model/color/ColorProvider.kt
index 6fdfd2c..eb8d8df 100644
--- a/src/com/android/customization/model/color/ColorProvider.kt
+++ b/src/com/android/customization/model/color/ColorProvider.kt
@@ -38,7 +38,7 @@
 import com.android.customization.picker.color.shared.model.ColorType
 import com.android.systemui.monet.ColorScheme
 import com.android.systemui.monet.Style
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.module.InjectorProvider
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
@@ -79,7 +79,8 @@
         }
 
     private var colorsAvailable = true
-    private var colorBundles: List<ColorOption>? = null
+    private var presetColorBundles: List<ColorOption>? = null
+    private var wallpaperColorBundles: List<ColorOption>? = null
     private var homeWallpaperColors: WallpaperColors? = null
     private var lockWallpaperColors: WallpaperColors? = null
 
@@ -96,31 +97,27 @@
         val wallpaperColorsChanged =
             this.homeWallpaperColors != homeWallpaperColors ||
                 this.lockWallpaperColors != lockWallpaperColors
-        if (wallpaperColorsChanged) {
+        if (wallpaperColorsChanged || reload) {
+            loadSeedColors(
+                homeWallpaperColors,
+                lockWallpaperColors,
+            )
             this.homeWallpaperColors = homeWallpaperColors
             this.lockWallpaperColors = lockWallpaperColors
         }
-        if (colorBundles == null || reload || wallpaperColorsChanged) {
+        if (presetColorBundles == null || reload) {
             scope.launch {
                 try {
-                    if (colorBundles == null || reload) {
-                        loadPreset()
-                    }
-                    if (wallpaperColorsChanged || reload) {
-                        loadSeedColors(
-                            homeWallpaperColors,
-                            lockWallpaperColors,
-                        )
-                    }
+                    loadPreset()
                 } catch (e: Throwable) {
                     colorsAvailable = false
                     callback?.onError(e)
                     return@launch
                 }
-                callback?.onOptionsLoaded(colorBundles)
+                callback?.onOptionsLoaded(buildFinalList())
             }
         } else {
-            callback?.onOptionsLoaded(colorBundles)
+            callback?.onOptionsLoaded(buildFinalList())
         }
     }
 
@@ -173,19 +170,7 @@
                 bundles,
             )
         }
-
-        // Insert monochrome in the second position if it is enabled and included in preset
-        // colors
-        if (InjectorProvider.getInjector().getFlags().isMonochromaticThemeEnabled(mContext)) {
-            monochromeBundleName?.let {
-                bundles.add(1, buildPreset(it, -1, Style.MONOCHROMATIC, ColorType.WALLPAPER_COLOR))
-            }
-        }
-        bundles.addAll(
-            colorBundles?.filterNot { (it as ColorOptionImpl).type == ColorType.WALLPAPER_COLOR }
-                ?: emptyList()
-        )
-        colorBundles = bundles
+        wallpaperColorBundles = bundles
     }
 
     private fun buildColorSeeds(
@@ -381,7 +366,7 @@
                 monochromeBundleName = null
             }
 
-            colorBundles = bundles
+            presetColorBundles = bundles
         }
 
     private fun buildPreset(
@@ -425,4 +410,22 @@
         builder.darkColors = darkColors
         return builder.build()
     }
+
+    private fun buildFinalList(): List<ColorOption> {
+        val presetColors = presetColorBundles ?: emptyList()
+        val wallpaperColors = wallpaperColorBundles?.toMutableList() ?: mutableListOf()
+        // Insert monochrome in the second position if it is enabled and included in preset
+        // colors
+        if (InjectorProvider.getInjector().getFlags().isMonochromaticThemeEnabled(mContext)) {
+            monochromeBundleName?.let {
+                if (wallpaperColors.isNotEmpty()) {
+                    wallpaperColors.add(
+                        1,
+                        buildPreset(it, -1, Style.MONOCHROMATIC, ColorType.WALLPAPER_COLOR)
+                    )
+                }
+            }
+        }
+        return wallpaperColors + presetColors
+    }
 }
diff --git a/src/com/android/customization/model/color/ThemedWallpaperColorResources.kt b/src/com/android/customization/model/color/ThemedWallpaperColorResources.kt
index 906d902..7c89953 100644
--- a/src/com/android/customization/model/color/ThemedWallpaperColorResources.kt
+++ b/src/com/android/customization/model/color/ThemedWallpaperColorResources.kt
@@ -24,32 +24,40 @@
 import com.android.customization.model.ResourceConstants.OVERLAY_CATEGORY_THEME_STYLE
 import com.android.systemui.monet.ColorScheme
 import com.android.systemui.monet.Style
+import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
 import org.json.JSONException
 import org.json.JSONObject
 
-class ThemedWallpaperColorResources(wallpaperColors: WallpaperColors, context: Context) :
-    WallpaperColorResources(wallpaperColors) {
+class ThemedWallpaperColorResources(
+    private val wallpaperColors: WallpaperColors,
+    private val secureSettingsRepository: SecureSettingsRepository,
+) : WallpaperColorResources() {
 
-    init {
-        val wallpaperColorScheme =
-            ColorScheme(
-                wallpaperColors = wallpaperColors,
-                darkTheme = false,
-                style = fetchThemeStyleFromSetting(context)
-            )
-        addOverlayColor(wallpaperColorScheme.neutral1, R.color.system_neutral1_10)
-        addOverlayColor(wallpaperColorScheme.neutral2, R.color.system_neutral2_10)
-        addOverlayColor(wallpaperColorScheme.accent1, R.color.system_accent1_10)
-        addOverlayColor(wallpaperColorScheme.accent2, R.color.system_accent2_10)
-        addOverlayColor(wallpaperColorScheme.accent3, R.color.system_accent3_10)
+    override suspend fun apply(context: Context, callback: () -> Unit) {
+        withContext(Dispatchers.IO) {
+            val wallpaperColorScheme =
+                ColorScheme(
+                    wallpaperColors = wallpaperColors,
+                    darkTheme = false,
+                    style = fetchThemeStyleFromSetting(),
+                )
+            with(wallpaperColorScheme) {
+                addOverlayColor(neutral1, R.color.system_neutral1_10)
+                addOverlayColor(neutral2, R.color.system_neutral2_10)
+                addOverlayColor(accent1, R.color.system_accent1_10)
+                addOverlayColor(accent2, R.color.system_accent2_10)
+                addOverlayColor(accent3, R.color.system_accent3_10)
+            }
+            applyToContext(context)
+            callback.invoke()
+        }
     }
 
-    private fun fetchThemeStyleFromSetting(context: Context): Style {
+    private suspend fun fetchThemeStyleFromSetting(): Style {
         val overlayPackageJson =
-            Settings.Secure.getString(
-                context.contentResolver,
-                Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
-            )
+            secureSettingsRepository.getString(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES)
         return if (!overlayPackageJson.isNullOrEmpty()) {
             try {
                 val jsonObject = JSONObject(overlayPackageJson)
diff --git a/src/com/android/customization/model/grid/GridOption.java b/src/com/android/customization/model/grid/GridOption.java
index 347929c..b350351 100644
--- a/src/com/android/customization/model/grid/GridOption.java
+++ b/src/com/android/customization/model/grid/GridOption.java
@@ -26,7 +26,7 @@
 import com.android.customization.model.CustomizationManager;
 import com.android.customization.model.CustomizationOption;
 import com.android.customization.widget.GridTileDrawable;
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 
 /**
  * Represents a grid layout option available in the current launcher.
diff --git a/src/com/android/customization/model/grid/GridOptionsManager.java b/src/com/android/customization/model/grid/GridOptionsManager.java
index bd24cf5..09c6c65 100644
--- a/src/com/android/customization/model/grid/GridOptionsManager.java
+++ b/src/com/android/customization/model/grid/GridOptionsManager.java
@@ -56,8 +56,8 @@
         if (sGridOptionsManager == null) {
             Context appContext = context.getApplicationContext();
             CustomizationInjector injector = (CustomizationInjector) InjectorProvider.getInjector();
-            ThemesUserEventLogger eventLogger = (ThemesUserEventLogger) injector.getUserEventLogger(
-                    appContext);
+            ThemesUserEventLogger eventLogger =
+                    (ThemesUserEventLogger) injector.getUserEventLogger();
             sGridOptionsManager = new GridOptionsManager(
                     new LauncherGridOptionsProvider(appContext,
                             appContext.getString(R.string.grid_control_metadata_name)),
diff --git a/src/com/android/customization/model/grid/LauncherGridOptionsProvider.java b/src/com/android/customization/model/grid/LauncherGridOptionsProvider.java
index e71cca9..33ad81d 100644
--- a/src/com/android/customization/model/grid/LauncherGridOptionsProvider.java
+++ b/src/com/android/customization/model/grid/LauncherGridOptionsProvider.java
@@ -32,7 +32,7 @@
 import androidx.lifecycle.MutableLiveData;
 
 import com.android.customization.model.ResourceConstants;
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 import com.android.wallpaper.config.BaseFlags;
 import com.android.wallpaper.util.PreviewUtils;
 
diff --git a/src/com/android/customization/model/mode/DarkModeSectionController.java b/src/com/android/customization/model/mode/DarkModeSectionController.java
index 7139829..3da7ae9 100644
--- a/src/com/android/customization/model/mode/DarkModeSectionController.java
+++ b/src/com/android/customization/model/mode/DarkModeSectionController.java
@@ -41,7 +41,7 @@
 
 import com.android.customization.module.logging.ThemesUserEventLogger;
 import com.android.customization.picker.mode.DarkModeSectionView;
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 import com.android.wallpaper.model.CustomizationSectionController;
 
 import java.util.concurrent.ExecutorService;
diff --git a/src/com/android/customization/model/themedicon/ThemedIconSectionController.java b/src/com/android/customization/model/themedicon/ThemedIconSectionController.java
index 1cc6d0a..4b3f2f5 100644
--- a/src/com/android/customization/model/themedicon/ThemedIconSectionController.java
+++ b/src/com/android/customization/model/themedicon/ThemedIconSectionController.java
@@ -26,7 +26,7 @@
 import com.android.customization.model.themedicon.domain.interactor.ThemedIconSnapshotRestorer;
 import com.android.customization.module.logging.ThemesUserEventLogger;
 import com.android.customization.picker.themedicon.ThemedIconSectionView;
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 import com.android.wallpaper.model.CustomizationSectionController;
 
 // TODO (b/311712452): Refactor CustomizationSectionController to use recommended arch UI components
diff --git a/src/com/android/customization/model/themedicon/ThemedIconSwitchProvider.java b/src/com/android/customization/model/themedicon/ThemedIconSwitchProvider.java
index 5e2a60a..6b8deaa 100644
--- a/src/com/android/customization/model/themedicon/ThemedIconSwitchProvider.java
+++ b/src/com/android/customization/model/themedicon/ThemedIconSwitchProvider.java
@@ -25,7 +25,7 @@
 import androidx.annotation.Nullable;
 
 import com.android.customization.module.CustomizationPreferences;
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 import com.android.wallpaper.module.InjectorProvider;
 
 import java.util.concurrent.ExecutorService;
diff --git a/src/com/android/customization/module/CustomizationInjector.kt b/src/com/android/customization/module/CustomizationInjector.kt
index 82203d9..d761598 100644
--- a/src/com/android/customization/module/CustomizationInjector.kt
+++ b/src/com/android/customization/module/CustomizationInjector.kt
@@ -18,7 +18,6 @@
 import android.content.Context
 import android.content.res.Resources
 import androidx.activity.ComponentActivity
-import com.android.customization.module.logging.ThemesUserEventLogger
 import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
 import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
@@ -55,7 +54,6 @@
         interactor: ClockPickerInteractor,
         clockViewFactory: ClockViewFactory,
         resources: Resources,
-        logger: ThemesUserEventLogger,
     ): ClockCarouselViewModel.Factory
 
     fun getClockViewFactory(activity: ComponentActivity): ClockViewFactory
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index f22e562..a2f7e56 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -56,8 +56,6 @@
 import com.android.customization.picker.grid.domain.interactor.GridInteractor
 import com.android.customization.picker.grid.domain.interactor.GridSnapshotRestorer
 import com.android.customization.picker.grid.ui.viewmodel.GridScreenViewModel
-import com.android.customization.picker.notifications.data.repository.NotificationsRepository
-import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
 import com.android.customization.picker.notifications.domain.interactor.NotificationsSnapshotRestorer
 import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel
 import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository
@@ -67,6 +65,8 @@
 import com.android.systemui.shared.clocks.ClockRegistry
 import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
 import com.android.systemui.shared.customization.data.content.CustomizationProviderClientImpl
+import com.android.systemui.shared.notifications.data.repository.NotificationSettingsRepository
+import com.android.systemui.shared.notifications.domain.interactor.NotificationSettingsInteractor
 import com.android.wallpaper.config.BaseFlags
 import com.android.wallpaper.module.CustomizationSections
 import com.android.wallpaper.module.FragmentFactory
@@ -80,6 +80,7 @@
 import com.android.wallpaper.picker.di.modules.MainDispatcher
 import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
 import com.android.wallpaper.util.ScreenSizeCalculator
+import dagger.Lazy
 import javax.inject.Inject
 import javax.inject.Singleton
 import kotlinx.coroutines.CoroutineDispatcher
@@ -88,12 +89,12 @@
 @Singleton
 open class ThemePickerInjector
 @Inject
-internal constructor(
+constructor(
     @MainDispatcher private val mainScope: CoroutineScope,
     @MainDispatcher private val mainDispatcher: CoroutineDispatcher,
+    @BackgroundDispatcher private val bgScope: CoroutineScope,
     @BackgroundDispatcher private val bgDispatcher: CoroutineDispatcher,
-    private val userEventLogger: ThemesUserEventLogger,
-) : WallpaperPicker2Injector(mainScope, bgDispatcher, userEventLogger), CustomizationInjector {
+) : WallpaperPicker2Injector(mainScope, bgDispatcher), CustomizationInjector {
     private var customizationSections: CustomizationSections? = null
     private var wallpaperInteractor: WallpaperInteractor? = null
     private var keyguardQuickAffordancePickerInteractor: KeyguardQuickAffordancePickerInteractor? =
@@ -110,7 +111,7 @@
     private var clockCarouselViewModelFactory: ClockCarouselViewModel.Factory? = null
     private var clockViewFactory: ClockViewFactory? = null
     private var clockPickerSnapshotRestorer: ClockPickerSnapshotRestorer? = null
-    private var notificationsInteractor: NotificationsInteractor? = null
+    private var notificationSettingsInteractor: NotificationSettingsInteractor? = null
     private var notificationSectionViewModelFactory: NotificationSectionViewModel.Factory? = null
     private var colorPickerInteractor: ColorPickerInteractor? = null
     private var colorPickerViewModelFactory: ColorPickerViewModel.Factory? = null
@@ -124,6 +125,7 @@
     private var gridSnapshotRestorer: GridSnapshotRestorer? = null
     private var gridScreenViewModelFactory: GridScreenViewModel.Factory? = null
     private var clockRegistryProvider: ClockRegistryProvider? = null
+    @Inject lateinit var themesUserEventLogger: Lazy<ThemesUserEventLogger>
 
     override fun getCustomizationSections(activity: ComponentActivity): CustomizationSections {
         val appContext = activity.applicationContext
@@ -142,13 +144,12 @@
                         interactor = getClockPickerInteractor(appContext),
                         clockViewFactory = clockViewFactory,
                         resources = resources,
-                        logger = userEventLogger,
                     ),
                     clockViewFactory,
                     getThemedIconSnapshotRestorer(appContext),
                     getThemedIconInteractor(),
                     getColorPickerInteractor(appContext, getWallpaperColorsRepository()),
-                    getUserEventLogger(appContext),
+                    getUserEventLogger(),
                 )
                 .also { customizationSections = it }
     }
@@ -166,8 +167,8 @@
     }
 
     @Synchronized
-    override fun getUserEventLogger(context: Context): ThemesUserEventLogger {
-        return userEventLogger
+    override fun getUserEventLogger(): ThemesUserEventLogger {
+        return themesUserEventLogger.get()
     }
 
     override fun getFragmentFactory(): FragmentFactory? {
@@ -200,7 +201,7 @@
 
     override fun getWallpaperInteractor(context: Context): WallpaperInteractor {
         if (getFlags().isMultiCropEnabled() && getFlags().isMultiCropPreviewUiEnabled()) {
-            return injectedWallpaperInteractor
+            return injectedWallpaperInteractor.get()
         }
 
         val appContext = context.applicationContext
@@ -213,7 +214,7 @@
                                 WallpaperClientImpl(
                                     context = appContext,
                                     wallpaperManager = WallpaperManager.getInstance(appContext),
-                                    wallpaperPreferences = getPreferences(appContext)
+                                    wallpaperPreferences = getPreferences(appContext),
                                 ),
                             wallpaperPreferences = getPreferences(context = appContext),
                             backgroundDispatcher = bgDispatcher,
@@ -246,7 +247,7 @@
                     getKeyguardQuickAffordancePickerInteractor(context),
                     getWallpaperInteractor(context),
                     getCurrentWallpaperInfoFactory(context),
-                    getUserEventLogger(context),
+                    getUserEventLogger(),
                 )
                 .also { keyguardQuickAffordancePickerViewModelFactory = it }
     }
@@ -290,26 +291,24 @@
         return notificationSectionViewModelFactory
             ?: NotificationSectionViewModel.Factory(
                     interactor = getNotificationsInteractor(context),
-                    logger = getUserEventLogger(context),
+                    logger = getUserEventLogger(),
                 )
                 .also { notificationSectionViewModelFactory = it }
     }
 
     private fun getNotificationsInteractor(
         context: Context,
-    ): NotificationsInteractor {
-        val appContext = context.applicationContext
-        return notificationsInteractor
-            ?: NotificationsInteractor(
+    ): NotificationSettingsInteractor {
+        return notificationSettingsInteractor
+            ?: NotificationSettingsInteractor(
                     repository =
-                        NotificationsRepository(
+                        NotificationSettingsRepository(
                             scope = getApplicationCoroutineScope(),
                             backgroundDispatcher = bgDispatcher,
                             secureSettingsRepository = getSecureSettingsRepository(context),
                         ),
-                    snapshotRestorer = { getNotificationsSnapshotRestorer(appContext) },
                 )
-                .also { notificationsInteractor = it }
+                .also { notificationSettingsInteractor = it }
     }
 
     private fun getNotificationsSnapshotRestorer(context: Context): NotificationsSnapshotRestorer {
@@ -319,6 +318,7 @@
                         getNotificationsInteractor(
                             context = context,
                         ),
+                    backgroundScope = bgScope,
                 )
                 .also { notificationsSnapshotRestorer = it }
     }
@@ -357,7 +357,6 @@
         interactor: ClockPickerInteractor,
         clockViewFactory: ClockViewFactory,
         resources: Resources,
-        logger: ThemesUserEventLogger,
     ): ClockCarouselViewModel.Factory {
         return clockCarouselViewModelFactory
             ?: ClockCarouselViewModel.Factory(
@@ -365,7 +364,7 @@
                     bgDispatcher,
                     clockViewFactory,
                     resources,
-                    logger,
+                    getUserEventLogger(),
                 )
                 .also { clockCarouselViewModelFactory = it }
     }
@@ -406,7 +405,7 @@
         wallpaperColors: WallpaperColors,
         context: Context
     ): WallpaperColorResources {
-        return ThemedWallpaperColorResources(wallpaperColors, context)
+        return ThemedWallpaperColorResources(wallpaperColors, getSecureSettingsRepository(context))
     }
 
     override fun getColorPickerInteractor(
@@ -436,7 +435,7 @@
             ?: ColorPickerViewModel.Factory(
                     context.applicationContext,
                     getColorPickerInteractor(context, wallpaperColorsRepository),
-                    userEventLogger,
+                    getUserEventLogger(),
                 )
                 .also { colorPickerViewModelFactory = it }
     }
@@ -508,7 +507,7 @@
                         context,
                         wallpaperColorsRepository,
                     ),
-                    userEventLogger,
+                    getUserEventLogger(),
                 ) { clockId ->
                     clockId?.let { clockViewFactory.getController(clockId).config.isReactiveToTone }
                         ?: false
diff --git a/src/com/android/customization/module/logging/AppSessionId.kt b/src/com/android/customization/module/logging/AppSessionId.kt
index c831f22..7553fe9 100644
--- a/src/com/android/customization/module/logging/AppSessionId.kt
+++ b/src/com/android/customization/module/logging/AppSessionId.kt
@@ -15,6 +15,7 @@
  */
 package com.android.customization.module.logging
 
+import android.util.Log
 import com.android.internal.logging.InstanceId
 import com.android.internal.logging.InstanceIdSequence
 import javax.inject.Inject
@@ -23,7 +24,9 @@
 @Singleton
 class AppSessionId @Inject constructor() {
 
-    private var sessionId: InstanceId = newInstanceId()
+    private var idSequence: InstanceIdSequence? = null
+
+    private var sessionId: InstanceId? = null
 
     fun createNewId(): AppSessionId {
         sessionId = newInstanceId()
@@ -31,12 +34,23 @@
     }
 
     fun getId(): Int {
-        return sessionId.hashCode()
+        val id =
+            sessionId
+                ?: newInstanceId().also {
+                    Log.w(
+                        TAG,
+                        "Session ID should not be null. We should always call createNewId() before calling getId()."
+                    )
+                    sessionId = it
+                }
+        return id.hashCode()
     }
 
-    private fun newInstanceId(): InstanceId = InstanceIdSequence(INSTANCE_ID_MAX).newInstanceId()
+    private fun newInstanceId(): InstanceId =
+        (idSequence ?: InstanceIdSequence(INSTANCE_ID_MAX).also { idSequence = it }).newInstanceId()
 
     companion object {
+        private const val TAG = "AppSessionId"
         // At most 20 bits: ~1m possibilities, ~0.5% probability of collision in 100 values
         private const val INSTANCE_ID_MAX = 1 shl 20
     }
diff --git a/src/com/android/customization/module/logging/SysUiStatsLogger.kt b/src/com/android/customization/module/logging/SysUiStatsLogger.kt
index 111c2c2..71363fb 100644
--- a/src/com/android/customization/module/logging/SysUiStatsLogger.kt
+++ b/src/com/android/customization/module/logging/SysUiStatsLogger.kt
@@ -60,6 +60,7 @@
     private var toggleOn = false
     private var shortcut = ""
     private var shortcutSlotId = ""
+    private var lockEffectIdHash = 0
 
     fun setColorPackageHash(colorPackageHash: Int) = apply {
         this.colorPackageHash = colorPackageHash
@@ -151,6 +152,10 @@
 
     fun setShortcutSlotId(shortcutSlotId: String) = apply { this.shortcutSlotId = shortcutSlotId }
 
+    fun setLockEffectIdHash(lockEffectIdHash: Int) = apply {
+        this.lockEffectIdHash = lockEffectIdHash
+    }
+
     fun log() {
         SysUiStatsLog.write(
             STYLE_UI_CHANGED,
@@ -185,6 +190,7 @@
             toggleOn,
             shortcut,
             shortcutSlotId,
+            lockEffectIdHash,
         )
     }
 }
diff --git a/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt b/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt
index 3f4a6dc..b28086b 100644
--- a/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt
+++ b/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt
@@ -75,9 +75,10 @@
         SysUiStatsLogger(SNAPSHOT)
             .setWallpaperCategoryHash(preferences.getHomeCategoryHash())
             .setWallpaperIdHash(preferences.getHomeWallpaperIdHash())
+            .setEffectIdHash(preferences.getHomeWallpaperEffectsIdHash())
             .setLockWallpaperCategoryHash(preferences.getLockCategoryHash())
             .setLockWallpaperIdHash(preferences.getLockWallpaperIdHash())
-            .setEffectIdHash(preferences.getHomeWallpaperEffectsIdHash())
+            .setLockEffectIdHash(preferences.getLockWallpaperEffectsIdHash())
             .setColorSource(colorManager.currentColorSourceForLogging)
             .setColorVariant(colorManager.currentStyleForLogging)
             .setSeedColor(colorManager.currentSeedColorForLogging)
@@ -110,9 +111,10 @@
             .setAppSessionId(appSessionId.getId())
             .setWallpaperCategoryHash(if (isHomeWallpaperSet) categoryHash else 0)
             .setWallpaperIdHash(if (isHomeWallpaperSet) wallpaperIdHash else 0)
+            .setEffectIdHash(if (isHomeWallpaperSet) getIdHashCode(effects) else 0)
             .setLockWallpaperCategoryHash(if (isLockWallpaperSet) categoryHash else 0)
             .setLockWallpaperIdHash(if (isLockWallpaperSet) wallpaperIdHash else 0)
-            .setEffectIdHash(getIdHashCode(effects))
+            .setLockEffectIdHash(if (isLockWallpaperSet) getIdHashCode(effects) else 0)
             .setSetWallpaperEntryPoint(setWallpaperEntryPoint)
             .setWallpaperDestination(destination)
             .log()
@@ -293,6 +295,11 @@
         return getIdHashCode(getHomeWallpaperEffects())
     }
 
+    /** If not set, the output hash is 0. */
+    private fun WallpaperPreferences.getLockWallpaperEffectsIdHash(): Int {
+        return getIdHashCode(getLockWallpaperEffects())
+    }
+
     private fun getIdHashCode(id: String?): Int {
         return id?.hashCode() ?: 0
     }
diff --git a/src/com/android/customization/picker/WallpaperPreviewer.java b/src/com/android/customization/picker/WallpaperPreviewer.java
deleted file mode 100644
index 18bc89c..0000000
--- a/src/com/android/customization/picker/WallpaperPreviewer.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.customization.picker;
-
-import android.app.Activity;
-import android.app.WallpaperColors;
-import android.content.Intent;
-import android.graphics.Rect;
-import android.graphics.RenderEffect;
-import android.graphics.Shader.TileMode;
-import android.service.wallpaper.WallpaperService;
-import android.view.Surface;
-import android.view.SurfaceView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import androidx.annotation.MainThread;
-import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
-import androidx.lifecycle.Lifecycle;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.OnLifecycleEvent;
-
-import com.android.wallpaper.model.LiveWallpaperInfo;
-import com.android.wallpaper.model.WallpaperInfo;
-import com.android.wallpaper.util.ResourceUtils;
-import com.android.wallpaper.util.ScreenSizeCalculator;
-import com.android.wallpaper.util.SizeCalculator;
-import com.android.wallpaper.util.VideoWallpaperUtils;
-import com.android.wallpaper.util.WallpaperConnection;
-import com.android.wallpaper.util.WallpaperConnection.WallpaperConnectionListener;
-import com.android.wallpaper.util.WallpaperSurfaceCallback;
-import com.android.wallpaper.widget.WallpaperColorsLoader;
-
-/** A class to load the wallpaper to the view. */
-public class WallpaperPreviewer implements LifecycleObserver {
-
-    private final Rect mPreviewLocalRect = new Rect();
-    private final Rect mPreviewGlobalRect = new Rect();
-    private final int[] mLivePreviewLocation = new int[2];
-
-    private final Activity mActivity;
-    private final ImageView mHomePreview;
-    private final SurfaceView mWallpaperSurface;
-    @Nullable private final ImageView mFadeInScrim;
-
-    private WallpaperSurfaceCallback mWallpaperSurfaceCallback;
-    private WallpaperInfo mWallpaper;
-    private WallpaperConnection mWallpaperConnection;
-    @Nullable private WallpaperColorsListener mWallpaperColorsListener;
-
-    /** Interface for getting {@link WallpaperColors} from wallpaper. */
-    public interface WallpaperColorsListener {
-        /** Gets called when wallpaper color is available or updated. */
-        void onWallpaperColorsChanged(WallpaperColors colors);
-    }
-
-    public WallpaperPreviewer(Lifecycle lifecycle, Activity activity, ImageView homePreview,
-                              SurfaceView wallpaperSurface) {
-        this(lifecycle, activity, homePreview, wallpaperSurface, null);
-    }
-
-    public WallpaperPreviewer(Lifecycle lifecycle, Activity activity, ImageView homePreview,
-                              SurfaceView wallpaperSurface, @Nullable ImageView fadeInScrim) {
-        lifecycle.addObserver(this);
-
-        mActivity = activity;
-        mHomePreview = homePreview;
-        mWallpaperSurface = wallpaperSurface;
-        mFadeInScrim = fadeInScrim;
-        mWallpaperSurfaceCallback = new WallpaperSurfaceCallback(activity, mHomePreview,
-                mWallpaperSurface, this::setUpWallpaperPreview);
-        mWallpaperSurface.setZOrderMediaOverlay(true);
-        mWallpaperSurface.getHolder().addCallback(mWallpaperSurfaceCallback);
-
-        View rootView = homePreview.getRootView();
-        rootView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
-            @Override
-            public void onLayoutChange(View v, int left, int top, int right, int bottom,
-                                       int oldLeft, int oldTop, int oldRight, int oldBottom) {
-                updatePreviewCardRadius();
-                rootView.removeOnLayoutChangeListener(this);
-            }
-        });
-    }
-
-    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
-    @MainThread
-    public void onResume() {
-        if (mWallpaperConnection != null) {
-            mWallpaperConnection.setVisibility(true);
-        }
-    }
-
-    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
-    @MainThread
-    public void onPause() {
-        if (mWallpaperConnection != null) {
-            mWallpaperConnection.setVisibility(false);
-        }
-    }
-
-    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
-    @MainThread
-    public void onStop() {
-        if (mWallpaperConnection != null) {
-            mWallpaperConnection.disconnect();
-            mWallpaperConnection = null;
-        }
-    }
-
-    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
-    @MainThread
-    public void onDestroy() {
-        if (mWallpaperConnection != null) {
-            mWallpaperConnection.disconnect();
-            mWallpaperConnection = null;
-        }
-
-        mWallpaperSurfaceCallback.cleanUp();
-        mWallpaperSurface.getHolder().removeCallback(mWallpaperSurfaceCallback);
-        Surface surface = mWallpaperSurface.getHolder().getSurface();
-        if (surface != null) {
-            surface.release();
-        }
-    }
-
-    /**
-     * Sets a wallpaper to be shown on preview screen.
-     *
-     * @param wallpaperInfo the wallpaper to preview
-     * @param listener the listener for getting the wallpaper color of {@param wallpaperInfo}
-     */
-    public void setWallpaper(WallpaperInfo wallpaperInfo,
-                             @Nullable WallpaperColorsListener listener) {
-        mWallpaper = wallpaperInfo;
-        mWallpaperColorsListener = listener;
-        if (mFadeInScrim != null && VideoWallpaperUtils.needsFadeIn(wallpaperInfo)) {
-            mFadeInScrim.animate().cancel();
-            mFadeInScrim.setAlpha(1f);
-            mFadeInScrim.setVisibility(View.VISIBLE);
-        }
-        setUpWallpaperPreview();
-    }
-
-    private void setUpWallpaperPreview() {
-        ImageView homeImageWallpaper = mWallpaperSurfaceCallback.getHomeImageWallpaper();
-        if (mWallpaper != null && homeImageWallpaper != null) {
-            homeImageWallpaper.post(() -> {
-                if (mActivity == null || mActivity.isDestroyed()) {
-                    return;
-                }
-                boolean renderInImageWallpaperSurface = !(mWallpaper instanceof LiveWallpaperInfo);
-                mWallpaper.getThumbAsset(mActivity.getApplicationContext())
-                        .loadPreviewImage(mActivity,
-                                renderInImageWallpaperSurface ? homeImageWallpaper : mHomePreview,
-                                ResourceUtils.getColorAttr(
-                                        mActivity, android.R.attr.colorSecondary),
-                                /* offsetToStart= */ true);
-                if (mWallpaper instanceof LiveWallpaperInfo) {
-                    ImageView preview = homeImageWallpaper;
-                    if (VideoWallpaperUtils.needsFadeIn(mWallpaper) && mFadeInScrim != null) {
-                        preview = mFadeInScrim;
-                        preview.setRenderEffect(
-                                RenderEffect.createBlurEffect(150f, 150f, TileMode.CLAMP));
-                    }
-                    mWallpaper.getThumbAsset(mActivity.getApplicationContext())
-                            .loadPreviewImage(
-                                    mActivity,
-                                    preview,
-                                    ResourceUtils.getColorAttr(
-                                            mActivity, android.R.attr.colorSecondary),
-                                    /* offsetToStart= */ true);
-                    setUpLiveWallpaperPreview(mWallpaper);
-                } else {
-                    // Ensure live wallpaper connection is disconnected.
-                    if (mWallpaperConnection != null) {
-                        mWallpaperConnection.disconnect();
-                        mWallpaperConnection = null;
-                    }
-
-                    // Load wallpaper color for static wallpaper.
-                    if (mWallpaperColorsListener != null) {
-                        WallpaperColorsLoader.getWallpaperColors(
-                                mActivity,
-                                mWallpaper.getThumbAsset(mActivity),
-                                mWallpaperColorsListener::onWallpaperColorsChanged);
-                    }
-                }
-            });
-        }
-    }
-
-    private void setUpLiveWallpaperPreview(WallpaperInfo homeWallpaper) {
-        if (mActivity == null || mActivity.isFinishing()) {
-            return;
-        }
-
-        if (mWallpaperConnection != null) {
-            mWallpaperConnection.disconnect();
-        }
-        if (WallpaperConnection.isPreviewAvailable()) {
-            mHomePreview.getLocationOnScreen(mLivePreviewLocation);
-            mPreviewGlobalRect.set(0, 0, mHomePreview.getMeasuredWidth(),
-                    mHomePreview.getMeasuredHeight());
-            mPreviewLocalRect.set(mPreviewGlobalRect);
-            mPreviewGlobalRect.offset(mLivePreviewLocation[0], mLivePreviewLocation[1]);
-
-            mWallpaperConnection = new WallpaperConnection(
-                    getWallpaperIntent(homeWallpaper.getWallpaperComponent()), mActivity,
-                    new WallpaperConnectionListener() {
-                        @Override
-                        public void onWallpaperColorsChanged(WallpaperColors colors,
-                                int displayId) {
-                            if (mWallpaperColorsListener != null) {
-                                mWallpaperColorsListener.onWallpaperColorsChanged(colors);
-                            }
-                        }
-
-                        @Override
-                        public void onEngineShown() {
-                            if (mFadeInScrim != null && VideoWallpaperUtils.needsFadeIn(
-                                    homeWallpaper)) {
-                                mFadeInScrim.animate().alpha(0.0f)
-                                        .setDuration(VideoWallpaperUtils.TRANSITION_MILLIS)
-                                        .withEndAction(
-                                                () -> mFadeInScrim.setVisibility(View.INVISIBLE));
-                            }
-                        }
-                    }, mWallpaperSurface, WallpaperConnection.WhichPreview.PREVIEW_CURRENT);
-
-            mWallpaperConnection.setVisibility(true);
-            mHomePreview.post(() -> {
-                if (mWallpaperConnection != null && !mWallpaperConnection.connect()) {
-                    mWallpaperConnection = null;
-                }
-            });
-        } else {
-            // Load wallpaper color from the thumbnail.
-            if (mWallpaperColorsListener != null) {
-                WallpaperColorsLoader.getWallpaperColors(
-                        mActivity,
-                        mWallpaper.getThumbAsset(mActivity),
-                        mWallpaperColorsListener::onWallpaperColorsChanged);
-            }
-        }
-    }
-
-    /** Updates the preview card view corner radius to match the device corner radius. */
-    private void updatePreviewCardRadius() {
-        final float screenAspectRatio =
-                ScreenSizeCalculator.getInstance().getScreenAspectRatio(mActivity);
-        CardView cardView = (CardView) mHomePreview.getParent();
-        final int cardWidth = (int) (cardView.getMeasuredHeight() / screenAspectRatio);
-        ViewGroup.LayoutParams layoutParams = cardView.getLayoutParams();
-        layoutParams.width = cardWidth;
-        cardView.setLayoutParams(layoutParams);
-        cardView.setRadius(SizeCalculator.getPreviewCornerRadius(mActivity, cardWidth));
-    }
-
-    private static Intent getWallpaperIntent(android.app.WallpaperInfo info) {
-        return new Intent(WallpaperService.SERVICE_INTERFACE)
-                .setClassName(info.getPackageName(), info.getServiceName());
-    }
-}
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
index cc4079a..4a4aae1 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
@@ -23,7 +23,7 @@
 import com.android.customization.picker.clock.shared.model.ClockMetadataModel
 import com.android.systemui.plugins.clocks.ClockMetadata
 import com.android.systemui.shared.clocks.ClockRegistry
-import com.android.wallpaper.settings.data.repository.SecureSettingsRepository
+import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -157,7 +157,7 @@
             )
 
     override suspend fun setClockSize(size: ClockSize) {
-        secureSettingsRepository.set(
+        secureSettingsRepository.setInt(
             name = Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK,
             value = if (size == ClockSize.DYNAMIC) 1 else 0,
         )
diff --git a/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt b/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
index 981a8e8..1dccb21 100644
--- a/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
+++ b/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
@@ -22,7 +22,7 @@
 import android.widget.TextView
 import androidx.recyclerview.widget.RecyclerView
 import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsTabViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 
 /** Adapter for the tab recycler view on the clock settings screen. */
 class ClockSettingsTabAdapter : RecyclerView.Adapter<ClockSettingsTabAdapter.ViewHolder>() {
diff --git a/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt b/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt
index eb11171..1026f19 100644
--- a/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt
@@ -21,7 +21,7 @@
 import android.os.Bundle
 import android.view.View
 import android.view.accessibility.AccessibilityNodeInfo
-import com.android.wallpaper.R
+import com.android.themepicker.R
 
 class CarouselAccessibilityDelegate(
     private val context: Context,
diff --git a/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt b/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
index d17cdf8..b1bd0ef 100644
--- a/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
@@ -46,7 +46,7 @@
 import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
 import com.android.customization.picker.color.ui.binder.ColorOptionIconBinder
 import com.android.customization.picker.common.ui.view.ItemSpacing
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.option.ui.binder.OptionItemBinder
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.mapNotNull
diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
index dc70633..b8bd2f3 100644
--- a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
+++ b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
@@ -29,7 +29,7 @@
 import com.android.customization.module.ThemePickerInjector
 import com.android.customization.picker.clock.ui.binder.ClockSettingsBinder
 import com.android.systemui.shared.clocks.shared.model.ClockPreviewConstants
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.module.CustomizationSections
 import com.android.wallpaper.module.InjectorProvider
 import com.android.wallpaper.picker.AppbarFragment
@@ -80,7 +80,8 @@
                             context = context,
                             authority =
                                 resources.getString(
-                                    R.string.lock_screen_preview_provider_authority,
+                                    com.android.wallpaper.R.string
+                                        .lock_screen_preview_provider_authority,
                                 ),
                         ),
                     wallpaperInfoProvider = { forceReload ->
@@ -148,6 +149,9 @@
     }
 
     override fun getToolbarTextColor(): Int {
-        return ContextCompat.getColor(requireContext(), R.color.system_on_surface)
+        return ContextCompat.getColor(
+            requireContext(),
+            com.android.wallpaper.R.color.system_on_surface
+        )
     }
 }
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
index cae4e06..d0a30a4 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
@@ -32,7 +32,7 @@
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselItemViewModel
 import com.android.systemui.plugins.clocks.ClockController
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout
 import java.lang.Float.max
 
@@ -334,7 +334,7 @@
     private fun overrideScreenPreviewWidth() {
         val overrideWidth =
             context.resources.getDimensionPixelSize(
-                R.dimen.screen_preview_width_for_2_pane_small_width
+                com.android.wallpaper.R.dimen.screen_preview_width_for_2_pane_small_width
             )
         itemViewIds.forEach { id ->
             val itemView = motionLayout.requireViewById<FrameLayout>(id)
@@ -361,13 +361,17 @@
                     val layout = constraint.layout
                     if (
                         constraint.layout.mWidth ==
-                            context.resources.getDimensionPixelSize(R.dimen.screen_preview_width)
+                            context.resources.getDimensionPixelSize(
+                                com.android.wallpaper.R.dimen.screen_preview_width
+                            )
                     ) {
                         layout.mWidth = overrideWidth
                     }
                     if (
                         constraint.layout.widthMax ==
-                            context.resources.getDimensionPixelSize(R.dimen.screen_preview_width)
+                            context.resources.getDimensionPixelSize(
+                                com.android.wallpaper.R.dimen.screen_preview_width
+                            )
                     ) {
                         layout.widthMax = overrideWidth
                     }
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockViewFactoryImpl.kt b/src/com/android/customization/picker/clock/ui/view/ClockViewFactoryImpl.kt
index 5caea58..cf9e247 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockViewFactoryImpl.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockViewFactoryImpl.kt
@@ -29,7 +29,7 @@
 import com.android.systemui.plugins.clocks.ClockController
 import com.android.systemui.plugins.clocks.WeatherData
 import com.android.systemui.shared.clocks.ClockRegistry
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.util.TimeUtils.TimeTicker
 import java.util.concurrent.ConcurrentHashMap
 
@@ -86,7 +86,9 @@
         val layoutParams =
             FrameLayout.LayoutParams(
                 FrameLayout.LayoutParams.WRAP_CONTENT,
-                resources.getDimensionPixelSize(R.dimen.small_clock_height)
+                resources.getDimensionPixelSize(
+                    com.android.systemui.customization.R.dimen.small_clock_height
+                )
             )
         layoutParams.topMargin = getSmallClockTopMargin()
         layoutParams.marginStart = getSmallClockStartPadding()
@@ -97,10 +99,14 @@
 
     private fun getSmallClockTopMargin() =
         getStatusBarHeight(appContext.resources) +
-            appContext.resources.getDimensionPixelSize(R.dimen.small_clock_padding_top)
+            appContext.resources.getDimensionPixelSize(
+                com.android.systemui.customization.R.dimen.small_clock_padding_top
+            )
 
     private fun getSmallClockStartPadding() =
-        appContext.resources.getDimensionPixelSize(R.dimen.clock_padding_start)
+        appContext.resources.getDimensionPixelSize(
+            com.android.systemui.customization.R.dimen.clock_padding_start
+        )
 
     override fun updateColorForAllClocks(@ColorInt seedColor: Int?) {
         clockControllers.values.forEach { it.events.onSeedColorChanged(seedColor = seedColor) }
@@ -169,14 +175,22 @@
         // Initialize large clock
         controller.largeClock.events.onRegionDarknessChanged(isWallpaperDark)
         controller.largeClock.events.onFontSettingChanged(
-            resources.getDimensionPixelSize(R.dimen.large_clock_text_size).toFloat()
+            resources
+                .getDimensionPixelSize(
+                    com.android.systemui.customization.R.dimen.large_clock_text_size
+                )
+                .toFloat()
         )
         controller.largeClock.events.onTargetRegionChanged(getLargeClockRegion())
 
         // Initialize small clock
         controller.smallClock.events.onRegionDarknessChanged(isWallpaperDark)
         controller.smallClock.events.onFontSettingChanged(
-            resources.getDimensionPixelSize(R.dimen.small_clock_text_size).toFloat()
+            resources
+                .getDimensionPixelSize(
+                    com.android.systemui.customization.R.dimen.small_clock_text_size
+                )
+                .toFloat()
         )
         controller.smallClock.events.onTargetRegionChanged(getSmallClockRegion())
 
@@ -204,8 +218,13 @@
      */
     private fun getLargeClockRegion(): Rect {
         val largeClockTopMargin =
-            resources.getDimensionPixelSize(R.dimen.keyguard_large_clock_top_margin)
-        val targetHeight = resources.getDimensionPixelSize(R.dimen.large_clock_text_size) * 2
+            resources.getDimensionPixelSize(
+                com.android.systemui.customization.R.dimen.keyguard_large_clock_top_margin
+            )
+        val targetHeight =
+            resources.getDimensionPixelSize(
+                com.android.systemui.customization.R.dimen.large_clock_text_size
+            ) * 2
         val top = (screenSize.y / 2 - targetHeight / 2 + largeClockTopMargin / 2)
         return Rect(0, top, screenSize.x, (top + targetHeight))
     }
@@ -217,7 +236,10 @@
      */
     private fun getSmallClockRegion(): Rect {
         val topMargin = getSmallClockTopMargin()
-        val targetHeight = resources.getDimensionPixelSize(R.dimen.small_clock_height)
+        val targetHeight =
+            resources.getDimensionPixelSize(
+                com.android.systemui.customization.R.dimen.small_clock_height
+            )
         return Rect(getSmallClockStartPadding(), topMargin, screenSize.x, topMargin + targetHeight)
     }
 
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
index 3f6394b..28f58c4 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
@@ -24,7 +24,7 @@
 import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
@@ -33,6 +33,7 @@
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.mapLatest
 import kotlinx.coroutines.flow.mapNotNull
@@ -65,6 +66,10 @@
                     ClockCarouselItemViewModel(it.clockId, it.isSelected, contentDescription)
                 }
             }
+            // makes sure that the operations above this statement are executed on I/O dispatcher
+            // while parallelism limits the number of threads this can run on which makes sure that
+            // the flows run sequentially
+            .flowOn(backgroundDispatcher.limitedParallelism(1))
             .stateIn(viewModelScope, SharingStarted.Eagerly, emptyList())
 
     val selectedClockSize: Flow<ClockSize> = interactor.selectedClockSize
@@ -78,24 +83,24 @@
                 if (seedColor == null) {
                     if (isDarkThemeEnabled) {
                         // In dark mode, use darkest surface container color
-                        R.color.system_surface_container_high
+                        com.android.wallpaper.R.color.system_surface_container_high
                     } else {
                         // In light mode, use lightest surface container color
-                        R.color.system_surface_bright
+                        com.android.wallpaper.R.color.system_surface_bright
                     }
                 } else {
                     val luminance = Color.luminance(seedColor)
                     if (isDarkThemeEnabled) {
                         if (luminance <= CARD_COLOR_CHANGE_LUMINANCE_THRESHOLD_DARK_THEME) {
-                            R.color.system_surface_bright
+                            com.android.wallpaper.R.color.system_surface_bright
                         } else {
-                            R.color.system_surface_container_high
+                            com.android.wallpaper.R.color.system_surface_container_high
                         }
                     } else {
                         if (luminance <= CARD_COLOR_CHANGE_LUMINANCE_THRESHOLD_LIGHT_THEME) {
-                            R.color.system_surface_bright
+                            com.android.wallpaper.R.color.system_surface_bright
                         } else {
-                            R.color.system_surface_container_highest
+                            com.android.wallpaper.R.color.system_surface_container_highest
                         }
                     }
                 }
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockColorViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockColorViewModel.kt
index 9d622da..6e6944d 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockColorViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockColorViewModel.kt
@@ -19,7 +19,7 @@
 import android.annotation.ColorInt
 import android.content.res.Resources
 import android.graphics.Color
-import com.android.wallpaper.R
+import com.android.themepicker.R
 
 /** The view model that defines custom clock colors. */
 data class ClockColorViewModel(
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
index d0e4f8f..2a93f27 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
@@ -31,7 +31,7 @@
 import com.android.customization.picker.color.shared.model.ColorOptionModel
 import com.android.customization.picker.color.shared.model.ColorType
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
 import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
 import kotlinx.coroutines.ExperimentalCoroutinesApi
diff --git a/src/com/android/customization/picker/color/domain/interactor/ColorPickerInteractor.kt b/src/com/android/customization/picker/color/domain/interactor/ColorPickerInteractor.kt
index d3b2eba..e7759ce 100644
--- a/src/com/android/customization/picker/color/domain/interactor/ColorPickerInteractor.kt
+++ b/src/com/android/customization/picker/color/domain/interactor/ColorPickerInteractor.kt
@@ -20,6 +20,8 @@
 import com.android.customization.picker.color.shared.model.ColorOptionModel
 import javax.inject.Provider
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.flow.onEach
 
 /** Single entry-point for all application state and business logic related to system color. */
 class ColorPickerInteractor(
@@ -30,20 +32,28 @@
 
     /**
      * The newly selected color option for overwriting the current active option during an
-     * optimistic update, the value is set to null when update fails
+     * optimistic update, the value is set to null when update completes
      */
-    val activeColorOption = MutableStateFlow<ColorOptionModel?>(null)
+    private val _selectingColorOption = MutableStateFlow<ColorOptionModel?>(null)
+    val selectingColorOption = _selectingColorOption.asStateFlow()
 
     /** List of wallpaper and preset color options on the device, categorized by Color Type */
-    val colorOptions = repository.colorOptions
+    val colorOptions =
+        repository.colorOptions.onEach {
+            // Reset optimistic update value when colorOptions updates
+            _selectingColorOption.value = null
+        }
 
     suspend fun select(colorOptionModel: ColorOptionModel) {
-        activeColorOption.value = colorOptionModel
+        _selectingColorOption.value = colorOptionModel
         try {
+            // Do not reset optimistic update selection on selection success because UI color is not
+            // actually updated until the picker restarts. Wait to do so when updated color options
+            // become available
             repository.select(colorOptionModel)
             snapshotRestorer.get().storeSnapshot(colorOptionModel)
         } catch (e: Exception) {
-            activeColorOption.value = null
+            _selectingColorOption.value = null
         }
     }
 
diff --git a/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt b/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
index 553f586..62cf62a 100644
--- a/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
+++ b/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
@@ -23,7 +23,7 @@
 import android.widget.TextView
 import androidx.recyclerview.widget.RecyclerView
 import com.android.customization.picker.color.ui.viewmodel.ColorTypeTabViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 
 /** Adapts between color type items and views. */
 class ColorTypeTabAdapter : RecyclerView.Adapter<ColorTypeTabAdapter.ViewHolder>() {
diff --git a/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt b/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
index 9838c31..7b5b598 100644
--- a/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
+++ b/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
@@ -33,7 +33,7 @@
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
 import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
 import com.android.customization.picker.common.ui.view.ItemSpacing
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.option.ui.adapter.OptionItemAdapter
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
diff --git a/src/com/android/customization/picker/color/ui/binder/ColorSectionViewBinder.kt b/src/com/android/customization/picker/color/ui/binder/ColorSectionViewBinder.kt
index ad81614..c2dc381 100644
--- a/src/com/android/customization/picker/color/ui/binder/ColorSectionViewBinder.kt
+++ b/src/com/android/customization/picker/color/ui/binder/ColorSectionViewBinder.kt
@@ -29,7 +29,7 @@
 import androidx.lifecycle.repeatOnLifecycle
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
 import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.common.icon.ui.viewbinder.ContentDescriptionViewBinder
 import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
 import kotlinx.coroutines.launch
@@ -99,11 +99,7 @@
                 LayoutInflater.from(view.context)
                     .inflate(R.layout.color_option_no_background, view, false)
             item.payload?.let {
-                ColorOptionIconBinder.bind(
-                    itemView.requireViewById(R.id.option_tile),
-                    item.payload,
-                    night
-                )
+                ColorOptionIconBinder.bind(itemView.requireViewById(R.id.option_tile), it, night)
                 ContentDescriptionViewBinder.bind(
                     view = itemView.requireViewById(R.id.option_tile),
                     viewModel = item.text,
diff --git a/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt b/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
index 2c00609..d6c728e 100644
--- a/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
+++ b/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
@@ -32,7 +32,7 @@
 import com.android.customization.model.mode.DarkModeSectionController
 import com.android.customization.module.ThemePickerInjector
 import com.android.customization.picker.color.ui.binder.ColorPickerBinder
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.module.CustomizationSections
 import com.android.wallpaper.module.InjectorProvider
 import com.android.wallpaper.picker.AppbarFragment
@@ -108,7 +108,8 @@
                                 authority =
                                     requireContext()
                                         .getString(
-                                            R.string.lock_screen_preview_provider_authority,
+                                            com.android.wallpaper.R.string
+                                                .lock_screen_preview_provider_authority,
                                         ),
                             ),
                         wallpaperInfoProvider = { forceReload ->
@@ -159,7 +160,7 @@
                             authorityMetadataKey =
                                 requireContext()
                                     .getString(
-                                        R.string.grid_control_metadata_name,
+                                        com.android.wallpaper.R.string.grid_control_metadata_name,
                                     ),
                         ),
                     wallpaperInfoProvider = { forceReload ->
@@ -203,7 +204,7 @@
                     context,
                     lifecycle,
                     injector.getDarkModeSnapshotRestorer(requireContext()),
-                    injector.getUserEventLogger(requireContext()),
+                    injector.getUserEventLogger(),
                 )
                 .createView(requireContext())
         darkModeSectionView.background = null
@@ -255,6 +256,9 @@
     }
 
     override fun getToolbarTextColor(): Int {
-        return ContextCompat.getColor(requireContext(), R.color.system_on_surface)
+        return ContextCompat.getColor(
+            requireContext(),
+            com.android.wallpaper.R.color.system_on_surface
+        )
     }
 }
diff --git a/src/com/android/customization/picker/color/ui/section/ColorSectionController.kt b/src/com/android/customization/picker/color/ui/section/ColorSectionController.kt
index a36fd80..646d8ac 100644
--- a/src/com/android/customization/picker/color/ui/section/ColorSectionController.kt
+++ b/src/com/android/customization/picker/color/ui/section/ColorSectionController.kt
@@ -24,7 +24,7 @@
 import com.android.customization.picker.color.ui.fragment.ColorPickerFragment
 import com.android.customization.picker.color.ui.view.ColorSectionView
 import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.model.CustomizationSectionController
 import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController as NavigationController
 
diff --git a/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt b/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
index ed83136..52df31a 100644
--- a/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
+++ b/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
@@ -24,18 +24,16 @@
 import com.android.customization.module.logging.ThemesUserEventLogger
 import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
 import com.android.customization.picker.color.shared.model.ColorType
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
 import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
 import kotlin.math.max
 import kotlin.math.min
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.shareIn
 import kotlinx.coroutines.flow.stateIn
 import kotlinx.coroutines.launch
 
@@ -95,122 +93,97 @@
     /** The list of all color options mapped by their color type */
     private val allColorOptions:
         Flow<Map<ColorType, List<OptionItemViewModel<ColorOptionIconViewModel>>>> =
-        interactor.colorOptions
-            .map { colorOptions ->
-                colorOptions
-                    .map { colorOptionEntry ->
-                        colorOptionEntry.key to
-                            colorOptionEntry.value.map { colorOptionModel ->
-                                val colorOption: ColorOptionImpl =
-                                    colorOptionModel.colorOption as ColorOptionImpl
-                                val lightThemeColors =
-                                    colorOption.previewInfo.resolveColors(/* darkTheme= */ false)
-                                val darkThemeColors =
-                                    colorOption.previewInfo.resolveColors(/* darkTheme= */ true)
-                                val isSelectedFlow: StateFlow<Boolean> =
-                                    interactor.activeColorOption
-                                        .map {
-                                            it?.colorOption?.isEquivalent(
-                                                colorOptionModel.colorOption
-                                            )
-                                                ?: colorOptionModel.isSelected
-                                        }
-                                        .stateIn(viewModelScope)
-                                OptionItemViewModel<ColorOptionIconViewModel>(
-                                    key =
-                                        MutableStateFlow(colorOptionModel.key) as StateFlow<String>,
-                                    payload =
-                                        ColorOptionIconViewModel(
-                                            lightThemeColor0 = lightThemeColors[0],
-                                            lightThemeColor1 = lightThemeColors[1],
-                                            lightThemeColor2 = lightThemeColors[2],
-                                            lightThemeColor3 = lightThemeColors[3],
-                                            darkThemeColor0 = darkThemeColors[0],
-                                            darkThemeColor1 = darkThemeColors[1],
-                                            darkThemeColor2 = darkThemeColors[2],
-                                            darkThemeColor3 = darkThemeColors[3],
-                                        ),
-                                    text =
-                                        Text.Loaded(
-                                            colorOption.getContentDescription(context).toString()
-                                        ),
-                                    isTextUserVisible = false,
-                                    isSelected = isSelectedFlow,
-                                    onClicked =
-                                        isSelectedFlow.map { isSelected ->
-                                            if (isSelected) {
-                                                null
-                                            } else {
-                                                {
-                                                    viewModelScope.launch {
-                                                        interactor.select(colorOptionModel)
-                                                        logger.logThemeColorApplied(
-                                                            colorOptionModel.colorOption
-                                                                .sourceForLogging,
-                                                            colorOptionModel.colorOption
-                                                                .styleForLogging,
-                                                            colorOptionModel.colorOption
-                                                                .seedColorForLogging,
-                                                        )
-                                                    }
+        interactor.colorOptions.map { colorOptions ->
+            colorOptions
+                .map { colorOptionEntry ->
+                    colorOptionEntry.key to
+                        colorOptionEntry.value.map { colorOptionModel ->
+                            val colorOption: ColorOptionImpl =
+                                colorOptionModel.colorOption as ColorOptionImpl
+                            val lightThemeColors =
+                                colorOption.previewInfo.resolveColors(/* darkTheme= */ false)
+                            val darkThemeColors =
+                                colorOption.previewInfo.resolveColors(/* darkTheme= */ true)
+                            val isSelectedFlow: StateFlow<Boolean> =
+                                interactor.selectingColorOption
+                                    .map {
+                                        it?.colorOption?.isEquivalent(colorOptionModel.colorOption)
+                                            ?: colorOptionModel.isSelected
+                                    }
+                                    .stateIn(viewModelScope)
+                            OptionItemViewModel<ColorOptionIconViewModel>(
+                                key = MutableStateFlow(colorOptionModel.key) as StateFlow<String>,
+                                payload =
+                                    ColorOptionIconViewModel(
+                                        lightThemeColor0 = lightThemeColors[0],
+                                        lightThemeColor1 = lightThemeColors[1],
+                                        lightThemeColor2 = lightThemeColors[2],
+                                        lightThemeColor3 = lightThemeColors[3],
+                                        darkThemeColor0 = darkThemeColors[0],
+                                        darkThemeColor1 = darkThemeColors[1],
+                                        darkThemeColor2 = darkThemeColors[2],
+                                        darkThemeColor3 = darkThemeColors[3],
+                                    ),
+                                text =
+                                    Text.Loaded(
+                                        colorOption.getContentDescription(context).toString()
+                                    ),
+                                isTextUserVisible = false,
+                                isSelected = isSelectedFlow,
+                                onClicked =
+                                    isSelectedFlow.map { isSelected ->
+                                        if (isSelected) {
+                                            null
+                                        } else {
+                                            {
+                                                viewModelScope.launch {
+                                                    interactor.select(colorOptionModel)
+                                                    logger.logThemeColorApplied(
+                                                        colorOptionModel.colorOption
+                                                            .sourceForLogging,
+                                                        colorOptionModel.colorOption
+                                                            .styleForLogging,
+                                                        colorOptionModel.colorOption
+                                                            .seedColorForLogging,
+                                                    )
                                                 }
                                             }
-                                        },
-                                )
-                            }
-                    }
-                    .toMap()
-            }
-            .shareIn(
-                scope = viewModelScope,
-                started = SharingStarted.WhileSubscribed(),
-                replay = 1,
-            )
+                                        }
+                                    },
+                            )
+                        }
+                }
+                .toMap()
+        }
 
     /** The list of all available color options for the selected Color Type. */
     val colorOptions: Flow<List<OptionItemViewModel<ColorOptionIconViewModel>>> =
         combine(allColorOptions, selectedColorTypeTabId) {
-                allColorOptions:
-                    Map<ColorType, List<OptionItemViewModel<ColorOptionIconViewModel>>>,
-                selectedColorTypeIdOrNull ->
-                val selectedColorTypeId = selectedColorTypeIdOrNull ?: ColorType.WALLPAPER_COLOR
-                allColorOptions[selectedColorTypeId]!!
-            }
-            .shareIn(
-                scope = viewModelScope,
-                started = SharingStarted.Eagerly,
-                replay = 1,
-            )
+            allColorOptions: Map<ColorType, List<OptionItemViewModel<ColorOptionIconViewModel>>>,
+            selectedColorTypeIdOrNull ->
+            val selectedColorTypeId = selectedColorTypeIdOrNull ?: ColorType.WALLPAPER_COLOR
+            allColorOptions[selectedColorTypeId]!!
+        }
 
     /** The list of color options for the color section */
     val colorSectionOptions: Flow<List<OptionItemViewModel<ColorOptionIconViewModel>>> =
-        allColorOptions
-            .map { allColorOptions ->
-                val wallpaperOptions = allColorOptions[ColorType.WALLPAPER_COLOR]
-                val presetOptions = allColorOptions[ColorType.PRESET_COLOR]
-                val subOptions =
-                    wallpaperOptions!!.subList(
-                        0,
-                        min(COLOR_SECTION_OPTION_SIZE, wallpaperOptions.size)
+        allColorOptions.map { allColorOptions ->
+            val wallpaperOptions = allColorOptions[ColorType.WALLPAPER_COLOR]
+            val presetOptions = allColorOptions[ColorType.PRESET_COLOR]
+            val subOptions =
+                wallpaperOptions!!.subList(0, min(COLOR_SECTION_OPTION_SIZE, wallpaperOptions.size))
+            // Add additional options based on preset colors if size of wallpaper color options is
+            // less than COLOR_SECTION_OPTION_SIZE
+            val additionalSubOptions =
+                presetOptions!!.subList(
+                    0,
+                    min(
+                        max(0, COLOR_SECTION_OPTION_SIZE - wallpaperOptions.size),
+                        presetOptions.size,
                     )
-                // Add additional options based on preset colors if size of wallpaper color options
-                // is
-                // less than COLOR_SECTION_OPTION_SIZE
-                val additionalSubOptions =
-                    presetOptions!!.subList(
-                        0,
-                        min(
-                            max(0, COLOR_SECTION_OPTION_SIZE - wallpaperOptions.size),
-                            presetOptions.size,
-                        )
-                    )
-                subOptions + additionalSubOptions
-            }
-            .shareIn(
-                scope = viewModelScope,
-                started = SharingStarted.WhileSubscribed(),
-                replay = 1,
-            )
+                )
+            subOptions + additionalSubOptions
+        }
 
     class Factory(
         private val context: Context,
diff --git a/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt b/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
index bcb3737..9948dee 100644
--- a/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
+++ b/src/com/android/customization/picker/grid/ui/binder/GridScreenBinder.kt
@@ -29,7 +29,7 @@
 import com.android.customization.picker.common.ui.view.ItemSpacing
 import com.android.customization.picker.grid.ui.viewmodel.GridIconViewModel
 import com.android.customization.picker.grid.ui.viewmodel.GridScreenViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.option.ui.adapter.OptionItemAdapter
 import com.android.wallpaper.picker.option.ui.binder.OptionItemBinder
 import kotlinx.coroutines.CoroutineDispatcher
@@ -45,7 +45,7 @@
         isGridApplyButtonEnabled: Boolean,
         onOptionApplied: () -> Unit,
     ) {
-        val optionView: RecyclerView = view.requireViewById(R.id.options)
+        val optionView: RecyclerView = view.requireViewById(com.android.wallpaper.R.id.options)
         optionView.layoutManager =
             LinearLayoutManager(
                 view.context,
@@ -60,8 +60,10 @@
                 backgroundDispatcher = backgroundDispatcher,
                 foregroundTintSpec =
                     OptionItemBinder.TintSpec(
-                        selectedColor = view.context.getColor(R.color.system_on_surface),
-                        unselectedColor = view.context.getColor(R.color.system_on_surface),
+                        selectedColor =
+                            view.context.getColor(com.android.wallpaper.R.color.system_on_surface),
+                        unselectedColor =
+                            view.context.getColor(com.android.wallpaper.R.color.system_on_surface),
                     ),
                 bindIcon = { foregroundView: View, gridIcon: GridIconViewModel ->
                     val imageView = foregroundView as? ImageView
diff --git a/src/com/android/customization/picker/grid/ui/fragment/GridFragment.kt b/src/com/android/customization/picker/grid/ui/fragment/GridFragment.kt
index 2a301b4..74b88db 100644
--- a/src/com/android/customization/picker/grid/ui/fragment/GridFragment.kt
+++ b/src/com/android/customization/picker/grid/ui/fragment/GridFragment.kt
@@ -34,7 +34,7 @@
 import com.android.customization.picker.grid.domain.interactor.GridInteractor
 import com.android.customization.picker.grid.ui.binder.GridScreenBinder
 import com.android.customization.picker.grid.ui.viewmodel.GridScreenViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.config.BaseFlags
 import com.android.wallpaper.module.CurrentWallpaperInfoFactory
 import com.android.wallpaper.module.CustomizationSections
@@ -154,7 +154,10 @@
     }
 
     override fun getToolbarTextColor(): Int {
-        return ContextCompat.getColor(requireContext(), R.color.system_on_surface)
+        return ContextCompat.getColor(
+            requireContext(),
+            com.android.wallpaper.R.color.system_on_surface
+        )
     }
 
     private fun bindScreenPreview(
@@ -174,7 +177,7 @@
                             authorityMetadataKey =
                                 requireContext()
                                     .getString(
-                                        R.string.grid_control_metadata_name,
+                                        com.android.wallpaper.R.string.grid_control_metadata_name,
                                     ),
                         ),
                     initialExtrasProvider = {
diff --git a/src/com/android/customization/picker/grid/ui/section/GridSectionController.java b/src/com/android/customization/picker/grid/ui/section/GridSectionController.java
index 6ae9acd..0e15609 100644
--- a/src/com/android/customization/picker/grid/ui/section/GridSectionController.java
+++ b/src/com/android/customization/picker/grid/ui/section/GridSectionController.java
@@ -31,7 +31,7 @@
 import com.android.customization.model.grid.GridOptionsManager;
 import com.android.customization.picker.grid.ui.fragment.GridFragment;
 import com.android.customization.picker.grid.ui.view.GridSectionView;
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 import com.android.wallpaper.model.CustomizationSectionController;
 
 import java.util.List;
diff --git a/src/com/android/customization/picker/mode/DarkModeSectionView.java b/src/com/android/customization/picker/mode/DarkModeSectionView.java
index 6fc0a57..803fb0e 100644
--- a/src/com/android/customization/picker/mode/DarkModeSectionView.java
+++ b/src/com/android/customization/picker/mode/DarkModeSectionView.java
@@ -22,7 +22,7 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 import com.android.wallpaper.picker.SectionView;
 
 /** The view of section in the customization picker fragment. */
diff --git a/src/com/android/customization/picker/notifications/data/repository/NotificationsRepository.kt b/src/com/android/customization/picker/notifications/data/repository/NotificationsRepository.kt
deleted file mode 100644
index c75ddce..0000000
--- a/src/com/android/customization/picker/notifications/data/repository/NotificationsRepository.kt
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.android.customization.picker.notifications.data.repository
-
-import android.provider.Settings
-import com.android.customization.picker.notifications.shared.model.NotificationSettingsModel
-import com.android.wallpaper.settings.data.repository.SecureSettingsRepository
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.SharedFlow
-import kotlinx.coroutines.flow.SharingStarted
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.shareIn
-import kotlinx.coroutines.withContext
-
-/** Provides access to state related to notifications. */
-class NotificationsRepository(
-    scope: CoroutineScope,
-    private val backgroundDispatcher: CoroutineDispatcher,
-    private val secureSettingsRepository: SecureSettingsRepository,
-) {
-    /** The current state of the notification setting. */
-    val settings: SharedFlow<NotificationSettingsModel> =
-        secureSettingsRepository
-            .intSetting(
-                name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
-            )
-            .map { lockScreenShowNotificationsInt ->
-                NotificationSettingsModel(
-                    isShowNotificationsOnLockScreenEnabled = lockScreenShowNotificationsInt == 1,
-                )
-            }
-            .shareIn(
-                scope = scope,
-                started = SharingStarted.WhileSubscribed(),
-                replay = 1,
-            )
-
-    suspend fun getSettings(): NotificationSettingsModel {
-        return withContext(backgroundDispatcher) {
-            NotificationSettingsModel(
-                isShowNotificationsOnLockScreenEnabled =
-                    secureSettingsRepository.get(
-                        name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
-                        defaultValue = 0,
-                    ) == 1
-            )
-        }
-    }
-
-    suspend fun setSettings(model: NotificationSettingsModel) {
-        withContext(backgroundDispatcher) {
-            secureSettingsRepository.set(
-                name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
-                value = if (model.isShowNotificationsOnLockScreenEnabled) 1 else 0,
-            )
-        }
-    }
-}
diff --git a/src/com/android/customization/picker/notifications/domain/interactor/NotificationsInteractor.kt b/src/com/android/customization/picker/notifications/domain/interactor/NotificationsInteractor.kt
deleted file mode 100644
index 1f892f0..0000000
--- a/src/com/android/customization/picker/notifications/domain/interactor/NotificationsInteractor.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.android.customization.picker.notifications.domain.interactor
-
-import com.android.customization.picker.notifications.data.repository.NotificationsRepository
-import com.android.customization.picker.notifications.shared.model.NotificationSettingsModel
-import javax.inject.Provider
-import kotlinx.coroutines.flow.Flow
-
-/** Encapsulates business logic for interacting with notifications. */
-class NotificationsInteractor(
-    private val repository: NotificationsRepository,
-    private val snapshotRestorer: Provider<NotificationsSnapshotRestorer>,
-) {
-    /** The current state of the notification setting. */
-    val settings: Flow<NotificationSettingsModel> = repository.settings
-
-    /** Toggles the setting to show or hide notifications on the lock screen. */
-    suspend fun toggleShowNotificationsOnLockScreenEnabled() {
-        val currentModel = repository.getSettings()
-        setSettings(
-            currentModel.copy(
-                isShowNotificationsOnLockScreenEnabled =
-                    !currentModel.isShowNotificationsOnLockScreenEnabled,
-            )
-        )
-    }
-
-    suspend fun setSettings(model: NotificationSettingsModel) {
-        repository.setSettings(model)
-        snapshotRestorer.get().storeSnapshot(model)
-    }
-
-    suspend fun getSettings(): NotificationSettingsModel {
-        return repository.getSettings()
-    }
-}
diff --git a/src/com/android/customization/picker/notifications/domain/interactor/NotificationsSnapshotRestorer.kt b/src/com/android/customization/picker/notifications/domain/interactor/NotificationsSnapshotRestorer.kt
index c782b74..09d2d29 100644
--- a/src/com/android/customization/picker/notifications/domain/interactor/NotificationsSnapshotRestorer.kt
+++ b/src/com/android/customization/picker/notifications/domain/interactor/NotificationsSnapshotRestorer.kt
@@ -12,24 +12,27 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- *
  */
 
 package com.android.customization.picker.notifications.domain.interactor
 
-import com.android.customization.picker.notifications.shared.model.NotificationSettingsModel
+import com.android.systemui.shared.notifications.domain.interactor.NotificationSettingsInteractor
+import com.android.wallpaper.picker.di.modules.BackgroundDispatcher
 import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
 import com.android.wallpaper.picker.undo.domain.interactor.SnapshotStore
 import com.android.wallpaper.picker.undo.shared.model.RestorableSnapshot
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.launch
 
 /** Handles state restoration for notification settings. */
 class NotificationsSnapshotRestorer(
-    private val interactor: NotificationsInteractor,
+    private val interactor: NotificationSettingsInteractor,
+    @BackgroundDispatcher private val backgroundScope: CoroutineScope,
 ) : SnapshotRestorer {
 
     private var snapshotStore: SnapshotStore = SnapshotStore.NOOP
 
-    fun storeSnapshot(model: NotificationSettingsModel) {
+    private fun storeSnapshot(model: NotificationSnapshotModel) {
         snapshotStore.store(snapshot(model))
     }
 
@@ -37,20 +40,25 @@
         store: SnapshotStore,
     ): RestorableSnapshot {
         snapshotStore = store
-        return snapshot(interactor.getSettings())
+        backgroundScope.launch {
+            interactor.isShowNotificationsOnLockScreenEnabled.collect {
+                storeSnapshot(
+                    NotificationSnapshotModel(isShowNotificationsOnLockScreenEnabled = it)
+                )
+            }
+        }
+        return snapshot(
+            NotificationSnapshotModel(interactor.isShowNotificationsOnLockScreenEnabled.value)
+        )
     }
 
     override suspend fun restoreToSnapshot(snapshot: RestorableSnapshot) {
         val isShowNotificationsOnLockScreenEnabled =
             snapshot.args[KEY_IS_SHOW_NOTIFICATIONS_ON_LOCK_SCREEN_ENABLED]?.toBoolean() ?: false
-        interactor.setSettings(
-            NotificationSettingsModel(
-                isShowNotificationsOnLockScreenEnabled = isShowNotificationsOnLockScreenEnabled,
-            )
-        )
+        interactor.setShowNotificationsOnLockscreenEnabled(isShowNotificationsOnLockScreenEnabled)
     }
 
-    private fun snapshot(model: NotificationSettingsModel): RestorableSnapshot {
+    private fun snapshot(model: NotificationSnapshotModel): RestorableSnapshot {
         return RestorableSnapshot(
             mapOf(
                 KEY_IS_SHOW_NOTIFICATIONS_ON_LOCK_SCREEN_ENABLED to
@@ -64,3 +72,9 @@
             "is_show_notifications_on_lock_screen_enabled"
     }
 }
+
+/** Snapshot of notification settings relevant to the theme picker. */
+private data class NotificationSnapshotModel(
+    /** Whether notifications are shown on the lock screen. */
+    val isShowNotificationsOnLockScreenEnabled: Boolean = false,
+)
diff --git a/src/com/android/customization/picker/notifications/shared/model/NotificationSettingsModel.kt b/src/com/android/customization/picker/notifications/shared/model/NotificationSettingsModel.kt
deleted file mode 100644
index 7ce388b..0000000
--- a/src/com/android/customization/picker/notifications/shared/model/NotificationSettingsModel.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.android.customization.picker.notifications.shared.model
-
-/** Models notification settings. */
-data class NotificationSettingsModel(
-    /** Whether notifications are shown on the lock screen. */
-    val isShowNotificationsOnLockScreenEnabled: Boolean = false,
-)
diff --git a/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt b/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt
index 1868a4e..8f2727c 100644
--- a/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt
+++ b/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt
@@ -25,7 +25,7 @@
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.repeatOnLifecycle
 import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import kotlinx.coroutines.launch
 
 /**
diff --git a/src/com/android/customization/picker/notifications/ui/section/NotificationSectionController.kt b/src/com/android/customization/picker/notifications/ui/section/NotificationSectionController.kt
index d35c382..15deb00 100644
--- a/src/com/android/customization/picker/notifications/ui/section/NotificationSectionController.kt
+++ b/src/com/android/customization/picker/notifications/ui/section/NotificationSectionController.kt
@@ -24,7 +24,7 @@
 import com.android.customization.picker.notifications.ui.binder.NotificationSectionBinder
 import com.android.customization.picker.notifications.ui.view.NotificationSectionView
 import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.model.CustomizationSectionController
 
 /** Controls a section with UI that lets the user toggle notification settings. */
diff --git a/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt b/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
index 1a5254f..5db7626 100644
--- a/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
+++ b/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
@@ -22,35 +22,33 @@
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.viewModelScope
 import com.android.customization.module.logging.ThemesUserEventLogger
-import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
+import com.android.systemui.shared.notifications.domain.interactor.NotificationSettingsInteractor
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
 
 /** Models UI state for a section that lets the user control the notification settings. */
 class NotificationSectionViewModel
 @VisibleForTesting
 constructor(
-    private val interactor: NotificationsInteractor,
+    private val interactor: NotificationSettingsInteractor,
     private val logger: ThemesUserEventLogger,
 ) : ViewModel() {
 
     /** Whether the switch should be on. */
-    val isSwitchOn: Flow<Boolean> =
-        interactor.settings.map { model -> model.isShowNotificationsOnLockScreenEnabled }
+    val isSwitchOn: Flow<Boolean> = interactor.isShowNotificationsOnLockScreenEnabled
 
     /** Notifies that the section has been clicked. */
     fun onClicked() {
         viewModelScope.launch {
-            interactor.toggleShowNotificationsOnLockScreenEnabled()
+            interactor.toggleShowNotificationsOnLockscreenEnabled()
             logger.logLockScreenNotificationApplied(
-                interactor.getSettings().isShowNotificationsOnLockScreenEnabled
+                interactor.isShowNotificationsOnLockScreenEnabled.value
             )
         }
     }
 
     class Factory(
-        private val interactor: NotificationsInteractor,
+        private val interactor: NotificationSettingsInteractor,
         private val logger: ThemesUserEventLogger,
     ) : ViewModelProvider.Factory {
         @Suppress("UNCHECKED_CAST")
diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
index eb25af7..c434ce3 100644
--- a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
+++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
@@ -39,7 +39,7 @@
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
 import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
 import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.model.CustomizationSectionController
 import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController
 import com.android.wallpaper.model.WallpaperPreviewNavigator
@@ -111,9 +111,9 @@
         val view = super.createView(context, params)
         if (screen == CustomizationSections.Screen.LOCK_SCREEN) {
             val screenPreviewClickView: ScreenPreviewClickView =
-                view.requireViewById(R.id.screen_preview_click_view)
+                view.requireViewById(com.android.wallpaper.R.id.screen_preview_click_view)
             val clockColorAndSizeButtonStub: ViewStub =
-                view.requireViewById(R.id.clock_color_and_size_button)
+                view.requireViewById(com.android.wallpaper.R.id.clock_color_and_size_button)
             clockColorAndSizeButtonStub.layoutResource = R.layout.clock_color_and_size_button
             clockColorAndSizeButton = clockColorAndSizeButtonStub.inflate() as View
             clockColorAndSizeButton?.setOnClickListener {
@@ -127,14 +127,17 @@
                 val padding =
                     context
                         .getResources()
-                        .getDimensionPixelSize(R.dimen.screen_preview_section_vertical_space)
+                        .getDimensionPixelSize(
+                            com.android.wallpaper.R.dimen.screen_preview_section_vertical_space
+                        )
                 rect.top -= padding
                 rect.bottom += padding
                 val touchDelegate = TouchDelegate(rect, clockColorAndSizeButton)
                 view.setTouchDelegate(touchDelegate)
             }
 
-            val carouselViewStub: ViewStub = view.requireViewById(R.id.clock_carousel_view_stub)
+            val carouselViewStub: ViewStub =
+                view.requireViewById(com.android.wallpaper.R.id.clock_carousel_view_stub)
             carouselViewStub.layoutResource = R.layout.clock_carousel_view
             val carouselView = carouselViewStub.inflate() as ClockCarouselView
 
diff --git a/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt b/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
index 0e3b716..fb2462f 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
@@ -23,7 +23,7 @@
 import android.widget.TextView
 import androidx.recyclerview.widget.RecyclerView
 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordanceSlotViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 
 /** Adapts between lock screen quick affordance slot items and views. */
 class SlotTabAdapter : RecyclerView.Adapter<SlotTabAdapter.ViewHolder>() {
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
index 3ac52ad..3b583f3 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
@@ -34,7 +34,7 @@
 import com.android.customization.picker.common.ui.view.ItemSpacing
 import com.android.customization.picker.quickaffordance.ui.adapter.SlotTabAdapter
 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.common.dialog.ui.viewbinder.DialogViewBinder
 import com.android.wallpaper.picker.common.dialog.ui.viewmodel.DialogViewModel
 import com.android.wallpaper.picker.common.icon.ui.viewbinder.IconViewBinder
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordanceSectionViewBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordanceSectionViewBinder.kt
index 7e1f4d3..b771fb7 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordanceSectionViewBinder.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordanceSectionViewBinder.kt
@@ -26,7 +26,7 @@
 import androidx.lifecycle.flowWithLifecycle
 import androidx.lifecycle.lifecycleScope
 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.picker.common.icon.ui.viewbinder.IconViewBinder
 import com.android.wallpaper.picker.common.text.ui.viewbinder.TextViewBinder
 import kotlinx.coroutines.flow.collectLatest
diff --git a/src/com/android/customization/picker/quickaffordance/ui/fragment/KeyguardQuickAffordancePickerFragment.kt b/src/com/android/customization/picker/quickaffordance/ui/fragment/KeyguardQuickAffordancePickerFragment.kt
index 467e5a0..fd79ca5 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/fragment/KeyguardQuickAffordancePickerFragment.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/fragment/KeyguardQuickAffordancePickerFragment.kt
@@ -31,7 +31,7 @@
 import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordancePickerBinder
 import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordancePreviewBinder
 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.module.InjectorProvider
 import com.android.wallpaper.picker.AppbarFragment
 
@@ -97,6 +97,9 @@
     }
 
     override fun getToolbarTextColor(): Int {
-        return ContextCompat.getColor(requireContext(), R.color.system_on_surface)
+        return ContextCompat.getColor(
+            requireContext(),
+            com.android.wallpaper.R.color.system_on_surface
+        )
     }
 }
diff --git a/src/com/android/customization/picker/quickaffordance/ui/section/KeyguardQuickAffordanceSectionController.kt b/src/com/android/customization/picker/quickaffordance/ui/section/KeyguardQuickAffordanceSectionController.kt
index 0c7b250..52bbb0c 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/section/KeyguardQuickAffordanceSectionController.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/section/KeyguardQuickAffordanceSectionController.kt
@@ -24,7 +24,7 @@
 import com.android.customization.picker.quickaffordance.ui.fragment.KeyguardQuickAffordancePickerFragment
 import com.android.customization.picker.quickaffordance.ui.view.KeyguardQuickAffordanceSectionView
 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.config.BaseFlags
 import com.android.wallpaper.model.CustomizationSectionController
 import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController as NavigationController
diff --git a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
index 260c0d3..97afb7a 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
@@ -30,7 +30,7 @@
 import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
 import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
 import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.module.CurrentWallpaperInfoFactory
 import com.android.wallpaper.module.CustomizationSections
 import com.android.wallpaper.picker.common.button.ui.viewmodel.ButtonStyle
@@ -76,7 +76,7 @@
                     context = applicationContext,
                     authority =
                         applicationContext.getString(
-                            R.string.lock_screen_preview_provider_authority,
+                            com.android.wallpaper.R.string.lock_screen_preview_provider_authority,
                         ),
                 ),
             initialExtrasProvider = {
diff --git a/src/com/android/customization/picker/settings/ui/section/MoreSettingsSectionController.kt b/src/com/android/customization/picker/settings/ui/section/MoreSettingsSectionController.kt
index 5e890cd..7302b0f 100644
--- a/src/com/android/customization/picker/settings/ui/section/MoreSettingsSectionController.kt
+++ b/src/com/android/customization/picker/settings/ui/section/MoreSettingsSectionController.kt
@@ -23,7 +23,7 @@
 import android.provider.Settings
 import android.view.LayoutInflater
 import com.android.customization.picker.settings.ui.view.MoreSettingsSectionView
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.model.CustomizationSectionController
 
 class MoreSettingsSectionController : CustomizationSectionController<MoreSettingsSectionView> {
diff --git a/src/com/android/customization/picker/themedicon/ThemedIconSectionView.java b/src/com/android/customization/picker/themedicon/ThemedIconSectionView.java
index f83da8c..2bbe74e 100644
--- a/src/com/android/customization/picker/themedicon/ThemedIconSectionView.java
+++ b/src/com/android/customization/picker/themedicon/ThemedIconSectionView.java
@@ -21,7 +21,7 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.wallpaper.R;
+import com.android.themepicker.R;
 import com.android.wallpaper.picker.SectionView;
 
 /**
diff --git a/src_override/com/android/wallpaper/module/AppModule.kt b/src_override/com/android/wallpaper/module/AppModule.kt
index 0d80e22..8de80d6 100644
--- a/src_override/com/android/wallpaper/module/AppModule.kt
+++ b/src_override/com/android/wallpaper/module/AppModule.kt
@@ -24,6 +24,8 @@
 import com.android.customization.module.logging.ThemesUserEventLogger
 import com.android.customization.module.logging.ThemesUserEventLoggerImpl
 import com.android.wallpaper.module.logging.UserEventLogger
+import com.android.wallpaper.picker.preview.data.util.DefaultLiveWallpaperDownloader
+import com.android.wallpaper.picker.preview.data.util.LiveWallpaperDownloader
 import com.android.wallpaper.util.converter.DefaultWallpaperModelFactory
 import com.android.wallpaper.util.converter.WallpaperModelFactory
 import dagger.Binds
@@ -53,6 +55,12 @@
         impl: DefaultWallpaperModelFactory
     ): WallpaperModelFactory
 
+    @Binds
+    @Singleton
+    abstract fun bindLiveWallpaperDownloader(
+        impl: DefaultLiveWallpaperDownloader
+    ): LiveWallpaperDownloader
+
     companion object {
         @Provides
         @Singleton
diff --git a/src_override/com/android/wallpaper/picker/di/modules/EffectsModule.kt b/src_override/com/android/wallpaper/picker/di/modules/EffectsModule.kt
new file mode 100644
index 0000000..f49a273
--- /dev/null
+++ b/src_override/com/android/wallpaper/picker/di/modules/EffectsModule.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.wallpaper.picker.di.modules
+
+import com.android.wallpaper.effects.DefaultEffectsController
+import com.android.wallpaper.effects.EffectsController
+import dagger.Binds
+import dagger.Module
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
+
+/** This class provides the singleton scoped effects controller for wallpaper picker. */
+@InstallIn(SingletonComponent::class)
+@Module
+internal abstract class EffectsModule {
+
+    @Binds
+    @Singleton
+    abstract fun bindEffectsController(impl: DefaultEffectsController): EffectsController
+}
diff --git a/tests/Android.bp b/tests/Android.bp
index 93851bd..690a1b6 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -25,7 +25,7 @@
     name: "ThemePickerTests_srcs",
 
     visibility: [
-        "//visibility:public"
+        "//visibility:public",
     ],
 
     srcs: [
@@ -48,6 +48,7 @@
         "WallpaperPicker2TestLib",
         "WallpaperPicker2TestRunner",
         "ThemePickerTestLib",
+        "SystemUICustomizationTestUtils",
         "androidx.test.espresso.core",
         "androidx.test.espresso.contrib",
         "androidx.test.espresso.intents",
@@ -61,6 +62,7 @@
         "junit",
         "kotlinx_coroutines_test",
         "truth",
+        "flag-junit",
     ],
     libs: [
         "android.test.runner",
diff --git a/tests/common/Android.bp b/tests/common/Android.bp
index 9215ba6..06c3834 100644
--- a/tests/common/Android.bp
+++ b/tests/common/Android.bp
@@ -23,12 +23,12 @@
 android_library {
     name: "ThemePickerTestLib",
 
-    defaults: ["ThemePicker_common_defaults"],
     srcs: [
         "src/**/*.java",
         "src/**/*.kt",
     ],
     static_libs: [
+        "ThemePickerLib",
         "WallpaperPicker2TestLib",
         "androidx.annotation_annotation",
         "kotlinx_coroutines_test",
diff --git a/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt b/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
index b0ffcb6..caa5029 100644
--- a/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
+++ b/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
@@ -4,7 +4,6 @@
 import android.content.Context
 import android.content.res.Resources
 import androidx.activity.ComponentActivity
-import com.android.customization.model.color.ThemedWallpaperColorResources
 import com.android.customization.model.color.WallpaperColorResources
 import com.android.customization.module.CustomizationInjector
 import com.android.customization.module.CustomizationPreferences
@@ -56,7 +55,7 @@
         wallpaperColors: WallpaperColors,
         context: Context
     ): WallpaperColorResources {
-        return ThemedWallpaperColorResources(wallpaperColors, context)
+        throw UnsupportedOperationException("not implemented")
     }
 
     override fun getColorPickerInteractor(
@@ -77,7 +76,6 @@
         interactor: ClockPickerInteractor,
         clockViewFactory: ClockViewFactory,
         resources: Resources,
-        logger: ThemesUserEventLogger,
     ): ClockCarouselViewModel.Factory {
         throw UnsupportedOperationException("not implemented")
     }
@@ -98,7 +96,7 @@
     // TestInjector overrides
     /////////////////
 
-    override fun getUserEventLogger(context: Context): UserEventLogger {
+    override fun getUserEventLogger(): UserEventLogger {
         return themesUserEventLogger
     }
 }
diff --git a/tests/module/src/com/android/customization/TestModule.kt b/tests/module/src/com/android/customization/TestModule.kt
index 1ad63a9..4600434 100644
--- a/tests/module/src/com/android/customization/TestModule.kt
+++ b/tests/module/src/com/android/customization/TestModule.kt
@@ -14,6 +14,8 @@
 import com.android.wallpaper.module.WallpaperPreferences
 import com.android.wallpaper.module.logging.TestUserEventLogger
 import com.android.wallpaper.module.logging.UserEventLogger
+import com.android.wallpaper.picker.preview.data.util.DefaultLiveWallpaperDownloader
+import com.android.wallpaper.picker.preview.data.util.LiveWallpaperDownloader
 import com.android.wallpaper.testing.TestInjector
 import com.android.wallpaper.testing.TestWallpaperPreferences
 import com.android.wallpaper.util.converter.DefaultWallpaperModelFactory
@@ -70,6 +72,12 @@
         impl: DefaultWallpaperModelFactory
     ): WallpaperModelFactory
 
+    @Binds
+    @Singleton
+    abstract fun bindLiveWallpaperDownloader(
+        impl: DefaultLiveWallpaperDownloader
+    ): LiveWallpaperDownloader
+
     companion object {
         @Provides
         @Singleton
diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index 4c67591..4fecaef 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -25,6 +25,8 @@
         "junit",
         "kotlinx_coroutines_test",
         "truth",
+        "SystemUICustomizationTestUtils",
+        "ThemePickerApplicationLib",
     ],
 
     libs: [
diff --git a/tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt b/tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
index b572401..53ade86 100644
--- a/tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
+++ b/tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
@@ -31,7 +31,7 @@
 import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
 import com.android.systemui.shared.customization.data.content.FakeCustomizationProviderClient
 import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
-import com.android.wallpaper.R
+import com.android.themepicker.R
 import com.android.wallpaper.module.InjectorProvider
 import com.android.wallpaper.picker.common.icon.ui.viewmodel.Icon
 import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
diff --git a/tests/robotests/src/com/android/customization/picker/notifications/data/repository/NotificationsRepositoryTest.kt b/tests/robotests/src/com/android/customization/picker/notifications/data/repository/NotificationsRepositoryTest.kt
deleted file mode 100644
index be799db..0000000
--- a/tests/robotests/src/com/android/customization/picker/notifications/data/repository/NotificationsRepositoryTest.kt
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.android.customization.picker.notifications.data.repository
-
-import android.provider.Settings
-import androidx.test.filters.SmallTest
-import com.android.customization.picker.notifications.shared.model.NotificationSettingsModel
-import com.android.wallpaper.testing.FakeSecureSettingsRepository
-import com.android.wallpaper.testing.collectLastValue
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.StandardTestDispatcher
-import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.runTest
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
-
-@OptIn(ExperimentalCoroutinesApi::class)
-@SmallTest
-@RunWith(JUnit4::class)
-class NotificationsRepositoryTest {
-
-    private lateinit var underTest: NotificationsRepository
-
-    private lateinit var testScope: TestScope
-    private lateinit var secureSettingsRepository: FakeSecureSettingsRepository
-
-    @Before
-    fun setUp() {
-        val testDispatcher = StandardTestDispatcher()
-        testScope = TestScope(testDispatcher)
-        secureSettingsRepository = FakeSecureSettingsRepository()
-
-        underTest =
-            NotificationsRepository(
-                scope = testScope.backgroundScope,
-                backgroundDispatcher = testDispatcher,
-                secureSettingsRepository = secureSettingsRepository,
-            )
-    }
-
-    @Test
-    fun settings() =
-        testScope.runTest {
-            val settings = collectLastValue(underTest.settings)
-
-            secureSettingsRepository.set(
-                name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
-                value = 1,
-            )
-            assertThat(settings())
-                .isEqualTo(NotificationSettingsModel(isShowNotificationsOnLockScreenEnabled = true))
-
-            secureSettingsRepository.set(
-                name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
-                value = 0,
-            )
-            assertThat(settings())
-                .isEqualTo(
-                    NotificationSettingsModel(isShowNotificationsOnLockScreenEnabled = false)
-                )
-        }
-
-    @Test
-    fun setSettings() =
-        testScope.runTest {
-            val settings = collectLastValue(underTest.settings)
-
-            val model1 = NotificationSettingsModel(isShowNotificationsOnLockScreenEnabled = true)
-            underTest.setSettings(model1)
-            assertThat(settings()).isEqualTo(model1)
-
-            val model2 = NotificationSettingsModel(isShowNotificationsOnLockScreenEnabled = false)
-            underTest.setSettings(model2)
-            assertThat(settings()).isEqualTo(model2)
-        }
-}
diff --git a/tests/robotests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt b/tests/robotests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt
index 1ff1fc8..8966de5 100644
--- a/tests/robotests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt
+++ b/tests/robotests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt
@@ -20,16 +20,13 @@
 import androidx.test.filters.SmallTest
 import com.android.customization.module.logging.TestThemesUserEventLogger
 import com.android.customization.module.logging.ThemesUserEventLogger
-import com.android.customization.picker.notifications.data.repository.NotificationsRepository
-import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
-import com.android.customization.picker.notifications.domain.interactor.NotificationsSnapshotRestorer
-import com.android.wallpaper.testing.FakeSecureSettingsRepository
-import com.android.wallpaper.testing.FakeSnapshotStore
+import com.android.systemui.shared.notifications.data.repository.NotificationSettingsRepository
+import com.android.systemui.shared.notifications.domain.interactor.NotificationSettingsInteractor
+import com.android.systemui.shared.settings.data.repository.FakeSecureSettingsRepository
 import com.android.wallpaper.testing.collectLastValue
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.resetMain
@@ -51,7 +48,7 @@
     private lateinit var underTest: NotificationSectionViewModel
 
     private lateinit var testScope: TestScope
-    private lateinit var interactor: NotificationsInteractor
+    private lateinit var interactor: NotificationSettingsInteractor
 
     @Before
     fun setUp() {
@@ -59,19 +56,13 @@
         Dispatchers.setMain(testDispatcher)
         testScope = TestScope(testDispatcher)
         interactor =
-            NotificationsInteractor(
+            NotificationSettingsInteractor(
                 repository =
-                    NotificationsRepository(
+                    NotificationSettingsRepository(
                         scope = testScope.backgroundScope,
                         backgroundDispatcher = testDispatcher,
                         secureSettingsRepository = FakeSecureSettingsRepository(),
                     ),
-                snapshotRestorer = {
-                    NotificationsSnapshotRestorer(
-                            interactor = interactor,
-                        )
-                        .apply { runBlocking { setUpSnapshotRestorer(FakeSnapshotStore()) } }
-                },
             )
 
         underTest =
