diff --git a/res/drawable-hdpi/ic_menu_delete.png b/res/drawable-hdpi/ic_menu_delete.png
deleted file mode 100644
index e25b44f..0000000
--- a/res/drawable-hdpi/ic_menu_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_delete.png b/res/drawable-mdpi/ic_menu_delete.png
deleted file mode 100644
index b0517ad..0000000
--- a/res/drawable-mdpi/ic_menu_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_delete.png b/res/drawable-xhdpi/ic_menu_delete.png
deleted file mode 100644
index 33010c6..0000000
--- a/res/drawable-xhdpi/ic_menu_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_delete.png b/res/drawable-xxhdpi/ic_menu_delete.png
deleted file mode 100644
index 6171b5a..0000000
--- a/res/drawable-xxhdpi/ic_menu_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_menu_delete.png b/res/drawable-xxxhdpi/ic_menu_delete.png
deleted file mode 100644
index e380101..0000000
--- a/res/drawable-xxxhdpi/ic_menu_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_menu_add.xml b/res/drawable/ic_menu_add.xml
new file mode 100644
index 0000000..ed58072
--- /dev/null
+++ b/res/drawable/ic_menu_add.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_menu_add_white"
+    android:tint="?android:attr/colorAccent" />
diff --git a/res/drawable/ic_menu_delete.xml b/res/drawable/ic_menu_delete.xml
new file mode 100644
index 0000000..1f211c5
--- /dev/null
+++ b/res/drawable/ic_menu_delete.xml
@@ -0,0 +1,24 @@
+<!--
+    Copyright (C) 2015 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24.0dp"
+        android:height="24.0dp"
+        android:viewportWidth="48.0"
+        android:viewportHeight="48.0">
+    <path
+        android:fillColor="?android:attr/colorAccent"
+        android:pathData="M12.0,38.0c0.0,2.21 1.79,4.0 4.0,4.0l16.0,0.0c2.21,0.0 4.0,-1.79 4.0,-4.0L36.0,14.0L12.0,14.0l0.0,24.0zM38.0,8.0l-7.0,0.0l-2.0,-2.0L19.0,6.0l-2.0,2.0l-7.0,0.0l0.0,4.0l28.0,0.0L38.0,8.0z"/>
+</vector>
diff --git a/res/layout-land/confirm_lock_password.xml b/res/layout-land/confirm_lock_password.xml
index d8da8fe..0d46bfa 100644
--- a/res/layout-land/confirm_lock_password.xml
+++ b/res/layout-land/confirm_lock_password.xml
@@ -73,6 +73,7 @@
             style="@style/TextAppearance.PasswordEntry"/>
 
         <TextView style="@style/TextAppearance.ConfirmDeviceCredentialsErrorText"
+            android:accessibilityLiveRegion="polite"
             android:id="@+id/errorText"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
diff --git a/res/layout-land/confirm_lock_pattern.xml b/res/layout-land/confirm_lock_pattern.xml
index 0567fad..329f52a 100644
--- a/res/layout-land/confirm_lock_pattern.xml
+++ b/res/layout-land/confirm_lock_pattern.xml
@@ -88,6 +88,7 @@
 
             <TextView
                 style="@style/TextAppearance.ConfirmDeviceCredentialsErrorText"
+                android:accessibilityLiveRegion="polite"
                 android:id="@+id/errorText"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
diff --git a/res/layout/confirm_lock_password_base.xml b/res/layout/confirm_lock_password_base.xml
index 8b025ee..069708f 100644
--- a/res/layout/confirm_lock_password_base.xml
+++ b/res/layout/confirm_lock_password_base.xml
@@ -68,6 +68,7 @@
 
     <TextView
         style="@style/TextAppearance.ConfirmDeviceCredentialsErrorText"
+        android:accessibilityLiveRegion="polite"
         android:id="@+id/errorText"
         android:layout_width="wrap_content"
         android:layout_height="0dp"
diff --git a/res/layout/confirm_lock_pattern_base.xml b/res/layout/confirm_lock_pattern_base.xml
index 029b856..cd2cbef 100644
--- a/res/layout/confirm_lock_pattern_base.xml
+++ b/res/layout/confirm_lock_pattern_base.xml
@@ -70,6 +70,7 @@
 
         <TextView
             style="@style/TextAppearance.ConfirmDeviceCredentialsErrorText"
+            android:accessibilityLiveRegion="polite"
             android:id="@+id/errorText"
             android:layout_width="wrap_content"
             android:layout_height="0dp"
diff --git a/res/layout/data_usage_chart.xml b/res/layout/data_usage_chart.xml
index 2f9d962..648c7f8 100644
--- a/res/layout/data_usage_chart.xml
+++ b/res/layout/data_usage_chart.xml
@@ -43,7 +43,7 @@
         android:layout_height="match_parent"
         android:layout_gravity="start|bottom"
         settings:strokeColor="#00000000"
-        settings:fillColor="#ff009688"
+        settings:fillColor="?android:attr/colorAccent"
         settings:fillColorSecondary="#ff80cbc4"
         settings:safeRegion="3dp" />
 
@@ -53,8 +53,8 @@
         android:layout_height="match_parent"
         android:layout_gravity="start|bottom"
         settings:strokeColor="#00000000"
-        settings:fillColor="#ff009688"
-        settings:fillColorSecondary="#ff009688"
+        settings:fillColor="?android:attr/colorAccent"
+        settings:fillColorSecondary="?android:attr/colorAccent"
         settings:safeRegion="3dp" />
 
     <com.android.settings.widget.ChartSweepView
@@ -67,7 +67,7 @@
         settings:neighborMargin="5dip"
         settings:labelSize="60dip"
         settings:labelTemplate="@string/data_usage_sweep_warning"
-        settings:labelColor="#ff37474f"
+        settings:labelColor="?android:attr/textColorSecondary"
         settings:safeRegion="4dp" />
 
     <com.android.settings.widget.ChartSweepView
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 3bcf1ae..3508893 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -59,12 +59,12 @@
     <color name="unlock_pattern_view_regular_color">@android:color/white</color>
     <color name="unlock_pattern_view_error_color">#fff4511e</color>
 
-    <color name="fingerprint_title_area_bg">#ff009688</color>
+    <color name="fingerprint_title_area_bg">?android:attr/colorAccent</color>
     <color name="fingerprint_title_color">#ffffffff</color>
     <color name="fingerprint_message_color">#de000000</color>
-    <color name="fingerprint_progress_ring">#ff009688</color>
+    <color name="fingerprint_progress_ring">?android:attr/colorAccent</color>
     <color name="fingerprint_progress_ring_bg">#20000000</color>
-    <color name="fingerprint_dot_color">#ff009688</color>
+    <color name="fingerprint_dot_color">?android:attr/colorAccent</color>
 
     <color name="running_processes_system_ram">#ff384248</color>
     <color name="running_processes_apps_ram">#ff009587</color>
@@ -76,13 +76,12 @@
     <color name="switch_accent_color">#ff7fcac3</color>
 
     <color name="wifi_divider">#ffe0e0e0</color>
-    <color name="wifi_signal_icon_color">#ff009688</color>
     <color name="sim_noitification">@*android:color/material_deep_teal_500</color>
 
     <color name="warning">#ff5621</color>
     <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="fab_shape">?android:attr/colorAccent</color>
     <color name="voice_interaction_highlight">#33b5e5</color>
 
     <drawable name="fp_enrollment_header_landscape">#009688</drawable>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9569b5c..4babac7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6246,22 +6246,25 @@
     <!-- [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 - spoken summary: alarms only duration indefinite. -->
-    <string name="zen_mode_summary_alarams_only_indefinite">Change to alarms only indefinitely</string>
+    <!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: switch to alarms only forever. -->
+    <string name="zen_mode_summary_alarms_only_indefinite">Change to alarms only indefinitely</string>
 
-    <!-- [CHAR LIMIT=NONE] Zen mode voice- spoken summary: alarms only duration minutes. -->
+    <!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: switch to alarms only for < 60 minutes. -->
     <plurals name="zen_mode_summary_alarms_only_by_minute">
         <item quantity="one">Change to alarms only for one minute until <xliff:g id="formattedTime" example="10:00 PM">%2$s</xliff:g></item>
         <item quantity="other">Change to alarms only for <xliff:g id="duration" example="2">%1$d</xliff:g> minutes (until <xliff:g id="formattedTime" example="10:00 PM">%2$s</xliff:g>)</item>
     </plurals>
 
-    <!-- [CHAR LIMIT=NONE] Zen mode voice- spoken summary: alarms only duration hours. -->
+    <!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: switch to alarms only for N hours. -->
     <plurals name="zen_mode_summary_alarms_only_by_hour">
         <item quantity="one">Change to alarms only for one hour until <xliff:g id="formattedTime" example="10:00 PM">%2$s</xliff:g></item>
         <item quantity="other">Change to alarms only for <xliff:g id="duration" example="2">%1$d</xliff:g> hours until <xliff:g id="formattedTime" example="10:00 PM">%2$s</xliff:g></item>
     </plurals>
 
-    <!-- [CHAR LIMIT=NONE] Zen mode voice - spoken summary: off. -->
+    <!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: switch to alarms only until a specific time. -->
+    <string name="zen_mode_summary_alarms_only_by_time">Change to alarms only until <xliff:g id="formattedTime" example="10:00 PM">%1$s</xliff:g></string>
+
+    <!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: Turn on all notifications. -->
     <string name="zen_mode_summary_always">Change to always interrupt</string>
 
     <!-- [CHAR LIMIT=20] Notifications settings: Apps section header -->
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 76fc04f..c2285e2 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -93,7 +93,7 @@
         <item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark</item>
         <item name="ic_wps">@drawable/ic_wps_light</item>
         <item name="wifi_signal">@drawable/wifi_signal</item>
-        <item name="wifi_signal_color">@color/wifi_signal_icon_color</item>
+        <item name="wifi_signal_color">?android:attr/colorAccent</item>
         <item name="side_margin">@dimen/settings_side_margin</item>
 
         <!-- Redefine the ActionBar style for contentInsetStart -->
diff --git a/res/xml/dashboard_categories.xml b/res/xml/dashboard_categories.xml
index ebddd78..c839792 100644
--- a/res/xml/dashboard_categories.xml
+++ b/res/xml/dashboard_categories.xml
@@ -102,6 +102,14 @@
                 android:icon="@drawable/ic_settings_notifications"
                 />
 
+        <!-- Application Settings -->
+        <dashboard-tile
+                android:id="@+id/application_settings"
+                android:title="@string/applications_settings"
+                android:fragment="com.android.settings.applications.ManageApplications"
+                android:icon="@drawable/ic_settings_applications"
+                />
+
         <!-- Storage -->
         <dashboard-tile
                 android:id="@+id/storage_settings"
@@ -118,12 +126,12 @@
                 android:icon="@drawable/ic_settings_battery"
                 />
 
-        <!-- Application Settings -->
+        <!-- Memory -->
         <dashboard-tile
-                android:id="@+id/application_settings"
-                android:title="@string/applications_settings"
-                android:fragment="com.android.settings.applications.ManageApplications"
-                android:icon="@drawable/ic_settings_applications"
+                android:id="@+id/manage_memory"
+                android:title="@string/memory_settings_title"
+                android:fragment="com.android.settings.applications.ProcessStatsSummary"
+                android:icon="@drawable/ic_settings_memory"
                 />
 
         <!-- Manage users -->
@@ -134,14 +142,6 @@
                 android:icon="@drawable/ic_settings_multiuser"
                 />
 
-        <!-- Memory -->
-        <dashboard-tile
-                android:id="@+id/manage_memory"
-                android:title="@string/memory_settings_title"
-                android:fragment="com.android.settings.applications.ProcessStatsSummary"
-                android:icon="@drawable/ic_settings_memory"
-                />
-
         <!-- Manage NFC payment apps -->
         <dashboard-tile
                 android:id="@+id/nfc_payment_settings"
diff --git a/src/com/android/settings/AccountPreference.java b/src/com/android/settings/AccountPreference.java
index 7547721..64685c0 100644
--- a/src/com/android/settings/AccountPreference.java
+++ b/src/com/android/settings/AccountPreference.java
@@ -114,7 +114,8 @@
         int res;
         switch (status) {
             case SYNC_ENABLED:
-                res = R.drawable.ic_sync_green_holo;
+            case SYNC_IN_PROGRESS:
+                res = R.drawable.ic_settings_sync;
                 break;
             case SYNC_DISABLED:
                 res = R.drawable.ic_sync_grey_holo;
@@ -122,9 +123,6 @@
             case SYNC_ERROR:
                 res = R.drawable.ic_sync_red_holo;
                 break;
-            case SYNC_IN_PROGRESS:
-                res = R.drawable.ic_sync_green_holo;
-                break;
             default:
                 res = R.drawable.ic_sync_red_holo;
                 Log.e(TAG, "Unknown sync status: " + status);
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index 0a7e84c..226f8ab 100644
--- a/src/com/android/settings/ApnSettings.java
+++ b/src/com/android/settings/ApnSettings.java
@@ -33,6 +33,7 @@
 import android.os.HandlerThread;
 import android.os.Looper;
 import android.os.Message;
+import android.os.UserHandle;
 import android.os.UserManager;
 import android.preference.Preference;
 import android.preference.PreferenceGroup;
@@ -173,7 +174,8 @@
             getListView().setEmptyView(empty);
         }
 
-        if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
+        if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)
+                || UserHandle.myUserId()!= UserHandle.USER_OWNER) {
             mUnavailable = true;
             setPreferenceScreen(new PreferenceScreen(getActivity(), null));
             return;
diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/ConfirmLockPassword.java
index 4e32a83b..db0b44a 100644
--- a/src/com/android/settings/ConfirmLockPassword.java
+++ b/src/com/android/settings/ConfirmLockPassword.java
@@ -377,7 +377,6 @@
 
         private void showError(CharSequence msg, long timeout) {
             mErrorTextView.setText(msg);
-            mErrorTextView.announceForAccessibility(mErrorTextView.getText());
             mPasswordEntry.setText(null);
             mHandler.removeCallbacks(mResetErrorRunnable);
             if (timeout != 0) {
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java
index f53e7df..90a39f9 100644
--- a/src/com/android/settings/ConfirmLockPattern.java
+++ b/src/com/android/settings/ConfirmLockPattern.java
@@ -208,7 +208,7 @@
                     mLockPatternView.clearPattern();
                     break;
                 case NeedToUnlockWrong:
-                    showError(R.string.lockpattern_need_to_unlock_wrong);
+                    mErrorTextView.setText(R.string.lockpattern_need_to_unlock_wrong);
 
                     mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
                     mLockPatternView.setEnabled(true);
@@ -382,7 +382,7 @@
                 @Override
                 public void onTick(long millisUntilFinished) {
                     final int secondsCountdown = (int) (millisUntilFinished / 1000);
-                    showError(getString(
+                    mErrorTextView.setText(getString(
                             R.string.lockpattern_too_many_failed_confirmation_attempts,
                             secondsCountdown));
                 }
@@ -394,14 +394,5 @@
                 }
             }.start();
         }
-
-        private void showError(CharSequence msg) {
-            mErrorTextView.setText(msg);
-            mErrorTextView.announceForAccessibility(mErrorTextView.getText());
-        }
-
-        private void showError(int msgid) {
-            showError(getText(msgid));
-        }
     }
 }
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 125411a..a0cd4da 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -38,6 +38,7 @@
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
 import android.os.Environment;
+import android.os.UserHandle;
 import android.os.UserManager;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
@@ -123,7 +124,8 @@
 
         mUm = (UserManager) getSystemService(Context.USER_SERVICE);
 
-        if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING)) {
+        if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING)
+                || UserHandle.myUserId() != UserHandle.USER_OWNER) {
             mUnavailable = true;
             setPreferenceScreen(new PreferenceScreen(getActivity(), null));
             return;
diff --git a/src/com/android/settings/accounts/AccountSettings.java b/src/com/android/settings/accounts/AccountSettings.java
index ffada53..c010a7b 100644
--- a/src/com/android/settings/accounts/AccountSettings.java
+++ b/src/com/android/settings/accounts/AccountSettings.java
@@ -296,7 +296,7 @@
     private Preference newAddAccountPreference(Context context) {
         Preference preference = new Preference(context);
         preference.setTitle(R.string.add_account_label);
-        preference.setIcon(R.drawable.ic_menu_add_dark);
+        preference.setIcon(R.drawable.ic_menu_add);
         preference.setOnPreferenceClickListener(this);
         preference.setOrder(ORDER_NEXT_TO_LAST);
         return preference;
diff --git a/src/com/android/settings/notification/ZenModeVoiceActivity.java b/src/com/android/settings/notification/ZenModeVoiceActivity.java
index 71e56b0..270633a 100644
--- a/src/com/android/settings/notification/ZenModeVoiceActivity.java
+++ b/src/com/android/settings/notification/ZenModeVoiceActivity.java
@@ -58,7 +58,6 @@
                 mode = Global.ZEN_MODE_ALARMS;
             }
             setZenModeConfig(mode, condition);
-            notifySuccess(getChangeSummary(mode, minutes));
 
             AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
             if (audioManager != null) {
@@ -67,10 +66,12 @@
                          AudioManager.ADJUST_SAME,
                          AudioManager.FLAG_SHOW_UI);
             }
+            notifySuccess(getChangeSummary(mode, minutes));
         } else {
             Log.v(TAG, "Missing extra android.provider.Settings.EXTRA_DO_NOT_DISTURB_MODE_ENABLED");
+            finish();
         }
-        return true;
+        return false;
     }
 
     private void setZenModeConfig(int mode, Condition condition) {
@@ -88,12 +89,14 @@
         int indefinite = -1;
         int byMinute = -1;
         int byHour = -1;
+        int byTime = -1;
 
         switch (mode) {
             case Global.ZEN_MODE_ALARMS:
-                indefinite = R.string.zen_mode_summary_alarams_only_indefinite;
+                indefinite = R.string.zen_mode_summary_alarms_only_indefinite;
                 byMinute = R.plurals.zen_mode_summary_alarms_only_by_minute;
                 byHour = R.plurals.zen_mode_summary_alarms_only_by_hour;
+                byTime = R.string.zen_mode_summary_alarms_only_by_time;
                 break;
             case Global.ZEN_MODE_OFF:
                 indefinite = R.string.zen_mode_summary_always;
@@ -112,6 +115,8 @@
 
         if (minutes < 60) {
             return res.getQuantityString(byMinute, minutes, minutes, formattedTime);
+        } else if (minutes % 60 != 0) {
+            return res.getString(byTime, formattedTime);
         } else {
             int hours = minutes / 60;
             return res.getQuantityString(byHour, hours, hours, formattedTime);
diff --git a/src/com/android/settings/search/Ranking.java b/src/com/android/settings/search/Ranking.java
index 93e0948..5d987fa 100644
--- a/src/com/android/settings/search/Ranking.java
+++ b/src/com/android/settings/search/Ranking.java
@@ -69,9 +69,9 @@
     public static final int RANK_DISPLAY = 7;
     public static final int RANK_WALLPAPER = 8;
     public static final int RANK_NOTIFICATIONS = 9;
-    public static final int RANK_STORAGE = 10;
-    public static final int RANK_POWER_USAGE = 11;
-    public static final int RANK_APPS = 12;
+    public static final int RANK_APPS = 10;
+    public static final int RANK_STORAGE = 11;
+    public static final int RANK_POWER_USAGE = 12;
     public static final int RANK_USERS = 13;
     public static final int RANK_LOCATION = 14;
     public static final int RANK_SECURITY = 15;
diff --git a/src/com/android/settings/utils/VoiceSettingsActivity.java b/src/com/android/settings/utils/VoiceSettingsActivity.java
index e81c7e8..4477e92 100644
--- a/src/com/android/settings/utils/VoiceSettingsActivity.java
+++ b/src/com/android/settings/utils/VoiceSettingsActivity.java
@@ -65,7 +65,12 @@
      */
     protected void notifySuccess(CharSequence prompt) {
         if (getVoiceInteractor() != null) {
-            getVoiceInteractor().submitRequest(new CompleteVoiceRequest(prompt, null));
+            getVoiceInteractor().submitRequest(new CompleteVoiceRequest(prompt, null) {
+                @Override
+                public void onCompleteResult(Bundle options) {
+                    finish();
+                }
+            });
         }
     }
 
diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java
index a7d3b33..ba26e4a 100644
--- a/src/com/android/settings/vpn2/VpnSettings.java
+++ b/src/com/android/settings/vpn2/VpnSettings.java
@@ -106,7 +106,8 @@
         super.onCreate(savedState);
 
         mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
-        if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)) {
+        if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)
+                || UserHandle.myUserId() != UserHandle.USER_OWNER) {
             mUnavailable = true;
             setPreferenceScreen(new PreferenceScreen(getActivity(), null));
             return;
diff --git a/src/com/android/settings/widget/ChartSweepView.java b/src/com/android/settings/widget/ChartSweepView.java
index 04fc862..e8e24aa 100644
--- a/src/com/android/settings/widget/ChartSweepView.java
+++ b/src/com/android/settings/widget/ChartSweepView.java
@@ -123,14 +123,15 @@
         final TypedArray a = context.obtainStyledAttributes(
                 attrs, R.styleable.ChartSweepView, defStyle, 0);
 
-        setSweepDrawable(a.getDrawable(R.styleable.ChartSweepView_sweepDrawable));
+        final int color = a.getColor(R.styleable.ChartSweepView_labelColor, Color.BLUE);
+        setSweepDrawable(a.getDrawable(R.styleable.ChartSweepView_sweepDrawable), color);
         setFollowAxis(a.getInt(R.styleable.ChartSweepView_followAxis, -1));
         setNeighborMargin(a.getDimensionPixelSize(R.styleable.ChartSweepView_neighborMargin, 0));
         setSafeRegion(a.getDimensionPixelSize(R.styleable.ChartSweepView_safeRegion, 0));
 
         setLabelMinSize(a.getDimensionPixelSize(R.styleable.ChartSweepView_labelSize, 0));
         setLabelTemplate(a.getResourceId(R.styleable.ChartSweepView_labelTemplate, 0));
-        setLabelColor(a.getColor(R.styleable.ChartSweepView_labelColor, Color.BLUE));
+        setLabelColor(color);
 
         // TODO: moved focused state directly into assets
         setBackgroundResource(R.drawable.data_usage_sweep_background);
@@ -213,7 +214,7 @@
         requestLayout();
     }
 
-    public void setSweepDrawable(Drawable sweep) {
+    public void setSweepDrawable(Drawable sweep, int color) {
         if (mSweep != null) {
             mSweep.setCallback(null);
             unscheduleDrawable(mSweep);
@@ -226,6 +227,8 @@
             }
             sweep.setVisible(getVisibility() == VISIBLE, false);
             mSweep = sweep;
+            // Match the text.
+            mSweep.setTint(color);
             sweep.getPadding(mSweepPadding);
         } else {
             mSweep = null;
