diff --git a/src/com/android/browser/KeyChainLookup.java b/src/com/android/browser/KeyChainLookup.java
index 7f236e5..52be25a 100644
--- a/src/com/android/browser/KeyChainLookup.java
+++ b/src/com/android/browser/KeyChainLookup.java
@@ -18,8 +18,8 @@
 
 import android.content.Context;
 import android.os.AsyncTask;
-import android.os.RemoteException;
 import android.security.KeyChain;
+import android.security.KeyChainException;
 import android.webkit.ClientCertRequestHandler;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
@@ -42,7 +42,7 @@
         } catch (InterruptedException e) {
             mHandler.ignore();
             return null;
-        } catch (RemoteException e) {
+        } catch (KeyChainException e) {
             mHandler.ignore();
             return null;
         }
diff --git a/src/com/android/browser/NavTabScroller.java b/src/com/android/browser/NavTabScroller.java
index bd26df7..312e2b8 100644
--- a/src/com/android/browser/NavTabScroller.java
+++ b/src/com/android/browser/NavTabScroller.java
@@ -197,17 +197,7 @@
                 int bottom = child.getBottom();
                 if (top <= midy && bottom >= midy) {
                     sel = i;
-                } else {
-                    // check if on screen
-                    if (top > getScrollY() + getHeight() || bottom < getScrollY()) {
-                        if (!child.isPaused()) {
-                            child.pause();
-                        }
-                    } else {
-                        if (child.isPaused()) {
-                            child.resume();
-                        }
-                    }
+                    break;
                 }
             }
             if (sel != -1) {
diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java
index 061e024..f170b0f 100644
--- a/src/com/android/browser/NavTabView.java
+++ b/src/com/android/browser/NavTabView.java
@@ -198,7 +198,9 @@
 
     @Override
     public void onDetachedFromWindow() {
-        mWebView.setProxyView(null);
+        if (mWebView != null) {
+            mWebView.setProxyView(null);
+        }
     }
 
     private static void removeFromParent(View v) {
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index e517d76..89f567b 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -33,7 +33,7 @@
 import android.os.Message;
 import android.os.SystemClock;
 import android.security.KeyChain;
-import android.security.KeyChainAliasResponse;
+import android.security.KeyChainAliasCallback;
 import android.speech.RecognizerResultsIntent;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -803,7 +803,7 @@
                 handler.ignore();
                 return;
             }
-            KeyChain.choosePrivateKeyAlias(mActivity, new KeyChainAliasResponse() {
+            KeyChain.choosePrivateKeyAlias(mActivity, new KeyChainAliasCallback() {
                 @Override public void alias(String alias) {
                     if (alias == null) {
                         handler.cancel();
@@ -811,7 +811,7 @@
                     }
                     new KeyChainLookup(mActivity, handler, alias).execute();
                 }
-            });
+            }, null, null, null, -1);
         }
 
         /**
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 0aaf3d6..1e21431 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -286,7 +286,11 @@
             }
         }
         outState.putLongArray(POSITIONS, ids);
-        final long cid = getCurrentTab().getId();
+        Tab current = getCurrentTab();
+        long cid = -1;
+        if (current != null) {
+            cid = current.getId();
+        }
         outState.putLong(CURRENT, cid);
     }
 
