diff --git a/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg
index 428b2f4..8d330ce 100644
--- a/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-hdpi/setup_illustration_lock_screen.jpg b/res/drawable-hdpi/setup_illustration_lock_screen.jpg
index db697a0..0bf53fc 100644
--- a/res/drawable-hdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-hdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-hdpi/setup_illustration_tile.jpg b/res/drawable-hdpi/setup_illustration_tile.jpg
index 9931a23..d518abd 100644
--- a/res/drawable-hdpi/setup_illustration_tile.jpg
+++ b/res/drawable-hdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-hdpi/setup_illustration_wifi.jpg b/res/drawable-hdpi/setup_illustration_wifi.jpg
index d38551e..f2b9c6a 100644
--- a/res/drawable-hdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-hdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg
index 52e7993..2b9b04b 100644
--- a/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_lock_screen.jpg b/res/drawable-mdpi/setup_illustration_lock_screen.jpg
index 95e2b8c..9ab9117 100644
--- a/res/drawable-mdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-mdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_tile.jpg b/res/drawable-mdpi/setup_illustration_tile.jpg
index 7923fb4..f2e1bcb 100644
--- a/res/drawable-mdpi/setup_illustration_tile.jpg
+++ b/res/drawable-mdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_wifi.jpg b/res/drawable-mdpi/setup_illustration_wifi.jpg
index a497bf5..7f5e788 100644
--- a/res/drawable-mdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-mdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-hdpi/setup_illustration_lock_screen.jpg
index 03cd9d9..26cff1d 100644
--- a/res/drawable-sw600dp-hdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-hdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-hdpi/setup_illustration_wifi.jpg
index fccea72..7359f56 100644
--- a/res/drawable-sw600dp-hdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-hdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-mdpi/setup_illustration_lock_screen.jpg
index 4a7ab38..386fc8d 100644
--- a/res/drawable-sw600dp-mdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-mdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-mdpi/setup_illustration_wifi.jpg
index f21dffb..9b13e51 100644
--- a/res/drawable-sw600dp-mdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-mdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-xhdpi/setup_illustration_lock_screen.jpg
index 05f7725..54362e7 100644
--- a/res/drawable-sw600dp-xhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-xhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-xhdpi/setup_illustration_wifi.jpg
index 3d1b3f3..dc9e385 100644
--- a/res/drawable-sw600dp-xhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-xhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-xxhdpi/setup_illustration_lock_screen.jpg
index da3f7d9..4f62b84 100644
--- a/res/drawable-sw600dp-xxhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-xxhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-xxhdpi/setup_illustration_wifi.jpg
index 6a590b7..b57bc17 100644
--- a/res/drawable-sw600dp-xxhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-xxhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xxxhdpi/setup_illustration_lock_screen.jpg b/res/drawable-sw600dp-xxxhdpi/setup_illustration_lock_screen.jpg
index fd5da99..2c6b57e 100644
--- a/res/drawable-sw600dp-xxxhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-sw600dp-xxxhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-xxxhdpi/setup_illustration_wifi.jpg b/res/drawable-sw600dp-xxxhdpi/setup_illustration_wifi.jpg
index d6f2f82..b940a9b 100644
--- a/res/drawable-sw600dp-xxxhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-sw600dp-xxxhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg
index 2733f8e..ae67f38 100644
--- a/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_lock_screen.jpg b/res/drawable-xhdpi/setup_illustration_lock_screen.jpg
index b6b856e..ddad6d5 100644
--- a/res/drawable-xhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-xhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_tile.jpg b/res/drawable-xhdpi/setup_illustration_tile.jpg
index 57bccca..8beeda8 100644
--- a/res/drawable-xhdpi/setup_illustration_tile.jpg
+++ b/res/drawable-xhdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_wifi.jpg b/res/drawable-xhdpi/setup_illustration_wifi.jpg
index a399c19..19478aa 100644
--- a/res/drawable-xhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-xhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg
index aec8d0f..18b885d 100644
--- a/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_lock_screen.jpg b/res/drawable-xxhdpi/setup_illustration_lock_screen.jpg
index 4cb0c63..5b0a7a7 100644
--- a/res/drawable-xxhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-xxhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_tile.jpg b/res/drawable-xxhdpi/setup_illustration_tile.jpg
index 2ba33fa..05d4804 100644
--- a/res/drawable-xxhdpi/setup_illustration_tile.jpg
+++ b/res/drawable-xxhdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_wifi.jpg b/res/drawable-xxhdpi/setup_illustration_wifi.jpg
index a27c93e..a28052b 100644
--- a/res/drawable-xxhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-xxhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg
index 448a651..6d97626 100644
--- a/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg
+++ b/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_lock_screen.jpg b/res/drawable-xxxhdpi/setup_illustration_lock_screen.jpg
index 13821f3..5be34fd 100644
--- a/res/drawable-xxxhdpi/setup_illustration_lock_screen.jpg
+++ b/res/drawable-xxxhdpi/setup_illustration_lock_screen.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_tile.jpg b/res/drawable-xxxhdpi/setup_illustration_tile.jpg
index 4e67026..9d5c4c9 100644
--- a/res/drawable-xxxhdpi/setup_illustration_tile.jpg
+++ b/res/drawable-xxxhdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_wifi.jpg b/res/drawable-xxxhdpi/setup_illustration_wifi.jpg
index 56c19b6..f2187cb 100644
--- a/res/drawable-xxxhdpi/setup_illustration_wifi.jpg
+++ b/res/drawable-xxxhdpi/setup_illustration_wifi.jpg
Binary files differ
diff --git a/res/drawable/wifi_signal_colored.xml b/res/drawable/wifi_signal_colored.xml
index 4eb41c0..91f8b88 100644
--- a/res/drawable/wifi_signal_colored.xml
+++ b/res/drawable/wifi_signal_colored.xml
@@ -20,22 +20,22 @@
         <level-list>
             <item android:maxLevel="0">
                 <bitmap
-                    android:src="@drawable/ic_wifi_lock_signal_1_light"
+                    android:src="@drawable/ic_wifi_lock_signal_1_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="1">
                 <bitmap
-                    android:src="@drawable/ic_wifi_lock_signal_2_light"
+                    android:src="@drawable/ic_wifi_lock_signal_2_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="2">
                 <bitmap
-                    android:src="@drawable/ic_wifi_lock_signal_3_light"
+                    android:src="@drawable/ic_wifi_lock_signal_3_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="3">
                 <bitmap
-                    android:src="@drawable/ic_wifi_lock_signal_4_light"
+                    android:src="@drawable/ic_wifi_lock_signal_4_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
         </level-list>
@@ -44,22 +44,22 @@
         <level-list>
             <item android:maxLevel="0">
                 <bitmap
-                    android:src="@drawable/ic_wifi_signal_1_light"
+                    android:src="@drawable/ic_wifi_signal_1_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="1">
                 <bitmap
-                    android:src="@drawable/ic_wifi_signal_2_light"
+                    android:src="@drawable/ic_wifi_signal_2_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="2">
                 <bitmap
-                    android:src="@drawable/ic_wifi_signal_3_light"
+                    android:src="@drawable/ic_wifi_signal_3_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
             <item android:maxLevel="3">
                 <bitmap
-                    android:src="@drawable/ic_wifi_signal_4_light"
+                    android:src="@drawable/ic_wifi_signal_4_teal"
                     android:tint="?attr/wifi_signal_color" />
             </item>
         </level-list>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index dd7382f..e9da7fe 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -47,8 +47,8 @@
     <color name="setup_lock_pattern_view_success_color_light">@color/suw_color_accent_light</color>
     <color name="setup_lock_pattern_view_error_color_dark">#fff44336</color>
     <color name="setup_lock_pattern_view_error_color_light">@color/lock_pattern_view_error_color</color>
-    <color name="setup_wizard_wifi_color_dark">#ff00e4ff</color>
-    <color name="setup_wizard_wifi_color_light">#ff0096a6</color>
+    <color name="setup_wizard_wifi_color_dark">#ff448aff</color>
+    <color name="setup_wizard_wifi_color_light">#ff3367d6</color>
 
     <color name="lock_pattern_background">#00000000</color>
     <color name="lock_pattern_view_regular_color">#ff37474f</color>
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 0d28126..2c900bb 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -41,7 +41,7 @@
         <item name="setup_divider_color">@color/setup_divider_color_dark</item>
         <item name="side_margin">0dip</item>
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_dark</item>
-        <item name="wifi_signal">@drawable/wifi_signal_teal</item>
+        <item name="wifi_signal">@drawable/wifi_signal_colored</item>
         <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
 
         <!-- LockPatternView colors -->
@@ -62,7 +62,7 @@
         <item name="setup_divider_color">@color/setup_divider_color_light</item>
         <item name="side_margin">0dip</item>
         <item name="wifi_signal_color">@color/setup_wizard_wifi_color_light</item>
-        <item name="wifi_signal">@drawable/wifi_signal_teal</item>
+        <item name="wifi_signal">@drawable/wifi_signal_colored</item>
         <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
 
         <!-- LockPatternView colors -->
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index 68cfb60..1b32b86 100644
--- a/src/com/android/settings/ApnSettings.java
+++ b/src/com/android/settings/ApnSettings.java
@@ -146,7 +146,7 @@
             setHasOptionsMenu(true);
         }
 
-        mSubscriptionInfo = Utils.findRecordBySubId(activity, subId);
+        mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId);
     }
 
     @Override
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 6e72ef7..27a486c 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -717,9 +717,9 @@
 
         int simCount = mTelephonyManager.getSimCount();
 
-        for (int i = 0; i < simCount; i++) {
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(context, i);
-            if (sir != null) {
+        List<SubscriptionInfo> sirs = mSubscriptionManager.getActiveSubscriptionInfoList();
+        if (sirs != null) {
+            for (SubscriptionInfo sir : sirs) {
                 addMobileTab(context, sir, (simCount > 1));
             }
         }
@@ -880,8 +880,8 @@
         if (mCurrentTab != null && mCurrentTab.length() > TAB_MOBILE.length() ){
             final int slotId = Integer.parseInt(mCurrentTab.substring(TAB_MOBILE.length(),
                     mCurrentTab.length()));
-            final SubscriptionInfo sir = com.android.settings.Utils.findRecordBySlotId(context,
-                    slotId);
+            final SubscriptionInfo sir = mSubscriptionManager
+                    .getActiveSubscriptionInfoForSimSlotIndex(slotId);
 
             if (sir != null) {
                 seriesColor = sir.getIconTint();
@@ -1245,8 +1245,7 @@
             return;
         }
 
-        final SubscriptionInfo nextSir = mSubscriptionManager.getActiveSubscriptionInfo(
-                mSubscriptionManager.getDefaultDataSubId());
+        final SubscriptionInfo nextSir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
 
         // If the device is single SIM or is enabling data on the active data SIM then forgo
         // the pop-up.
@@ -2784,22 +2783,7 @@
             return -1;
         }
 
-        //SUB SELECT
-        private boolean isMobileDataAvailable(long subId) {
-            int[] subIds = SubscriptionManager.getSubId(PhoneConstants.SUB1);
-            if (subIds != null && subIds[0] == subId) {
-                return true;
-            }
-
-            subIds = SubscriptionManager.getSubId(PhoneConstants.SUB2);
-            if (subIds != null && subIds[0] == subId) {
-                return true;
-            }
-
-            subIds = SubscriptionManager.getSubId(PhoneConstants.SUB3);
-            if (subIds != null && subIds[0] == subId) {
-                return true;
-            }
-            return false;
+        private boolean isMobileDataAvailable(int subId) {
+            return mSubscriptionManager.getActiveSubscriptionInfo(subId) != null;
         }
 }
diff --git a/src/com/android/settings/FingerprintEnroll.java b/src/com/android/settings/FingerprintEnroll.java
index 8449a1f..c5ea7b4 100644
--- a/src/com/android/settings/FingerprintEnroll.java
+++ b/src/com/android/settings/FingerprintEnroll.java
@@ -31,7 +31,6 @@
 import android.os.CancellationSignal;
 import android.os.PowerManager;
 import android.os.SystemClock;
-import android.os.Vibrator;
 import android.hardware.fingerprint.FingerprintManager;
 import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback;
 import android.util.Log;
@@ -101,7 +100,6 @@
         private Stage mStage;
         private int mEnrollmentSteps;
         private boolean mEnrolling;
-        private Vibrator mVibrator;
         private ProgressBar mProgressBar;
         private ImageView mFingerprintAnimator;
         private ObjectAnimator mProgressAnim;
@@ -289,11 +287,6 @@
 
         private void updateProgress(int progress) {
             if (DEBUG) Log.v(TAG, "Progress: " + progress);
-            if (mVibrator != null) {
-                mVibrator.vibrate(100, new AudioAttributes.Builder()
-                        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
-                        .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION).build());
-            }
             if (mProgressAnim != null) {
                 mProgressAnim.cancel();
             }
@@ -367,7 +360,6 @@
             final Activity activity = getActivity();
             mFingerprintManager = (FingerprintManager)activity
                     .getSystemService(Context.FINGERPRINT_SERVICE);
-            mVibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);
             mPowerManager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
 
             mContentView = inflater.inflate(R.layout.fingerprint_enroll, null);
diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
index 0e47afb..168d3c8 100644
--- a/src/com/android/settings/IccLockSettings.java
+++ b/src/com/android/settings/IccLockSettings.java
@@ -212,14 +212,15 @@
             mTabHost.setOnTabChangedListener(mTabListener);
             mTabHost.clearAllTabs();
 
+            SubscriptionManager sm = SubscriptionManager.from(this);
             for (int i = 0; i < numSims; ++i) {
-                final SubscriptionInfo subInfo = Utils.findRecordBySlotId(this, i);
+                final SubscriptionInfo subInfo = sm.getActiveSubscriptionInfoForSimSlotIndex(i);
                 mTabHost.addTab(buildTabSpec(String.valueOf(i),
                         String.valueOf(subInfo == null
                             ? context.getString(R.string.sim_editor_title, i + 1)
                             : subInfo.getDisplayName())));
             }
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(getBaseContext(), 0);
+            final SubscriptionInfo sir = sm.getActiveSubscriptionInfoForSimSlotIndex(0);
 
             mPhone = (sir == null) ? null
                 : PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
@@ -476,7 +477,8 @@
         @Override
         public void onTabChanged(String tabId) {
             final int slotId = Integer.parseInt(tabId);
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(getBaseContext(), slotId);
+            final SubscriptionInfo sir = SubscriptionManager.from(getBaseContext())
+                    .getActiveSubscriptionInfoForSimSlotIndex(slotId);
 
             mPhone = (sir == null) ? null
                 : PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index dc4b484..d05160c 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1029,49 +1029,6 @@
     }
 
     /**
-     * finds a record with subId.
-     * Since the number of SIMs are few, an array is fine.
-     */
-    public static SubscriptionInfo findRecordBySubId(Context context, final int subId) {
-        final List<SubscriptionInfo> subInfoList =
-                SubscriptionManager.from(context).getActiveSubscriptionInfoList();
-        if (subInfoList != null) {
-            final int subInfoLength = subInfoList.size();
-
-            for (int i = 0; i < subInfoLength; ++i) {
-                final SubscriptionInfo sir = subInfoList.get(i);
-                if (sir != null && sir.getSubscriptionId() == subId) {
-                    return sir;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * finds a record with slotId.
-     * Since the number of SIMs are few, an array is fine.
-     */
-    public static SubscriptionInfo findRecordBySlotId(Context context, final int slotId) {
-        final List<SubscriptionInfo> subInfoList =
-                SubscriptionManager.from(context).getActiveSubscriptionInfoList();
-        if (subInfoList != null) {
-            final int subInfoLength = subInfoList.size();
-
-            for (int i = 0; i < subInfoLength; ++i) {
-                final SubscriptionInfo sir = subInfoList.get(i);
-                if (sir.getSimSlotIndex() == slotId) {
-                    //Right now we take the first subscription on a SIM.
-                    return sir;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
      * Queries for the UserInfo of a user. Returns null if the user doesn't exist (was removed).
      * @param userManager Instance of UserManager
      * @param checkUser The user to check the existence of.
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index b675ba4..1502173 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -312,7 +312,9 @@
             mFilterAdapter.enableFilter(FILTER_APPS_PRIORITY);
             mFilterAdapter.enableFilter(FILTER_APPS_SENSITIVE);
         }
-        mApplications.setOverrideFilter(new VolumeFilter(mVolumeUuid));
+        if (mListType == LIST_TYPE_STORAGE) {
+            mApplications.setOverrideFilter(new VolumeFilter(mVolumeUuid));
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/deviceinfo/ImeiInformation.java b/src/com/android/settings/deviceinfo/ImeiInformation.java
index c4f4bbb..d82e6c9 100644
--- a/src/com/android/settings/deviceinfo/ImeiInformation.java
+++ b/src/com/android/settings/deviceinfo/ImeiInformation.java
@@ -89,10 +89,8 @@
                     removePreferenceFromScreen(KEY_ICC_ID);
                 }
             } else {
-                setSummaryText(KEY_IMEI, phone.getDeviceId());
-                setSummaryText(KEY_IMEI_SV,
-                        ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
-                        .getDeviceSoftwareVersion(phoneId));
+                setSummaryText(KEY_IMEI, phone.getImei());
+                setSummaryText(KEY_IMEI_SV, phone.getDeviceSvn());
                 // device is not CDMA, do not display CDMA features
                 // check Null in case no specified preference in overlay xml
                 removePreferenceFromScreen(KEY_PRL_VERSION);
diff --git a/src/com/android/settings/deviceinfo/SimStatus.java b/src/com/android/settings/deviceinfo/SimStatus.java
index c52f385..4fa5673 100644
--- a/src/com/android/settings/deviceinfo/SimStatus.java
+++ b/src/com/android/settings/deviceinfo/SimStatus.java
@@ -132,9 +132,9 @@
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+        mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
 
-        mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
-        mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
+        mSelectableSubInfos = SubscriptionManager.from(this).getActiveSubscriptionInfoList();
 
         addPreferencesFromResource(R.xml.device_info_sim_status);
 
@@ -143,13 +143,6 @@
         // Note - missing in zaku build, be careful later...
         mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH);
 
-        for (int i = 0; i < mTelephonyManager.getSimCount(); i++) {
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(this, i);
-            if (sir != null) {
-                mSelectableSubInfos.add(sir);
-            }
-        }
-
         mSir = mSelectableSubInfos.size() > 0 ? mSelectableSubInfos.get(0) : null;
         if (mSelectableSubInfos.size() > 1) {
             setContentView(R.layout.sim_information);
@@ -351,10 +344,8 @@
         }
         // If formattedNumber is null or empty, it'll display as "Unknown".
         setSummaryText(KEY_PHONE_NUMBER, formattedNumber);
-        final String imei = mPhone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA
-                ? mPhone.getImei() : mPhone.getDeviceId();
-        setSummaryText(KEY_IMEI, imei);
-        setSummaryText(KEY_IMEI_SV, mTelephonyManager.getDeviceSoftwareVersion(/*slotId*/));
+        setSummaryText(KEY_IMEI, mPhone.getImei());
+        setSummaryText(KEY_IMEI_SV, mPhone.getDeviceSvn());
 
         if (!mShowLatestAreaInfo) {
             removePreferenceFromScreen(KEY_LATEST_AREA_INFO);
diff --git a/src/com/android/settings/deviceinfo/StorageWizardBase.java b/src/com/android/settings/deviceinfo/StorageWizardBase.java
index 4cb48c5..42c74a5 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardBase.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardBase.java
@@ -57,7 +57,7 @@
         if (!TextUtils.isEmpty(diskId)) {
             mDisk = mStorage.findDiskById(diskId);
         } else {
-            mDisk = mStorage.findDiskById(mVolume.getDiskId());
+            mDisk = mVolume.getDisk();
         }
 
         setTheme(R.style.SuwThemeMaterial_Light);
diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java
index db957a7..129c359 100644
--- a/src/com/android/settings/notification/AppNotificationSettings.java
+++ b/src/com/android/settings/notification/AppNotificationSettings.java
@@ -154,6 +154,9 @@
             @Override
             public boolean onPreferenceChange(Preference preference, Object newValue) {
                 final boolean banned = (Boolean) newValue;
+                if (banned) {
+                    MetricsLogger.action(getActivity(), MetricsLogger.ACTION_BAN_APP_NOTES, pkg);
+                }
                 final boolean success =  mBackend.setNotificationsBanned(pkg, uid, banned);
                 if (success) {
                     updateDependents(banned);
diff --git a/src/com/android/settings/sim/SimDialogActivity.java b/src/com/android/settings/sim/SimDialogActivity.java
index 97762c4..03a9daf 100644
--- a/src/com/android/settings/sim/SimDialogActivity.java
+++ b/src/com/android/settings/sim/SimDialogActivity.java
@@ -80,7 +80,8 @@
     private void displayPreferredDialog(final int slotId) {
         final Resources res = getResources();
         final Context context = getApplicationContext();
-        final SubscriptionInfo sir = Utils.findRecordBySlotId(context, slotId);
+        final SubscriptionInfo sir = SubscriptionManager.from(context)
+                .getActiveSubscriptionInfoForSimSlotIndex(slotId);
 
         if (sir != null) {
             AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
@@ -214,7 +215,8 @@
                 list.add((String)phoneAccount.getLabel());
                 int subId = telephonyManager.getSubIdForPhoneAccount(phoneAccount);
                 if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-                    final SubscriptionInfo sir = Utils.findRecordBySubId(context, subId);
+                    final SubscriptionInfo sir = SubscriptionManager.from(context)
+                            .getActiveSubscriptionInfo(subId);
                     callsSubInfoList.add(sir);
                 } else {
                     callsSubInfoList.add(null);
diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java
index 91dadbb..184e882 100644
--- a/src/com/android/settings/sim/SimSettings.java
+++ b/src/com/android/settings/sim/SimSettings.java
@@ -151,7 +151,10 @@
         mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots);
         mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
         for (int i = 0; i < numSlots; ++i) {
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(getActivity(), i);
+            // Less efficient than getActiveSubscriptionInfoList but we need to show a disable
+            // preference if the slot is empty
+            final SubscriptionInfo sir = mSubscriptionManager
+                    .getActiveSubscriptionInfoForSimSlotIndex(i);
             SimPreference simPreference = new SimPreference(getActivity(), sir, i);
             simPreference.setOrder(i-numSlots);
             mSimCards.addPreference(simPreference);
@@ -165,17 +168,7 @@
     }
 
     private void updateAvailableSubInfos(){
-        final TelephonyManager tm =
-            (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
-        final int numSlots = tm.getSimCount();
-
-        mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots);
-        for (int i = 0; i < numSlots; ++i) {
-            final SubscriptionInfo sir = Utils.findRecordBySlotId(getActivity(), i);
-            mAvailableSubInfos.add(sir);
-            if (sir != null) {
-            }
-        }
+        mAvailableSubInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
     }
 
     private void updateAllOptions() {
@@ -203,8 +196,7 @@
 
     private void updateSmsValues() {
         final Preference simPref = findPreference(KEY_SMS);
-        final SubscriptionInfo sir = Utils.findRecordBySubId(getActivity(),
-                mSubscriptionManager.getDefaultSmsSubId());
+        final SubscriptionInfo sir = mSubscriptionManager.getDefaultSmsSubscriptionInfo();
         simPref.setTitle(R.string.sms_messages_title);
         if (DBG) log("[updateSmsValues] mSubInfoList=" + mSubInfoList);
 
@@ -218,8 +210,7 @@
 
     private void updateCellularDataValues() {
         final Preference simPref = findPreference(KEY_CELLULAR_DATA);
-        final SubscriptionInfo sir = Utils.findRecordBySubId(getActivity(),
-                mSubscriptionManager.getDefaultDataSubId());
+        final SubscriptionInfo sir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
         simPref.setTitle(R.string.cellular_data_title);
         if (DBG) log("[updateCellularDataValues] mSubInfoList=" + mSubInfoList);
 
@@ -396,14 +387,12 @@
                     mSubInfoRecord.setDisplayName(displayName);
                     mSubscriptionManager.setDisplayName(displayName, subId,
                             SubscriptionManager.NAME_SOURCE_USER_INPUT);
-                    Utils.findRecordBySubId(getActivity(), subId).setDisplayName(displayName);
 
                     final int tintSelected = tintSpinner.getSelectedItemPosition();
                     int subscriptionId = mSubInfoRecord.getSubscriptionId();
                     int tint = mTintArr[tintSelected];
                     mSubInfoRecord.setIconTint(tint);
                     mSubscriptionManager.setIconTint(tint, subscriptionId);
-                    Utils.findRecordBySubId(getActivity(), subscriptionId).setIconTint(tint);
 
                     updateAllOptions();
                     update();
diff --git a/src/com/android/settings/utils/VoiceSettingsActivity.java b/src/com/android/settings/utils/VoiceSettingsActivity.java
index 21849a4..2553a54 100644
--- a/src/com/android/settings/utils/VoiceSettingsActivity.java
+++ b/src/com/android/settings/utils/VoiceSettingsActivity.java
@@ -21,11 +21,13 @@
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.VoiceInteractor;
+import android.app.VoiceInteractor.AbortVoiceRequest;
 import android.app.VoiceInteractor.CompleteVoiceRequest;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.TextView;
+import android.widget.Toast;
 import android.util.Log;
 
 /**
@@ -65,6 +67,10 @@
      * not null, then it will be read to the user.
      */
     protected void notifySuccess(CharSequence prompt) {
+        if (prompt != null) {
+            Toast.makeText(this, prompt, Toast.LENGTH_LONG).show();
+        }
+
         if (getVoiceInteractor() != null) {
             getVoiceInteractor().submitRequest(new CompleteVoiceRequest(prompt, null));
         }
@@ -85,8 +91,14 @@
     /**
      * Indicates when the setting could not be changed.
      */
-    protected void notifyFailure(String reason) {
-        getVoiceInteractor().submitRequest(new VoiceInteractor.AbortVoiceRequest(reason, null));
+    protected void notifyFailure(CharSequence prompt) {
+        if (prompt != null) {
+            Toast.makeText(this, prompt, Toast.LENGTH_LONG).show();
+        }
+
+        if (getVoiceInteractor() != null) {
+            getVoiceInteractor().submitRequest(new AbortVoiceRequest(prompt, null));
+        }
     }
 
     protected void showFragment(Fragment fragment, String tag) {
