diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1dc53f6..77a27a1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -33,6 +33,7 @@
     <uses-permission android:name="android.permission.WAKE_LOCK"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
     <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
     <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
@@ -134,9 +135,6 @@
             <meta-data android:name="android.app.searchable"
                     android:resource="@xml/searchable" />
         </activity>
-        <activity android:name="BrowserBookmarksPage" android:label="@string/bookmarks"
-                  android:launchMode="singleTop" android:configChanges="orientation|keyboardHidden">
-        </activity>
 
         <activity android:name="ShortcutActivity"
             android:theme="@style/ShortcutTheme"
@@ -150,17 +148,9 @@
 
         </activity>
 
-        <activity android:name="BrowserDownloadPage" android:label=""
-                  android:configChanges="orientation|keyboardHidden">
-        </activity>
-
         <activity android:name="BrowserPreferencesPage" android:label="@string/menu_preferences">
         </activity>
 
-        <activity android:name="BrowserHistoryPage" android:label=""
-                  android:configChanges="orientation|keyboardHidden">
-        </activity>
-
         <activity android:name="BookmarkSearch"
                   android:label="@string/bookmarks_search"
                   android:stateNotNeeded="true"
@@ -230,6 +220,12 @@
             android:authorities="com.android.browser.home"
             android:readPermission="com.android.browser.permission.READ_HISTORY_BOOKMARKS"
             android:exported="false" />
+
+        <receiver android:name=".AccountsChangedReceiver">
+            <intent-filter>
+                <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
+            </intent-filter>
+        </receiver>
     </application>
 
 </manifest>
diff --git a/src/com/android/browser/AccountsChangedReceiver.java b/src/com/android/browser/AccountsChangedReceiver.java
new file mode 100644
index 0000000..92d6ad0
--- /dev/null
+++ b/src/com/android/browser/AccountsChangedReceiver.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+package com.android.browser;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.provider.BrowserContract;
+
+public class AccountsChangedReceiver extends BroadcastReceiver {
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        // Validate that the account we are syncing to still exists
+        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+        String accountType = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_TYPE, null);
+        String accountName = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, null);
+        if (accountType == null || accountName == null) {
+            // Not syncing, nothing to do
+            return;
+        }
+        Account[] accounts = AccountManager.get(context).getAccountsByType(accountType);
+        for (Account a : accounts) {
+            if (accountName.equals(a.name)) {
+                // Still have a valid account, sweet
+                return;
+            }
+        }
+        // Account deleted - disable sync
+        prefs.edit()
+                .remove(BrowserBookmarksPage.PREF_ACCOUNT_TYPE)
+                .remove(BrowserBookmarksPage.PREF_ACCOUNT_NAME)
+                .commit();
+        BrowserContract.Settings.setSyncEnabled(context, false);
+        for (Account a : accounts) {
+            ContentResolver.setSyncAutomatically(a, BrowserContract.AUTHORITY, false);
+            ContentResolver.setIsSyncable(a, BrowserContract.AUTHORITY, 0);
+        }
+    }
+
+}
diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
index 99a4ec9..2735166 100644
--- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java
+++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
@@ -304,7 +304,11 @@
             // Enable bookmark sync on all accounts
             Account[] accounts = (Account[]) getArguments().getParcelableArray("accounts");
             for (Account account : accounts) {
-                ContentResolver.setIsSyncable(account, BrowserContract.AUTHORITY, 1);
+                if (ContentResolver.getIsSyncable(account, BrowserContract.AUTHORITY) == 0) {
+                    // Account wasn't syncable, enable it
+                    ContentResolver.setIsSyncable(account, BrowserContract.AUTHORITY, 1);
+                    ContentResolver.setSyncAutomatically(account, BrowserContract.AUTHORITY, true);
+                }
             }
 
             dismiss();
