diff --git a/res/drawable-hdpi/data_grid_border.9.png b/res/drawable-hdpi/data_grid_border.9.png
index e963917..699c513 100644
--- a/res/drawable-hdpi/data_grid_border.9.png
+++ b/res/drawable-hdpi/data_grid_border.9.png
Binary files differ
diff --git a/res/drawable-hdpi/data_grid_primary.9.png b/res/drawable-hdpi/data_grid_primary.9.png
index de0acf0..c0ef65f 100644
--- a/res/drawable-hdpi/data_grid_primary.9.png
+++ b/res/drawable-hdpi/data_grid_primary.9.png
Binary files differ
diff --git a/res/drawable-hdpi/data_grid_secondary.9.png b/res/drawable-hdpi/data_grid_secondary.9.png
index 9a69574..dc01a2c 100644
--- a/res/drawable-hdpi/data_grid_secondary.9.png
+++ b/res/drawable-hdpi/data_grid_secondary.9.png
Binary files differ
diff --git a/res/drawable-mdpi/data_grid_border.9.png b/res/drawable-mdpi/data_grid_border.9.png
index ac6b034..699c513 100644
--- a/res/drawable-mdpi/data_grid_border.9.png
+++ b/res/drawable-mdpi/data_grid_border.9.png
Binary files differ
diff --git a/res/drawable-mdpi/data_grid_primary.9.png b/res/drawable-mdpi/data_grid_primary.9.png
index 491f156..83411cf 100644
--- a/res/drawable-mdpi/data_grid_primary.9.png
+++ b/res/drawable-mdpi/data_grid_primary.9.png
Binary files differ
diff --git a/res/drawable-mdpi/data_grid_secondary.9.png b/res/drawable-mdpi/data_grid_secondary.9.png
index 9a69574..23330d1 100644
--- a/res/drawable-mdpi/data_grid_secondary.9.png
+++ b/res/drawable-mdpi/data_grid_secondary.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/data_grid_border.9.png b/res/drawable-xhdpi/data_grid_border.9.png
index 66b7e31..7557115 100644
--- a/res/drawable-xhdpi/data_grid_border.9.png
+++ b/res/drawable-xhdpi/data_grid_border.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/data_grid_primary.9.png b/res/drawable-xhdpi/data_grid_primary.9.png
index b1a3352..ff69fd8 100644
--- a/res/drawable-xhdpi/data_grid_primary.9.png
+++ b/res/drawable-xhdpi/data_grid_primary.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/data_grid_secondary.9.png b/res/drawable-xhdpi/data_grid_secondary.9.png
index 77e30de..09065bf 100644
--- a/res/drawable-xhdpi/data_grid_secondary.9.png
+++ b/res/drawable-xhdpi/data_grid_secondary.9.png
Binary files differ
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 11dd09f..2940442 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -27,6 +27,7 @@
 import android.inputmethodservice.KeyboardView;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Message;
 import android.preference.PreferenceActivity;
 import android.text.Editable;
 import android.text.InputType;
@@ -44,7 +45,6 @@
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 
-
 public class ChooseLockPassword extends PreferenceActivity {
     public static final String PASSWORD_MIN_KEY = "lockscreen.password_min";
     public static final String PASSWORD_MAX_KEY = "lockscreen.password_max";
@@ -98,10 +98,19 @@
         private boolean mIsAlphaMode;
         private Button mCancelButton;
         private Button mNextButton;
-        private static Handler mHandler = new Handler();
         private static final int CONFIRM_EXISTING_REQUEST = 58;
         static final int RESULT_FINISHED = RESULT_FIRST_USER;
         private static final long ERROR_MESSAGE_TIMEOUT = 3000;
+        private static final int MSG_SHOW_ERROR = 1;
+
+        private Handler mHandler = new Handler() {
+            @Override
+            public void handleMessage(Message msg) {
+                if (msg.what == MSG_SHOW_ERROR) {
+                    updateStage((Stage) msg.obj);
+                }
+            }
+        };
 
         /**
          * Keep track internally of where the user is in choosing a pattern.
@@ -235,6 +244,13 @@
         }
 
         @Override
+        public void onPause() {
+            mHandler.removeMessages(MSG_SHOW_ERROR);
+
+            super.onPause();
+        }
+
+        @Override
         public void onSaveInstanceState(Bundle outState) {
             super.onSaveInstanceState(outState);
             outState.putString(KEY_UI_STAGE, mUiStage.name());
@@ -399,11 +415,9 @@
 
         private void showError(String msg, final Stage next) {
             mHeaderText.setText(msg);
-            mHandler.postDelayed(new Runnable() {
-                public void run() {
-                    updateStage(next);
-                }
-            }, ERROR_MESSAGE_TIMEOUT);
+            Message mesg = mHandler.obtainMessage(MSG_SHOW_ERROR, next);
+            mHandler.removeMessages(MSG_SHOW_ERROR);
+            mHandler.sendMessageDelayed(mesg, ERROR_MESSAGE_TIMEOUT);
         }
 
         public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 41286ef..6312682 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -202,8 +202,6 @@
         switch (sipper.drainType) {
             case APP:
             {
-                // TODO: surface tcpBytesSent/tcpBytesReceived again once
-                // measured separately from uid_stats.
                 Uid uid = sipper.uidObj;
                 types = new int[] {
                     R.string.usage_type_cpu,
@@ -211,6 +209,8 @@
                     R.string.usage_type_wake_lock,
                     R.string.usage_type_gps,
                     R.string.usage_type_wifi_running,
+                    R.string.usage_type_data_send,
+                    R.string.usage_type_data_recv,
                     R.string.usage_type_audio,
                     R.string.usage_type_video,
                 };
@@ -220,6 +220,8 @@
                     sipper.wakeLockTime,
                     sipper.gpsTime,
                     sipper.wifiRunningTime,
+                    sipper.tcpBytesSent,
+                    sipper.tcpBytesReceived,
                     0,
                     0
                 };
