diff --git a/res/layout/zen_onboarding.xml b/res/layout/zen_onboarding.xml
index 6467955..82951bd 100644
--- a/res/layout/zen_onboarding.xml
+++ b/res/layout/zen_onboarding.xml
@@ -17,40 +17,112 @@
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="320dp"
-    android:layout_height="wrap_content"
-    android:padding="20dp">
+    android:layout_height="wrap_content" >
 
-    <TextView
-        android:id="@+id/header"
-        android:layout_width="wrap_content"
+    <RelativeLayout
+        android:id="@+id/zen_onboarding_choices"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:text="@string/zen_onboarding_dnd_visual_disturbances_header"
-        android:textAppearance="@android:style/TextAppearance.Material.DialogWindowTitle" />
+        android:paddingLeft="24dp"
+        android:paddingRight="24dp"
+        android:paddingTop="18dp">
 
-    <TextView
-        android:id="@+id/feature_description"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@+id/header"
-        android:layout_marginTop="24dp"
-        android:textAppearance="?android:attr/textAppearanceListItem"
-        android:text="@string/zen_onboarding_dnd_visual_disturbances_description" />
+        <TextView
+            android:id="@+id/header"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/zen_onboarding_dnd_visual_disturbances_header"
+            android:textAppearance="@android:style/TextAppearance.Material.DialogWindowTitle" />
+
+        <LinearLayout
+            android:id="@+id/zen_onboarding_new_setting"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/header"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="22dp"
+            android:orientation="horizontal">
+
+            <RadioButton
+                android:id="@+id/zen_onboarding_new_setting_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:paddingHorizontal="8dp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+
+                <TextView
+                    android:id="@+id/zen_onboarding_new_setting_title"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/zen_onboarding_new_setting_title"
+                    android:textAppearance="?android:attr/textAppearanceListItem" />
+
+                <TextView
+                    android:id="@+id/zen_onboarding_new_setting_summary"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/zen_onboarding_new_setting_summary" />
+            </LinearLayout>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/zen_onboarding_current_setting"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/zen_onboarding_new_setting"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="10dp"
+            android:orientation="horizontal">
+
+            <RadioButton
+                android:id="@+id/zen_onboarding_current_setting_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:paddingHorizontal="8dp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+
+                <TextView
+                    android:id="@+id/zen_onboarding_current_setting_title"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/zen_onboarding_current_setting_title"
+                    android:textAppearance="?android:attr/textAppearanceListItem" />
+
+                <TextView
+                    android:id="@+id/zen_onboarding_current_setting_summary"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/zen_onboarding_current_setting_summary" />
+            </LinearLayout>
+        </LinearLayout>
+    </RelativeLayout>
 
     <RelativeLayout
         android:id="@+id/buttons"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_below="@+id/feature_description"
-        android:layout_marginTop="35dp">
+        android:layout_below="@+id/zen_onboarding_choices"
+        android:layout_marginLeft="8dp"
+        android:layout_marginTop="20dp"
+        android:layout_marginBottom="10dp">
 
         <Button
-            android:id="@+id/no"
+            android:id="@+id/settings"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="@string/zen_onboarding_no_update"
-            android:layout_toStartOf="@+id/ok"
+            android:text="@string/zen_onboarding_settings"
+            android:layout_alignParentStart="true"
             style="@style/TextAppearance.ZenOnboardingButton"
-            android:onClick="close" />
+            android:onClick="launchSettings" />
 
         <Button
             android:id="@+id/ok"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4176b86..50b6016 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7390,26 +7390,34 @@
     <string name="zen_msg_event_reminder_footer">When Do Not Disturb is on, messages, reminders, and events will muted, except for the items you allow above. You can adjust messages settings to allow your friends, family, or other contacts to reach you.</string>
 
     <!-- Do not disturb onboarding dialog, accept new settings [CHAR LIMIT=30]-->
-    <string name="zen_onboarding_ok">Update</string>
-    <!-- Do not disturb onboarding dialog, do not accept new settings [CHAR LIMIT=30]-->
-    <string name="zen_onboarding_no_update">Don\'t update</string>
-    <!-- Do not disturb onboarding dialog, description of new settings [CHAR LIMIT=NONE]-->
-    <string name="zen_onboarding_dnd_visual_disturbances_description">Your phone can do more to help you focus.\n\nUpdate settings to:\n\n- Hide notifications completely\n\n- Allow calls from starred contacts and repeat callers</string>
-    <!-- Do not disturb onboarding dialog, header prompt for settings [CHAR LIMIT=80]-->
-    <string name="zen_onboarding_dnd_visual_disturbances_header">Update Do Not Disturb?</string>
-
-    <!-- obsolete -->
+    <string name="zen_onboarding_ok">Done</string>
+    <!-- Do not disturb onboarding dialog, on click user goes to dnd settings page [CHAR LIMIT=30]-->
     <string name="zen_onboarding_settings">Settings</string>
-    <!-- obsolete -->
-    <string name="zen_onboarding_more_options">You can further customize this in Settings.</string>
-    <!-- obsolete -->
-    <string name="zen_onboarding_screen_on_title">Block when the screen is on</string>
-    <!-- obsolete -->
-    <string name="zen_onboarding_screen_off_title">Block when the screen is off</string>
-    <!-- obsolete -->
-    <string name="zen_onboarding_screen_off_summary">Don\'t turn on the screen or wake for notifications</string>
-    <!-- obsolete -->
-    <string name="zen_onboarding_screen_on_summary">Don\'t show notifications at all, except for basic phone activity and status</string>
+
+    <!-- Do not disturb onboarding dialog, title for radio button [CHAR LIMIT=80]-->
+    <string name="zen_onboarding_new_setting_title">No visuals or sounds from notifications</string>
+    <!-- Do not disturb onboarding dialog, title for radio button [CHAR LIMIT=80]-->
+    <string name="zen_onboarding_current_setting_title">No sound from notifications</string>
+    <!-- Do not disturb onboarding dialog, secondary text for radio button [CHAR LIMIT=NONE]-->
+    <string name="zen_onboarding_new_setting_summary">You won\u2019t see or hear notifications. Calls from starred contacts and repeat callers are allowed.</string>
+    <!-- Do not disturb onboarding dialog, secondary text for radio button [CHAR LIMIT=NONE]-->
+    <string name="zen_onboarding_current_setting_summary">(Current setting)</string>
+
+    <!-- Do not disturb onboarding dialog, header prompt for settings [CHAR LIMIT=80]-->
+    <string name="zen_onboarding_dnd_visual_disturbances_header">Change Do Not Disturb notification settings?</string>
+
+    <!-- DO NOT TRANSLATE obsolete [CHAR LIMIT=NONE]-->
+    <string name="zen_onboarding_dnd_visual_disturbances_description" translatable="false">Your phone can do more to help you focus.\n\nUpdate settings to:\n\n- Hide notifications completely\n\n- Allow calls from starred contacts and repeat callers</string>
+    <!-- DO NOT TRANSLATE obsolete -->
+    <string name="zen_onboarding_more_options" translatable="false">You can further customize this in Settings.</string>
+    <!-- DO NOT TRANSLATE obsolete -->
+    <string name="zen_onboarding_screen_on_title" translatable="false">Block when the screen is on</string>
+    <!-- DO NOT TRANSLATE obsolete -->
+    <string name="zen_onboarding_screen_off_title" translatable="false">Block when the screen is off</string>
+    <!-- DO NOT TRANSLATE obsolete -->
+    <string name="zen_onboarding_screen_off_summary" translatable="false">Don\'t turn on the screen or wake for notifications</string>
+    <!-- DO NOT TRANSLATE obsolete -->
+    <string name="zen_onboarding_screen_on_summary" translatable="false">Don\'t show notifications at all, except for basic phone activity and status</string>
 
     <!-- Work Sounds: Work sound settings section header.  [CHAR LIMIT=50] -->
     <string name="sound_work_settings">Work profile sounds</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 819202e..763d8fa 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -439,8 +439,7 @@
         <item name="android:background">@drawable/btn_borderless_rect</item>
         <item name="android:gravity">center</item>
         <item name="android:focusable">true</item>
-        <item name="android:paddingStart">8dp</item>
-        <item name="android:paddingEnd">8dp</item>
+        <item name="android:padding">8dp</item>
     </style>
 
     <style name="ActionPrimaryButton" parent="android:Widget.DeviceDefault.Button.Colored"/>
diff --git a/src/com/android/settings/notification/ZenOnboardingActivity.java b/src/com/android/settings/notification/ZenOnboardingActivity.java
index ff86ef6..fca1a6c 100644
--- a/src/com/android/settings/notification/ZenOnboardingActivity.java
+++ b/src/com/android/settings/notification/ZenOnboardingActivity.java
@@ -20,12 +20,14 @@
 import android.app.NotificationManager;
 import android.app.NotificationManager.Policy;
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.provider.Settings;
 import android.text.format.DateUtils;
 import android.util.Log;
 import android.view.View;
+import android.widget.RadioButton;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.MetricsLogger;
@@ -39,13 +41,16 @@
     private static final String TAG = "ZenOnboardingActivity";
 
     @VisibleForTesting
-    static final String PREF_KEY_SUGGGESTION_FIRST_DISPLAY_TIME =
+    static final String PREF_KEY_SUGGESTION_FIRST_DISPLAY_TIME =
             "pref_zen_suggestion_first_display_time_ms";
     @VisibleForTesting
-    static final String PREF_KEY_SUGGESTION_VIEWED = "pref_zen_suggestion_viewed";
-    @VisibleForTesting
     static final long ALWAYS_SHOW_THRESHOLD = DateUtils.DAY_IN_MILLIS * 14;
 
+    View mNewSetting;
+    View mKeepCurrentSetting;
+    RadioButton mNewSettingButton;
+    RadioButton mKeepCurrentSettingButton;
+
     private NotificationManager mNm;
     private MetricsLogger mMetrics;
 
@@ -66,6 +71,34 @@
     protected void setupUI() {
         setContentView(R.layout.zen_onboarding);
 
+        mNewSetting = findViewById(R.id.zen_onboarding_new_setting);
+        mKeepCurrentSetting = findViewById(R.id.zen_onboarding_current_setting);
+        mNewSettingButton = findViewById(R.id.zen_onboarding_new_setting_button);
+        mKeepCurrentSettingButton = findViewById(R.id.zen_onboarding_current_setting_button);
+
+        View.OnClickListener newSettingClickListener = new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mKeepCurrentSettingButton.setChecked(false);
+                mNewSettingButton.setChecked(true);
+            }
+        };
+
+        View.OnClickListener currentSettingClickListener = new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mKeepCurrentSettingButton.setChecked(true);
+                mNewSettingButton.setChecked(false);
+            }
+        };
+
+        mNewSetting.setOnClickListener(newSettingClickListener);
+        mNewSettingButton.setOnClickListener(newSettingClickListener);
+
+        mKeepCurrentSetting.setOnClickListener(currentSettingClickListener);
+        mKeepCurrentSettingButton.setOnClickListener(currentSettingClickListener);
+
+        mKeepCurrentSettingButton.setChecked(true);
         mMetrics.visible(MetricsEvent.SETTINGS_ZEN_ONBOARDING);
     }
 
@@ -79,25 +112,27 @@
         mMetrics = ml;
     }
 
-    public void close(View button) {
-        mMetrics.action(MetricsEvent.ACTION_ZEN_ONBOARDING_KEEP_CURRENT_SETTINGS);
-
-        Settings.Global.putInt(getApplicationContext().getContentResolver(),
-                Settings.Global.ZEN_SETTINGS_UPDATED, 1);
-
-        finishAndRemoveTask();
+    public void launchSettings(View button) {
+        mMetrics.action(MetricsEvent.ACTION_ZEN_ONBOARDING_SETTINGS);
+        Intent settings = new Intent(Settings.ACTION_ZEN_MODE_SETTINGS);
+        settings.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+        startActivity(settings);
     }
 
     public void save(View button) {
-        mMetrics.action(MetricsEvent.ACTION_ZEN_ONBOARDING_OK);
         NotificationManager.Policy policy = mNm.getNotificationPolicy();
 
-        NotificationManager.Policy newPolicy = new NotificationManager.Policy(
-                Policy.PRIORITY_CATEGORY_REPEAT_CALLERS | policy.priorityCategories,
-                Policy.PRIORITY_SENDERS_STARRED,
-                policy.priorityMessageSenders,
-                NotificationManager.Policy.getAllSuppressedVisualEffects());
-        mNm.setNotificationPolicy(newPolicy);
+        if (mNewSettingButton.isChecked()) {
+            NotificationManager.Policy newPolicy = new NotificationManager.Policy(
+                    Policy.PRIORITY_CATEGORY_REPEAT_CALLERS | policy.priorityCategories,
+                    Policy.PRIORITY_SENDERS_STARRED,
+                    policy.priorityMessageSenders,
+                    NotificationManager.Policy.getAllSuppressedVisualEffects());
+            mNm.setNotificationPolicy(newPolicy);
+            mMetrics.action(MetricsEvent.ACTION_ZEN_ONBOARDING_OK);
+        } else {
+            mMetrics.action(MetricsEvent.ACTION_ZEN_ONBOARDING_KEEP_CURRENT_SETTINGS);
+        }
 
         Settings.Global.putInt(getApplicationContext().getContentResolver(),
                 Settings.Global.ZEN_SETTINGS_UPDATED, 1);
@@ -143,11 +178,11 @@
         final long currentTimeMs = System.currentTimeMillis();
         final long firstDisplayTimeMs;
 
-        if (!prefs.contains(PREF_KEY_SUGGGESTION_FIRST_DISPLAY_TIME)) {
+        if (!prefs.contains(PREF_KEY_SUGGESTION_FIRST_DISPLAY_TIME)) {
             firstDisplayTimeMs = currentTimeMs;
-            prefs.edit().putLong(PREF_KEY_SUGGGESTION_FIRST_DISPLAY_TIME, currentTimeMs).commit();
+            prefs.edit().putLong(PREF_KEY_SUGGESTION_FIRST_DISPLAY_TIME, currentTimeMs).commit();
         } else {
-            firstDisplayTimeMs = prefs.getLong(PREF_KEY_SUGGGESTION_FIRST_DISPLAY_TIME, -1);
+            firstDisplayTimeMs = prefs.getLong(PREF_KEY_SUGGESTION_FIRST_DISPLAY_TIME, -1);
         }
 
         final long showTimeMs = firstDisplayTimeMs + ALWAYS_SHOW_THRESHOLD;
diff --git a/tests/robotests/src/com/android/settings/notification/ZenOnboardingActivityTest.java b/tests/robotests/src/com/android/settings/notification/ZenOnboardingActivityTest.java
index b4d3700..e09dc0d 100644
--- a/tests/robotests/src/com/android/settings/notification/ZenOnboardingActivityTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ZenOnboardingActivityTest.java
@@ -18,21 +18,11 @@
 
 import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS;
 import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS;
-import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_ANY;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_BADGE;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_LIGHTS;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_SCREEN_OFF;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_SCREEN_ON;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR;
 
 import static com.android.settings.notification.ZenOnboardingActivity.ALWAYS_SHOW_THRESHOLD;
-import static com.android.settings.notification.ZenOnboardingActivity.PREF_KEY_SUGGESTION_VIEWED;
 import static com.android.settings.notification.ZenOnboardingActivity
-        .PREF_KEY_SUGGGESTION_FIRST_DISPLAY_TIME;
+        .PREF_KEY_SUGGESTION_FIRST_DISPLAY_TIME;
 import static com.android.settings.notification.ZenOnboardingActivity.isSuggestionComplete;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -99,10 +89,11 @@
     }
 
     @Test
-    public void save() {
+    public void saveNewSetting() {
         Policy policy = new Policy(PRIORITY_CATEGORY_ALARMS, 0, 0, SUPPRESSED_EFFECT_SCREEN_ON);
         when(mNm.getNotificationPolicy()).thenReturn(policy);
 
+        mActivity.mNewSetting.performClick();
         mActivity.save(null);
 
         verify(mMetricsLogger).action(MetricsEvent.ACTION_ZEN_ONBOARDING_OK);
@@ -120,24 +111,14 @@
     }
 
     @Test
-    public void close() {
-        Policy policy = new Policy(
-                PRIORITY_CATEGORY_ALARMS, PRIORITY_SENDERS_ANY, 0,
-                SUPPRESSED_EFFECT_SCREEN_ON
-                        | SUPPRESSED_EFFECT_SCREEN_OFF
-                        | SUPPRESSED_EFFECT_FULL_SCREEN_INTENT
-                        | SUPPRESSED_EFFECT_LIGHTS
-                        | SUPPRESSED_EFFECT_PEEK
-                        | SUPPRESSED_EFFECT_STATUS_BAR
-                        | SUPPRESSED_EFFECT_BADGE
-                        | SUPPRESSED_EFFECT_AMBIENT
-                        | SUPPRESSED_EFFECT_NOTIFICATION_LIST);
+    public void keepCurrentSetting() {
+        Policy policy = new Policy(PRIORITY_CATEGORY_ALARMS, 0, 0, SUPPRESSED_EFFECT_SCREEN_ON);
         when(mNm.getNotificationPolicy()).thenReturn(policy);
 
-        mActivity.close(null);
+        mActivity.mKeepCurrentSetting.performClick();
+        mActivity.save(null);
 
         verify(mMetricsLogger).action(MetricsEvent.ACTION_ZEN_ONBOARDING_KEEP_CURRENT_SETTINGS);
-
         verify(mNm, never()).setNotificationPolicy(any());
     }
 
@@ -192,7 +173,7 @@
             firstTime -= ALWAYS_SHOW_THRESHOLD * 2;
         }
 
-        getSharedPreferences().edit().putLong(PREF_KEY_SUGGGESTION_FIRST_DISPLAY_TIME,
+        getSharedPreferences().edit().putLong(PREF_KEY_SUGGESTION_FIRST_DISPLAY_TIME,
                firstTime).commit();
     }
 
