diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 3980ac7..0126ae6 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -73,14 +73,9 @@
     <string name="something_went_wrong" msgid="529840112449799117">"अरेरे! काहीतरी चूक झाली."</string>
     <string name="theme_preview_icons_section_title" msgid="7064768910744000643">"रंग / आयकन"</string>
     <string name="style_info_description" msgid="2612473574431003251">"फॉंट, आयकन, ॲपचा आकार आणि रंग यांचे पूर्वावलोकन करा"</string>
-    <!-- no translation found for accessibility_custom_font_title (966867359157303705) -->
-    <skip />
-    <!-- no translation found for accessibility_custom_icon_title (5753297905849062296) -->
-    <skip />
-    <!-- no translation found for accessibility_custom_color_title (4124246598886320663) -->
-    <skip />
-    <!-- no translation found for accessibility_custom_shape_title (7708408259374643129) -->
-    <skip />
-    <!-- no translation found for accessibility_custom_name_title (5494460518085463262) -->
-    <skip />
+    <string name="accessibility_custom_font_title" msgid="966867359157303705">"कस्टम फॉंट"</string>
+    <string name="accessibility_custom_icon_title" msgid="5753297905849062296">"कस्टम आयकन"</string>
+    <string name="accessibility_custom_color_title" msgid="4124246598886320663">"कस्टम रंग"</string>
+    <string name="accessibility_custom_shape_title" msgid="7708408259374643129">"कस्टम आकार"</string>
+    <string name="accessibility_custom_name_title" msgid="5494460518085463262">"कस्टम शैलीचे नाव"</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index d21c6a6..89fc4d6 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -73,14 +73,9 @@
     <string name="something_went_wrong" msgid="529840112449799117">"हत्तेरिका! केही चिज गडबड भयो।"</string>
     <string name="theme_preview_icons_section_title" msgid="7064768910744000643">"रङ / आइकनहरू"</string>
     <string name="style_info_description" msgid="2612473574431003251">"फन्ट, आइकन, एपको आकृति र रङको प्रिभ्यू"</string>
-    <!-- no translation found for accessibility_custom_font_title (966867359157303705) -->
-    <skip />
-    <!-- no translation found for accessibility_custom_icon_title (5753297905849062296) -->
-    <skip />
-    <!-- no translation found for accessibility_custom_color_title (4124246598886320663) -->
-    <skip />
-    <!-- no translation found for accessibility_custom_shape_title (7708408259374643129) -->
-    <skip />
-    <!-- no translation found for accessibility_custom_name_title (5494460518085463262) -->
-    <skip />
+    <string name="accessibility_custom_font_title" msgid="966867359157303705">"आफूले रोजेको फन्ट"</string>
+    <string name="accessibility_custom_icon_title" msgid="5753297905849062296">"आफूले रोजेको आइकन"</string>
+    <string name="accessibility_custom_color_title" msgid="4124246598886320663">"आफूले रोजेको रङ"</string>
+    <string name="accessibility_custom_shape_title" msgid="7708408259374643129">"आफूले रोजेको आकार"</string>
+    <string name="accessibility_custom_name_title" msgid="5494460518085463262">"शैलीको आफूले रोजेको नाम"</string>
 </resources>
diff --git a/src/com/android/customization/module/DefaultCustomizationInjector.java b/src/com/android/customization/module/DefaultCustomizationInjector.java
index b8cdc6d..3b23617 100644
--- a/src/com/android/customization/module/DefaultCustomizationInjector.java
+++ b/src/com/android/customization/module/DefaultCustomizationInjector.java
@@ -111,6 +111,11 @@
     }
 
     @Override
+    public String getDownloadableIntentAction() {
+        return null;
+    }
+
+    @Override
     public synchronized PerformanceMonitor getPerformanceMonitor() {
         if (mPerformanceMonitor == null) {
             mPerformanceMonitor = new PerformanceMonitor() {
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index de8aa69..7b58274 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -287,9 +287,10 @@
                 mSelectedTheme = previouslySelectedTheme != null
                         ? previouslySelectedTheme
                         : activeTheme;
-                // 3. Select the default theme if there is no matching custom enabled theme.
+                // 3. Select the first system theme(default theme currently)
+                //    if there is no matching custom enabled theme.
                 if (mSelectedTheme == null) {
-                    mSelectedTheme = findDefaultThemeBundle(options);
+                    mSelectedTheme = findFirstSystemThemeBundle(options);
                 }
 
                 mOptionsController.setSelectedOption(mSelectedTheme);
@@ -324,8 +325,7 @@
                 }
             }
             if (mSelectedTheme == null) {
-                // Select the default theme if there is no matching custom enabled theme
-                mSelectedTheme = findDefaultThemeBundle(options);
+                mSelectedTheme = findFirstSystemThemeBundle(options);
             }
             mOptionsController.setSelectedOption(mSelectedTheme);
             // Set selected option above will show BottomActionBar,
@@ -334,11 +334,9 @@
         }, true);
     }
 
-    private ThemeBundle findDefaultThemeBundle(List<ThemeBundle> options) {
-        String defaultThemeTitle =
-                getActivity().getResources().getString(R.string.default_theme_title);
+    private ThemeBundle findFirstSystemThemeBundle(List<ThemeBundle> options) {
         for (ThemeBundle bundle : options) {
-            if (bundle.getTitle().equals(defaultThemeTitle)) {
+            if (!(bundle instanceof CustomTheme)) {
                 return bundle;
             }
         }
diff --git a/src_override/com/android/wallpaper/module/WallpapersInjector.java b/src_override/com/android/wallpaper/module/WallpapersInjector.java
index d113c1b..f1748b4 100755
--- a/src_override/com/android/wallpaper/module/WallpapersInjector.java
+++ b/src_override/com/android/wallpaper/module/WallpapersInjector.java
@@ -103,4 +103,9 @@
     public synchronized LoggingOptInStatusProvider getLoggingOptInStatusProvider(Context context) {
         return null;
     }
+
+    @Override
+    public String getDownloadableIntentAction() {
+        return null;
+    }
 }
