diff --git a/res/values/styles.xml b/res/values/styles.xml
index 49570ab..622cd90 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -15,6 +15,8 @@
      limitations under the License.
 -->
 <resources>
+
+    <!-- Main themes -->
     <style name="CustomizationTheme" parent="@android:style/Theme.DeviceDefault.Settings">
         <item name="colorPrimary">?android:colorPrimary</item>
 
@@ -30,6 +32,7 @@
         <item name="actionButtonStyle">?android:actionButtonStyle</item>
         <item name="actionMenuTextColor">?android:actionMenuTextColor</item>
     </style>
+
     <style name="CustomizationTheme.NoActionBar">
         <item name="android:windowActionBar">false</item>
         <item name="android:windowNoTitle">true</item>
@@ -37,6 +40,7 @@
         <item name="android:windowDrawsSystemBarBackgrounds">true</item>
     </style>
 
+    <!-- Bottom nav -->
     <style name="BottomNavStyle">
         <item name="itemIconTint">@color/bottom_nav_item_color</item>
         <item name="itemTextColor">@color/bottom_nav_item_color</item>
@@ -50,6 +54,7 @@
         <item name="android:textSize">@dimen/bottom_navbar_font_text_size</item>
     </style>
 
+    <!-- Common components and widgets -->
     <style name="HeaderTextAppearance" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
         <item name="android:textFontWeight">400</item>
     </style>
@@ -58,13 +63,14 @@
 
     <style name="ActionSecondaryButton" parent="android:Widget.DeviceDefault.Button.Borderless.Colored"/>
 
+    <!-- Option tiles -->
     <style name="OptionTitleTextAppearance" parent="HeaderTextAppearance">
         <item name="android:textColor">@color/option_title_color</item>
         <item name="android:textAlignment">center</item>
         <item name="android:textSize">@dimen/theme_option_title_font_text_size</item>
     </style>
 
-
+    <!-- Preview cards -->
     <style name="PreviewCard" parent="CardView">
         <item name="cardCornerRadius">?android:dialogCornerRadius</item>
         <item name="android:clipChildren">true</item>
@@ -99,6 +105,7 @@
         <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault</item>
     </style>
 
+    <!-- Custom theme editor -->
     <style name="EditLabelStyle">
         <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault</item>
         <item name="android:textColor">@color/material_white_100</item>
diff --git a/src/com/android/customization/model/ResourceConstants.java b/src/com/android/customization/model/ResourceConstants.java
index d8c32ff..0b1dec2 100644
--- a/src/com/android/customization/model/ResourceConstants.java
+++ b/src/com/android/customization/model/ResourceConstants.java
@@ -84,7 +84,8 @@
             "ic_qs_flashlight",
             "ic_qs_auto_rotate",
             "ic_qs_airplane",
-            "ic_signal_cellular_3_4_bar"
+            "ic_signal_cellular_3_4_bar",
+            "ic_battery_80_24dp"
     };
 
     ArrayList<String> sTargetPackages = new ArrayList<>();
diff --git a/src/com/android/customization/picker/theme/ThemePreviewPage.java b/src/com/android/customization/picker/theme/ThemePreviewPage.java
index 224a8f8..47282eb 100644
--- a/src/com/android/customization/picker/theme/ThemePreviewPage.java
+++ b/src/com/android/customization/picker/theme/ThemePreviewPage.java
@@ -82,7 +82,7 @@
          * Maps which icon from ResourceConstants#ICONS_FOR_PREVIEW to use for each icon in the
          * top bar (fake "status bar") of the cover page.
          */
-        private static final int [] sTopBarIconToPreviewIcon = new int [] { 0, 6, 2 };
+        private static final int [] sTopBarIconToPreviewIcon = new int [] { 0, 6, 7 };
 
         private final Typeface mHeadlineFont;
         private final List<Drawable> mIcons;
@@ -194,9 +194,14 @@
             ViewGroup iconsContainer = card.findViewById(R.id.theme_preview_top_bar_icons);
 
             for (int i = 0; i < iconsContainer.getChildCount(); i++) {
-                ((ImageView) iconsContainer.getChildAt(i))
-                        .setImageDrawable(mIcons.get(sTopBarIconToPreviewIcon[i]).getConstantState()
-                                .newDrawable().mutate());
+                int iconIndex = sTopBarIconToPreviewIcon[i];
+                if (iconIndex < mIcons.size()) {
+                    ((ImageView) iconsContainer.getChildAt(i))
+                            .setImageDrawable(mIcons.get(iconIndex).getConstantState()
+                                    .newDrawable().mutate());
+                } else {
+                    iconsContainer.getChildAt(i).setVisibility(View.GONE);
+                }
             }
 
             ViewGroup body = card.findViewById(R.id.theme_preview_card_body_container);
