diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 8e3e910..7d56eab 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -416,6 +416,11 @@
     <!-- Hostname setting -->
     <string name="device_hostname">Device hostname</string>
 
+    <!-- OMS -->
+    <string name="theming_title">Theming</string>
+    <string name="oms_app_title">Substratum theme engine</string>
+    <string name="oms_app_summary">Start Substratum experience</string>
+
     <string name="status_bar_ime_notification_title">Show IME notification</string>
     <string name="status_bar_ime_notification_summary">If navigation bar is not available</string>
     <string name="navigation_bar_ime_button_title">Show IME navigation bar button</string>
@@ -435,7 +440,7 @@
     <string name="omni_notification_light_settings_summary">Customization of notification led lights for applications</string>
     <string name="omni_battery_light_settings_summary">Customization of notification led lights for battery</string>
 
-    <string name="night_mode_title">Theme</string>
+    <string name="night_mode_title">Light/Dark theme</string>
     <string name="night_mode_summary">%s</string>
     <string name="night_mode_no">Light</string>
     <string name="night_mode_yes">Dark</string>
diff --git a/res/xml/style_settings.xml b/res/xml/style_settings.xml
index 3f55725..f3474e5 100644
--- a/res/xml/style_settings.xml
+++ b/res/xml/style_settings.xml
@@ -17,23 +17,33 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
 
-        <ListPreference
-            android:key="night_mode"
-            android:title="@string/night_mode_title"
-            settings:keywords="@string/keywords_display_night_mode"
-            android:summary="@string/night_mode_summary"
-            android:entries="@array/night_mode_entries"
-            android:entryValues="@array/night_mode_values" />
+        <PreferenceCategory
+            android:key="category_theming"
+            android:title="@string/theming_title">
 
-        <PreferenceScreen
-            android:key="custom_wall_browse"
-            android:title="@string/custom_wall_browse_title"
-            android:summary="@string/custom_wall_browse_summary"
-            android:persistent="false" >
-            <intent android:action="android.intent.action.MAIN"
-                    android:targetPackage="org.omnirom.omnistyle"
-                    android:targetClass="org.omnirom.omnistyle.BrowseWallsActivity" />
+            <Preference
+                android:key="oms_app"
+                android:title="@string/oms_app_title"
+                android:summary="@string/oms_app_summary"/>
+
+            <ListPreference
+                android:key="night_mode"
+                android:title="@string/night_mode_title"
+                settings:keywords="@string/keywords_display_night_mode"
+                android:summary="@string/night_mode_summary"
+                android:entries="@array/night_mode_entries"
+                android:entryValues="@array/night_mode_values" />
+
+            <PreferenceScreen
+                android:key="custom_wall_browse"
+                android:title="@string/custom_wall_browse_title"
+                android:summary="@string/custom_wall_browse_summary"
+                android:persistent="false" >
+                <intent android:action="android.intent.action.MAIN"
+                        android:targetPackage="org.omnirom.omnistyle"
+                        android:targetClass="org.omnirom.omnistyle.BrowseWallsActivity" />
             </PreferenceScreen>
+        </PreferenceCategory>
 
         <PreferenceCategory
             android:key="category_statusbar"
@@ -92,6 +102,5 @@
                 settings:unitsRight="@string/unit_percent"
                 android:persistent="false"
                 android:dependency="status_bar_custom_header" />
-
         </PreferenceCategory>
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
index af98834..061e269 100644
--- a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
@@ -28,6 +28,7 @@
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
 import android.net.TrafficStats;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.support.v7.preference.CheckBoxPreference;
@@ -74,6 +75,8 @@
     private static final String CUSTOM_HEADER_BROWSE = "custom_header_browse";
     private static final String STATUS_BAR_CUSTOM_HEADER = "status_bar_custom_header";
     private static final String KEY_NIGHT_MODE = "night_mode";
+    private static final String KEY_OMS_APP = "oms_app";
+
 
     private ListPreference mDaylightHeaderPack;
     private SeekBarPreference mHeaderShadow;
@@ -81,6 +84,7 @@
     private String mDaylightHeaderProvider;
     private PreferenceScreen mHeaderBrowse;
     private ListPreference mNightModePreference;
+    private Preference mOmsApp;
 
     @Override
     protected int getMetricsCategory() {
@@ -149,6 +153,20 @@
             mNightModePreference.setValue(String.valueOf(currentNightMode));
             mNightModePreference.setOnPreferenceChangeListener(this);
         }
+        mOmsApp = (Preference) findPreference(KEY_OMS_APP);
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(Preference preference) {
+        if (preference == mOmsApp) {
+            Intent omsIntent = getPackageManager().getLaunchIntentForPackage("projekt.substratum");
+            if (omsIntent != null) {
+                startActivity(omsIntent);
+            } else {
+                downloadOmsApp();
+            }
+        }
+        return super.onPreferenceTreeClick(preference);
     }
 
     @Override
@@ -287,4 +305,10 @@
                     return result;
                 }
             };
+
+    private void downloadOmsApp(){
+        Intent omsDownloadIntent = new Intent(Intent.ACTION_VIEW);
+        omsDownloadIntent.setData(Uri.parse("https://play.google.com/store/apps/details?id=projekt.substratum"));
+        startActivity(omsDownloadIntent);
+    }
 }
