diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fddc22c..f47ef0d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1022,7 +1022,7 @@
 
         <activity android:name=".notification.ZenModeVoiceActivity"
                 android:theme="@android:style/Theme.Material.Light"
-                android:label="@string/zen_mode_settings_title">
+                android:label="@string/zen_mode_interruptions_voice_title">
             <intent-filter>
                 <action android:name="android.settings.VOICE_CONTROL_DO_NOT_DISTURB_MODE" />
                 <category android:name="android.intent.category.DEFAULT" />
diff --git a/res/drawable/bg_circle_blue.xml b/res/drawable/bg_voice_position.xml
similarity index 87%
rename from res/drawable/bg_circle_blue.xml
rename to res/drawable/bg_voice_position.xml
index 7f2cb1d..2fb29c2 100644
--- a/res/drawable/bg_circle_blue.xml
+++ b/res/drawable/bg_voice_position.xml
@@ -16,6 +16,6 @@
   -->
 
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="oval">
-    <solid android:color="@color/blue" />
+    android:shape="rectangle">
+    <solid android:color="@color/voice_interaction_highlight" />
 </shape>
diff --git a/res/layout/voice_interaction.xml b/res/layout/voice_interaction.xml
index 13c4341..ed0cd1a 100644
--- a/res/layout/voice_interaction.xml
+++ b/res/layout/voice_interaction.xml
@@ -14,10 +14,20 @@
      limitations under the License.
 -->
 
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/fragment_root"
-    android:paddingLeft="8dp"
-    android:paddingRight="8dp"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:padding="8dp"
+    android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
-</FrameLayout>
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textColor="@color/voice_interaction_highlight"
+        android:id="@+id/voice_fragment_header" />
+    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/voice_fragment_root"
+        android:padding="8dp"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+</LinearLayout>
diff --git a/res/layout/voice_item_row.xml b/res/layout/voice_item_row.xml
index 8576a57..eca5ac9 100644
--- a/res/layout/voice_item_row.xml
+++ b/res/layout/voice_item_row.xml
@@ -23,8 +23,8 @@
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentStart="true"
-        android:layout_marginTop="20dp"
-        android:layout_marginBottom="20dp">
+        android:layout_marginTop="15dp"
+        android:layout_marginBottom="15dp">
 
         <TextView
             android:layout_width="0px"
@@ -33,10 +33,10 @@
             android:id="@+id/voice_item_label" />
 
         <TextView
-            android:layout_width="100px"
-            android:layout_height="100px"
+            android:layout_width="80px"
+            android:layout_height="80px"
             android:gravity="center_horizontal|center_vertical"
-            android:background="@drawable/bg_circle_blue"
+            android:background="@drawable/bg_voice_position"
             android:textAppearance="?android:attr/textAppearanceMediumInverse"
             android:textStyle="bold"
             android:id="@+id/voice_item_position" />
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 6f0352c..88cd3cb 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -83,4 +83,5 @@
     <color name="confirm_device_credential_dark_background">#263238</color>
     <color name="fab_ripple">#1fffffff</color><!-- 12% white -->
     <color name="fab_shape">#ff009688</color><!-- Teal 500 -->
+    <color name="voice_interaction_highlight">#33b5e5</color>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4c9ce79..7c75120 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6113,26 +6113,41 @@
     <!-- [CHAR LIMIT=60] Zen mode settings: End time option: Summary text value format when end time = next day -->
     <string name="zen_mode_end_time_next_day_summary_format"><xliff:g id="formatted_time" example="7:00 AM">%s</xliff:g> next day</string>
 
+    <!-- [CHAR LIMIT=NONE] Zen mode voice: Activity title for interruption level  -->
+    <string name="zen_mode_interruptions_voice_title">Interruptions</string>
+
+    <!-- [CHAR LIMIT=NONE] Zen mode voice: Header for interruption level  -->
+    <string name="zen_mode_interruptions_voice_header">When calls and notifications arrive</string>
+
     <!-- [CHAR LIMIT=NONE] Zen mode voice: Prompt read for interruption type -->
     <string name="zen_mode_interruptions_voice_prompt">When would you like to be interrupted?</string>
 
     <!-- [CHAR LIMIT=NONE] Zen mode voice: Prompt read for zen mode duration -->
     <string name="zen_mode_duration_voice_prompt">For how long?</string>
 
+    <!-- [CHAR LIMIT=80] Zen mode voice: All interruptions -->
+    <string name="zen_mode_option_voice_all_interruptions">Always interrupt</string>
+
+    <!-- [CHAR LIMIT=NONE] Zen mode voice: Comma delimited synonyms for all interriuptions -->
+    <string name="zen_mode_option_voice_all_interruptions_synonyms">off,all,everything</string>
+
+    <!-- [CHAR LIMIT=80] Zen mode voice: Important interruptions -->
+    <string name="zen_mode_option_voice_important_interruptions">Allow only priority interruptions</string>
+
     <!-- [CHAR LIMIT=NONE] Zen mode voice: Comma delimited synonyms for important interriuptions -->
-    <string name="zen_mode_option_important_voice_synonyms">important,priority,priority notifications</string>
+    <string name="zen_mode_option_voice_important_synonyms">important,priority,priority notifications</string>
+
+    <!-- [CHAR LIMIT=80] Zen mode voice option: Alarms only -->
+    <string name="zen_mode_option_voice_alarms">Allow only alarms</string>
 
     <!-- [CHAR LIMIT=NONE] Zen mode voice: Comma delimited synonyms for alarm interriuptions -->
-    <string name="zen_mode_option_alarms_voice_synonyms">alarms</string>
+    <string name="zen_mode_option_voice_alarms_synonyms">alarms</string>
 
-    <!--  [CHAR LIMIT=60] Zen mode voice: Off [CHAR LIMIT=60] -->
-    <string name="zen_mode_option_off">Off</string>
-
-    <!-- [CHAR LIMIT=NONE] Zen mode voice: Comma delimited synonyms for off interriuptions -->
-    <string name="zen_mode_option_off_voice_synonyms">off,all,everything</string>
+    <!-- [CHAR LIMIT=80] Zen mode voice: No interruptions [CHAR LIMIT=60] -->
+    <string name="zen_mode_option_voice_no_interruptions">Don\'t interrupt</string>
 
     <!-- [CHAR LIMIT=NONE] Zen mode voice: Comma delimited synonyms for no interriuptions -->
-    <string name="zen_mode_option_no_interruptions_voice_synonyms">none,nothing,no interruptions</string>
+    <string name="zen_mode_option_voice_no_interruptions_synonyms">none,nothing,no interruptions</string>
 
     <!-- [CHAR LIMIT=40] Zen mode voice: Label for indefinite mode duration -->
     <string name="zen_mode_duration_indefinte_voice_label">Indefinitely</string>
diff --git a/src/com/android/settings/notification/ZenModeVoiceActivity.java b/src/com/android/settings/notification/ZenModeVoiceActivity.java
index c7c1151..2994ed1 100644
--- a/src/com/android/settings/notification/ZenModeVoiceActivity.java
+++ b/src/com/android/settings/notification/ZenModeVoiceActivity.java
@@ -65,22 +65,24 @@
         boolean enabled = intent.getBooleanExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED, false);
         boolean specified = intent.hasExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED);
 
+        setHeader(getString(R.string.zen_mode_interruptions_voice_header));
+
         List<VoiceSelection> states = new ArrayList<VoiceSelection>();
         if (!specified || enabled) {
             states.add(new ModeSelection(this, Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS,
-                    R.string.zen_mode_option_important_interruptions,
-                    R.string.zen_mode_option_important_voice_synonyms));
+                    R.string.zen_mode_option_voice_important_interruptions,
+                    R.string.zen_mode_option_voice_important_synonyms));
             states.add(new ModeSelection(this, Global.ZEN_MODE_ALARMS,
-                    R.string.zen_mode_option_alarms,
-                    R.string.zen_mode_option_alarms_voice_synonyms));
+                    R.string.zen_mode_option_voice_alarms,
+                    R.string.zen_mode_option_voice_alarms_synonyms));
             states.add(new ModeSelection(this, Global.ZEN_MODE_NO_INTERRUPTIONS,
-                    R.string.zen_mode_option_no_interruptions,
-                    R.string.zen_mode_option_no_interruptions_voice_synonyms));
+                    R.string.zen_mode_option_voice_no_interruptions,
+                    R.string.zen_mode_option_voice_no_interruptions_synonyms));
         }
         if (!specified || !enabled) {
             states.add(new ModeSelection(this, Global.ZEN_MODE_OFF,
-                    R.string.zen_mode_option_off,
-                    R.string.zen_mode_option_off_voice_synonyms));
+                    R.string.zen_mode_option_voice_all_interruptions,
+                    R.string.zen_mode_option_voice_all_interruptions_synonyms));
         }
         VoiceSelectionFragment fragment = new VoiceSelectionFragment();
         fragment.setArguments(VoiceSelectionFragment.createArguments(
@@ -98,8 +100,10 @@
                         pickDuration(selection.getLabel(), mode);
                         return;
                     }
+                    setZenModeConfig(mode, conditionSelection.mCondition);
+                } else {
+                    setZenModeConfig(Global.ZEN_MODE_OFF, null);
                 }
-                setZenModeConfig(mode, conditionSelection.mCondition);
                 notifySuccess(getChangeSummary(mode, conditionSelection));
                 finish();
             }
@@ -112,6 +116,8 @@
      */
     private void pickDuration(CharSequence label, final int mode) {
         setTitle(label.toString());
+        setHeader(null);
+
         List<VoiceSelection> states = new ArrayList<VoiceSelection>();
         states.add(new ConditionSelection(null, -1,
               getString(R.string.zen_mode_duration_indefinte_voice_label),
@@ -137,13 +143,6 @@
         showFragment(fragment, "pick_duration_fragment");
     }
 
-    private void showFragment(Fragment fragment, String tag) {
-        getFragmentManager()
-                .beginTransaction()
-                .replace(R.id.fragment_root, fragment, tag)
-                .commit();
-    }
-
     private void setZenModeConfig(int mode, Condition condition) {
         if (condition != null) {
             NotificationManager.from(this).setZenMode(mode, condition.id, TAG);
diff --git a/src/com/android/settings/utils/VoiceSelectionFragment.java b/src/com/android/settings/utils/VoiceSelectionFragment.java
index c2e80d3..1e4e7e4 100644
--- a/src/com/android/settings/utils/VoiceSelectionFragment.java
+++ b/src/com/android/settings/utils/VoiceSelectionFragment.java
@@ -111,7 +111,7 @@
         }
 
         if (mOnItemSelectedListener != null) {
-          mOnItemSelectedListener.onItemSelected(position, getSelectionAt(position));
+            mOnItemSelectedListener.onItemSelected(position, getSelectionAt(position));
         }
     }
 
diff --git a/src/com/android/settings/utils/VoiceSettingsActivity.java b/src/com/android/settings/utils/VoiceSettingsActivity.java
index ac5b8be..21849a4 100644
--- a/src/com/android/settings/utils/VoiceSettingsActivity.java
+++ b/src/com/android/settings/utils/VoiceSettingsActivity.java
@@ -16,11 +16,16 @@
 
 package com.android.settings.utils;
 
+import com.android.settings.R;
+
 import android.app.Activity;
+import android.app.Fragment;
 import android.app.VoiceInteractor;
 import android.app.VoiceInteractor.CompleteVoiceRequest;
 import android.content.Intent;
 import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
 import android.util.Log;
 
 /**
@@ -65,10 +70,30 @@
         }
     }
 
+    protected void setHeader(String label) {
+        TextView header = (TextView) findViewById(R.id.voice_fragment_header);
+        if (header != null) {
+            if (label != null) {
+                header.setText(label);
+                header.setVisibility(View.VISIBLE);
+            } else {
+                header.setVisibility(View.GONE);
+            }
+        }
+    }
+
     /**
      * Indicates when the setting could not be changed.
      */
     protected void notifyFailure(String reason) {
         getVoiceInteractor().submitRequest(new VoiceInteractor.AbortVoiceRequest(reason, null));
     }
+
+    protected void showFragment(Fragment fragment, String tag) {
+        getFragmentManager()
+                .beginTransaction()
+                .replace(R.id.voice_fragment_root, fragment, tag)
+                .commit();
+    }
+
 }
