diff --git a/src/com/android/browser/BreadCrumbView.java b/src/com/android/browser/BreadCrumbView.java
index e4940e9..643bfc7 100644
--- a/src/com/android/browser/BreadCrumbView.java
+++ b/src/com/android/browser/BreadCrumbView.java
@@ -254,7 +254,7 @@
         }
     }
 
-    private Crumb getTopCrumb() {
+    Crumb getTopCrumb() {
         Crumb crumb = null;
         if (mCrumbs.size() > 0) {
             crumb = mCrumbs.get(mCrumbs.size() - 1);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 1410ce8..ccacee8 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -16,6 +16,8 @@
 
 package com.android.browser;
 
+import com.android.browser.BreadCrumbView.Crumb;
+
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Fragment;
@@ -698,14 +700,18 @@
     }
 
     public boolean onBackPressed() {
-        if (mCrumbs != null &&
-                mCrumbs.size() > 0) {
+        if (canGoBack()) {
             mCrumbs.popView();
             return true;
         }
         return false;
     }
 
+    private boolean canGoBack() {
+        Crumb c = mCrumbs.getTopCrumb();
+        return c != null && c.canGoBack;
+    }
+
     public void setCallbackListener(BookmarksPageCallbacks callbackListener) {
         mCallbacks = callbackListener;
     }
diff --git a/src/com/android/browser/ShortcutActivity.java b/src/com/android/browser/ShortcutActivity.java
index 786c6e1..33e192a 100644
--- a/src/com/android/browser/ShortcutActivity.java
+++ b/src/com/android/browser/ShortcutActivity.java
@@ -21,9 +21,11 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
 
 public class ShortcutActivity extends Activity
-    implements BookmarksPageCallbacks {
+    implements BookmarksPageCallbacks, OnClickListener {
 
     private BrowserBookmarksPage mBookmarks;
 
@@ -32,14 +34,16 @@
         super.onCreate(savedInstanceState);
         // TODO: Is this needed?
         setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
-        mBookmarks = BrowserBookmarksPage.newInstance(this, null, null);
+        setContentView(R.layout.pick_bookmark);
+        mBookmarks = (BrowserBookmarksPage) getFragmentManager()
+                .findFragmentById(R.id.bookmarks);
         mBookmarks.setEnableContextMenu(false);
         mBookmarks.setBreadCrumbMaxVisible(2);
         mBookmarks.setBreadCrumbUseBackButton(true);
-        getFragmentManager()
-                .openTransaction()
-                .add(android.R.id.content, mBookmarks)
-                .commit();
+        View cancel = findViewById(R.id.cancel);
+        if (cancel != null) {
+            cancel.setOnClickListener(this);
+        }
     }
 
     // BookmarksPageCallbacks
@@ -70,4 +74,13 @@
     @Override
     public void onFolderChanged(int level, Uri uri) {
     }
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+        case R.id.cancel:
+            finish();
+            break;
+        }
+    }
 }
