diff --git a/res/xml/omni_dashboard_fragment.xml b/res/xml/omni_dashboard_fragment.xml
index 0802e18..4694ff7 100644
--- a/res/xml/omni_dashboard_fragment.xml
+++ b/res/xml/omni_dashboard_fragment.xml
@@ -19,7 +19,7 @@
     android:title="@string/header_category_omni">
 
     <Preference
-        android:key="style_settings"
+        android:key="style_settings_new"
         android:title="@string/style_settings_title"
         android:summary="@string/style_settings_summary"
         android:icon="@drawable/ic_settings_style"
diff --git a/src/org/omnirom/omnigears/OmniDashboardFragment.java b/src/org/omnirom/omnigears/OmniDashboardFragment.java
index 3f105fc..318a600 100644
--- a/src/org/omnirom/omnigears/OmniDashboardFragment.java
+++ b/src/org/omnirom/omnigears/OmniDashboardFragment.java
@@ -18,6 +18,9 @@
 package org.omnirom.omnigears;
 
 import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.support.v7.preference.Preference;
 import android.provider.SearchIndexableResource;
 
 import com.android.internal.logging.nano.MetricsProto;
@@ -35,6 +38,18 @@
 
     private static final String TAG = "OmniDashboardFragment";
     public static final String CATEGORY_OMNI = "com.android.settings.category.ia.omni";
+    private static final String KEY_DEVICE_PARTS = "device_parts";
+
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        super.onCreatePreferences(savedInstanceState, rootKey);
+        if (!isDevicePartsSupported(getContext())) {
+            Preference pref = getPreferenceScreen().findPreference(KEY_DEVICE_PARTS);
+            if (pref != null) {
+                getPreferenceScreen().removePreference(pref);
+            }
+        }
+    }
 
     @Override
     public int getMetricsCategory() {
@@ -56,6 +71,16 @@
         return null;
     }
 
+    private static boolean isDevicePartsSupported(Context context) {
+        boolean devicePartsSupported = false;
+        try {
+            devicePartsSupported = context.getPackageManager().getPackageInfo(
+                    "org.omnirom.device", 0).versionCode > 0;
+        } catch (PackageManager.NameNotFoundException e) {
+        }
+        return devicePartsSupported;
+    }
+
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
 
@@ -65,5 +90,14 @@
                     sir.xmlResId = R.xml.omni_dashboard_fragment;
                     return Arrays.asList(sir);
                 }
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    ArrayList<String> result = new ArrayList<String>();
+                    if (!isDevicePartsSupported(context)) {
+                        result.add(KEY_DEVICE_PARTS);
+                    }
+                    return result;
+                }
             };
 }
