diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index bacec34..40a17f9 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -122,6 +122,13 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="com.android.dialer.settings.DialerSettingsActivity"
+                  android:label="@string/dialer_settings_label"
+                  android:parentActivityName="com.android.dialer.DialtactsActivity"
+                  android:theme="@style/SettingsStyle"
+                  android:exported="false">
+        </activity>
+
         <activity android:name="com.android.dialer.calllog.CallLogActivity"
             android:label="@string/call_log_activity_title"
             android:theme="@style/DialtactsThemeWithoutActionBarOverlay"
diff --git a/res/menu/dialtacts_options.xml b/res/menu/dialtacts_options.xml
index 17f4d9f..cc5e386 100644
--- a/res/menu/dialtacts_options.xml
+++ b/res/menu/dialtacts_options.xml
@@ -30,6 +30,6 @@
         android:title="@string/menu_newContact"/>
     <item
         android:id="@+id/menu_call_settings"
-        android:title="@string/call_settings"
+        android:title="@string/dialer_settings_label"
         android:orderInCategory="2" />
 </menu>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 6624c2d..cbf737c 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -21,6 +21,12 @@
     <color name="dialtacts_secondary_text_color">#888888</color>
     <color name="dialer_accent_color">#eeff41</color>
 
+    <!-- Color for the setting text. -->
+    <color name="setting_primary_color">#4d4c4c</color>
+    <!-- Color for the setting description text. -->
+    <color name="setting_secondary_color">#989898</color>
+    <color name="setting_background_color">#ffffff</color>
+
     <!-- Color of the text describing an unconsumed missed call. -->
     <color name="call_log_missed_call_highlight_color">#FF0000</color>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e51aff7..29b9651 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -329,8 +329,8 @@
     <!-- Menu item to select account used to make phone calls [CHAR LIMIT=30] -->
     <string name="menu_select_account">Select Account</string>
 
-    <!-- Menu item label for call settings [CHAR LIMIT=30] -->
-    <string name="call_settings">Settings</string>
+    <!-- Label for the dialer app setting page [CHAR LIMIT=30]-->
+    <string name="dialer_settings_label">Settings</string>
 
     <!-- Menu item to create a new contact [CHAR LIMIT=30] -->
     <string name="menu_newContact">New contact</string>
@@ -750,4 +750,12 @@
     <!-- Delimeter used between each item in a textual list; for example "Alpha, Beta".
          [CHAR LIMIT=3] -->
     <string name="list_delimeter">", "</string>
+
+    <!-- Dialer settings related strings-->
+
+    <!-- Label for the call settings section [CHAR LIMIT=30]-->
+    <string name="call_settings_label">Call Settings</string>
+
+    <!-- Label for the call settings section description [CHAR LIMIT=80]-->
+    <string name="call_settings_description">Ringtones, voicemail settings, VoIP calling, etc</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 0140db8..a7c1ec1 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -150,4 +150,13 @@
         <item name="android:paddingLeft">@dimen/dismiss_button_padding_start</item>
         <item name="android:paddingRight">@dimen/dismiss_button_padding_end</item>
     </style>
+
+    <!-- Style applied to the "Settings" screen.  Keep in sync with SettingsLight in Telephony. -->
+    <style name="SettingsStyle" parent="DialtactsThemeWithoutActionBarOverlay">
+        <!-- Setting text. -->
+        <item name="android:textColorSecondary">@color/setting_primary_color</item>
+        <!-- Setting description. -->
+        <item name="android:textColorTertiary">@color/setting_secondary_color</item>
+        <item name="android:windowBackground">@color/setting_background_color</item>
+    </style>
 </resources>
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 4965647..d08b38f 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -81,6 +81,7 @@
 import com.android.dialer.list.SearchFragment;
 import com.android.dialer.list.SmartDialSearchFragment;
 import com.android.dialer.list.SpeedDialFragment;
+import com.android.dialer.settings.DialerSettingsActivity;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.widget.ActionBarController;
 import com.android.dialer.widget.SearchEditTextLayout;
@@ -519,12 +520,8 @@
     }
 
     protected void handleMenuSettings() {
-        openTelephonySetting(this);
-    }
-
-    public static void openTelephonySetting(Activity activity) {
-        final Intent settingsIntent = getCallSettingsIntent();
-        activity.startActivity(settingsIntent);
+        final Intent intent = new Intent(this, DialerSettingsActivity.class);
+        startActivity(intent);
     }
 
     @Override
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
new file mode 100644
index 0000000..904be82
--- /dev/null
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -0,0 +1,54 @@
+package com.android.dialer.settings;
+
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceManager;
+import android.preference.PreferenceActivity.Header;
+import android.view.MenuItem;
+
+import com.android.contacts.common.preference.DisplayOptionsPreferenceFragment;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+
+import java.util.List;
+
+public class DialerSettingsActivity extends PreferenceActivity {
+
+    protected SharedPreferences mPreferences;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+    }
+
+    @Override
+    public void onBuildHeaders(List<Header> target) {
+        final Header contactDisplayHeader = new Header();
+        contactDisplayHeader.titleRes = R.string.settings_contact_display_options_title;
+        contactDisplayHeader.summaryRes = R.string.settings_contact_display_options_description;
+        contactDisplayHeader.fragment = DisplayOptionsPreferenceFragment.class.getName();
+        target.add(contactDisplayHeader);
+
+        final Header callSettingHeader = new Header();
+        callSettingHeader.titleRes = R.string.call_settings_label;
+        callSettingHeader.summaryRes = R.string.call_settings_description;
+        callSettingHeader.intent = DialtactsActivity.getCallSettingsIntent();
+        target.add(callSettingHeader);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            onBackPressed();
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected boolean isValidFragment(String fragmentName) {
+        return true;
+    }
+}
