diff --git a/src_override/com/android/wallpaper/modules/ThemePickerAppModule.kt b/src_override/com/android/wallpaper/modules/ThemePickerAppModule.kt
index ef72c1e..72eb34a 100644
--- a/src_override/com/android/wallpaper/modules/ThemePickerAppModule.kt
+++ b/src_override/com/android/wallpaper/modules/ThemePickerAppModule.kt
@@ -58,43 +58,48 @@
 @Module
 @InstallIn(SingletonComponent::class)
 abstract class ThemePickerAppModule {
+
+    @Binds
+    @Singleton
+    abstract fun bindClockPickerRepository(impl: ClockPickerRepositoryImpl): ClockPickerRepository
+
+    @Binds
+    @Singleton
+    abstract fun bindColorPickerRepository(impl: ColorPickerRepositoryImpl): ColorPickerRepository
+
     @Binds
     @Singleton
     abstract fun bindCustomizationInjector(impl: ThemePickerInjector): CustomizationInjector
 
     @Binds
     @Singleton
-    abstract fun bindUserEventLogger(impl: ThemesUserEventLoggerImpl): UserEventLogger
-
-    @Binds
-    @Singleton
-    abstract fun bindThemesUserEventLogger(impl: ThemesUserEventLoggerImpl): ThemesUserEventLogger
-
-    @Binds
-    @Singleton
-    abstract fun bindWallpaperModelFactory(
-        impl: DefaultWallpaperModelFactory
-    ): WallpaperModelFactory
-
-    @Binds
-    @Singleton
-    abstract fun bindPartnerProvider(impl: DefaultPartnerProvider): PartnerProvider
-
-    @Binds
-    @Singleton
-    abstract fun bindImageEffectDialogUtil(
-        impl: DefaultImageEffectDialogUtil
-    ): ImageEffectDialogUtil
-
-    @Binds
-    @Singleton
     abstract fun bindCustomizationOptionsBinder(
         impl: ThemePickerCustomizationOptionsBinder
     ): CustomizationOptionsBinder
 
     @Binds
     @Singleton
-    abstract fun bindColorPickerRepository(impl: ColorPickerRepositoryImpl): ColorPickerRepository
+    abstract fun bindImageEffectDialogUtil(
+        impl: DefaultImageEffectDialogUtil
+    ): ImageEffectDialogUtil
+
+    @Binds
+    @Singleton
+    abstract fun bindPartnerProvider(impl: DefaultPartnerProvider): PartnerProvider
+
+    @Binds
+    @Singleton
+    abstract fun bindThemesUserEventLogger(impl: ThemesUserEventLoggerImpl): ThemesUserEventLogger
+
+    @Binds
+    @Singleton
+    abstract fun bindUserEventLogger(impl: ThemesUserEventLoggerImpl): UserEventLogger
+
+    @Binds
+    @Singleton
+    abstract fun bindWallpaperModelFactory(
+        impl: DefaultWallpaperModelFactory
+    ): WallpaperModelFactory
 
     @Binds
     @Singleton
@@ -102,14 +107,27 @@
         impl: DefaultCustomizationPreferences
     ): WallpaperPreferences
 
-    @Binds
-    @Singleton
-    abstract fun bindClockPickerRepository(impl: ClockPickerRepositoryImpl): ClockPickerRepository
-
     companion object {
 
         @Provides
         @Singleton
+        fun provideClockRegistry(
+            @ApplicationContext context: Context,
+            @MainDispatcher mainScope: CoroutineScope,
+            @MainDispatcher mainDispatcher: CoroutineDispatcher,
+            @BackgroundDispatcher bgDispatcher: CoroutineDispatcher,
+        ): ClockRegistry {
+            return ClockRegistryProvider(
+                    context = context,
+                    coroutineScope = mainScope,
+                    mainDispatcher = mainDispatcher,
+                    backgroundDispatcher = bgDispatcher,
+                )
+                .get()
+        }
+
+        @Provides
+        @Singleton
         fun provideColorCustomizationManager(
             @ApplicationContext context: Context
         ): ColorCustomizationManager {
@@ -133,22 +151,5 @@
         ): SecureSettingsRepository {
             return SecureSettingsRepositoryImpl(context.contentResolver, bgDispatcher)
         }
-
-        @Provides
-        @Singleton
-        fun provideClockRegistry(
-            @ApplicationContext context: Context,
-            @MainDispatcher mainScope: CoroutineScope,
-            @MainDispatcher mainDispatcher: CoroutineDispatcher,
-            @BackgroundDispatcher bgDispatcher: CoroutineDispatcher,
-        ): ClockRegistry {
-            return ClockRegistryProvider(
-                    context = context,
-                    coroutineScope = mainScope,
-                    mainDispatcher = mainDispatcher,
-                    backgroundDispatcher = bgDispatcher,
-                )
-                .get()
-        }
     }
 }
diff --git a/tests/module/src/com/android/wallpaper/ThemePickerTestModule.kt b/tests/module/src/com/android/wallpaper/ThemePickerTestModule.kt
index aeacaea..4069e16 100644
--- a/tests/module/src/com/android/wallpaper/ThemePickerTestModule.kt
+++ b/tests/module/src/com/android/wallpaper/ThemePickerTestModule.kt
@@ -71,25 +71,14 @@
     replaces = [EffectsModule::class, ThemePickerAppModule::class]
 )
 abstract class ThemePickerTestModule {
-    //// WallpaperPicker2 prod
-
-    @Binds @Singleton abstract fun bindInjector(impl: TestCustomizationInjector): Injector
-
-    @Binds @Singleton abstract fun bindUserEventLogger(impl: TestUserEventLogger): UserEventLogger
-
-    @Binds @Singleton abstract fun bindRequester(impl: FakeDefaultRequester): Requester
 
     @Binds
     @Singleton
-    abstract fun bindThemesUserEventLogger(impl: TestThemesUserEventLogger): ThemesUserEventLogger
+    abstract fun bindClockPickerRepository(impl: ClockPickerRepositoryImpl): ClockPickerRepository
 
     @Binds
     @Singleton
-    abstract fun bindWallpaperPreferences(
-        impl: TestDefaultCustomizationPreferences
-    ): WallpaperPreferences
-
-    //// ThemePicker prod
+    abstract fun bindColorPickerRepository(impl: ColorPickerRepositoryImpl): ColorPickerRepository
 
     @Binds
     @Singleton
@@ -97,45 +86,71 @@
 
     @Binds
     @Singleton
-    abstract fun bindCustomizationPreferences(
-        impl: TestDefaultCustomizationPreferences
-    ): CustomizationPreferences
-
-    @Binds
-    @Singleton
-    abstract fun bindWallpaperModelFactory(
-        impl: DefaultWallpaperModelFactory
-    ): WallpaperModelFactory
-
-    @Binds
-    @Singleton
-    abstract fun providePartnerProvider(impl: TestPartnerProvider): PartnerProvider
-
-    @Binds
-    @Singleton
-    abstract fun bindImageEffectDialogUtil(
-        impl: DefaultImageEffectDialogUtil
-    ): ImageEffectDialogUtil
-
-    @Binds
-    @Singleton
-    abstract fun bindEffectsController(impl: FakeEffectsController): EffectsController
-
-    @Binds
-    @Singleton
     abstract fun bindCustomizationOptionsBinder(
         impl: DefaultCustomizationOptionsBinder
     ): CustomizationOptionsBinder
 
     @Binds
     @Singleton
-    abstract fun bindColorPickerRepository(impl: ColorPickerRepositoryImpl): ColorPickerRepository
+    abstract fun bindCustomizationPreferences(
+        impl: TestDefaultCustomizationPreferences
+    ): CustomizationPreferences
 
     @Binds
     @Singleton
-    abstract fun bindClockPickerRepository(impl: ClockPickerRepositoryImpl): ClockPickerRepository
+    abstract fun bindEffectsController(impl: FakeEffectsController): EffectsController
+
+    @Binds
+    @Singleton
+    abstract fun bindImageEffectDialogUtil(
+        impl: DefaultImageEffectDialogUtil
+    ): ImageEffectDialogUtil
+
+    @Binds @Singleton abstract fun bindInjector(impl: TestCustomizationInjector): Injector
+
+    @Binds
+    @Singleton
+    abstract fun providePartnerProvider(impl: TestPartnerProvider): PartnerProvider
+
+    @Binds @Singleton abstract fun bindRequester(impl: FakeDefaultRequester): Requester
+
+    @Binds
+    @Singleton
+    abstract fun bindThemesUserEventLogger(impl: TestThemesUserEventLogger): ThemesUserEventLogger
+
+    @Binds @Singleton abstract fun bindUserEventLogger(impl: TestUserEventLogger): UserEventLogger
+
+    @Binds
+    @Singleton
+    abstract fun bindWallpaperModelFactory(
+        impl: DefaultWallpaperModelFactory
+    ): WallpaperModelFactory
+
+    @Binds
+    @Singleton
+    abstract fun bindWallpaperPreferences(
+        impl: TestDefaultCustomizationPreferences
+    ): WallpaperPreferences
 
     companion object {
+
+        @Provides
+        @Singleton
+        fun provideClockRegistry(
+            @ApplicationContext context: Context,
+            @MainDispatcher mainScope: CoroutineScope,
+            @MainDispatcher mainDispatcher: CoroutineDispatcher,
+            @BackgroundDispatcher bgDispatcher: CoroutineDispatcher,
+        ): ClockRegistry {
+            return ClockRegistryProvider(
+                    context = context,
+                    coroutineScope = mainScope,
+                    mainDispatcher = mainDispatcher,
+                    backgroundDispatcher = bgDispatcher,
+                )
+                .get()
+        }
+
         @Provides
         @Singleton
         fun provideColorCustomizationManager(): ColorCustomizationManager {
@@ -162,22 +177,5 @@
         ): SecureSettingsRepository {
             return SecureSettingsRepositoryImpl(context.contentResolver, bgDispatcher)
         }
-
-        @Provides
-        @Singleton
-        fun provideClockRegistry(
-            @ApplicationContext context: Context,
-            @MainDispatcher mainScope: CoroutineScope,
-            @MainDispatcher mainDispatcher: CoroutineDispatcher,
-            @BackgroundDispatcher bgDispatcher: CoroutineDispatcher,
-        ): ClockRegistry {
-            return ClockRegistryProvider(
-                    context = context,
-                    coroutineScope = mainScope,
-                    mainDispatcher = mainDispatcher,
-                    backgroundDispatcher = bgDispatcher,
-                )
-                .get()
-        }
     }
 }
