diff --git a/src/com/android/contacts/preference/DefaultAccountPreference.java b/src/com/android/contacts/preference/DefaultAccountPreference.java
index efff5a0..d43b8d5 100644
--- a/src/com/android/contacts/preference/DefaultAccountPreference.java
+++ b/src/com/android/contacts/preference/DefaultAccountPreference.java
@@ -23,7 +23,6 @@
 import android.util.AttributeSet;
 import android.view.View;
 
-import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.model.account.AccountInfo;
 import com.android.contacts.model.account.AccountWithDataSet;
 import com.android.contacts.util.AccountsListAdapter;
@@ -33,7 +32,6 @@
 public class DefaultAccountPreference extends DialogPreference {
     private ContactsPreferences mPreferences;
     private AccountsListAdapter mListAdapter;
-    private AccountTypeManager mAccountTypeManager;
     private List<AccountInfo> mAccounts;
     private int mChosenIndex = -1;
 
@@ -51,6 +49,7 @@
         mAccounts = accounts;
         if (mListAdapter != null) {
             mListAdapter.setAccounts(accounts, null);
+            notifyChanged();
         }
     }
 
@@ -66,7 +65,6 @@
         if (mAccounts != null) {
             mListAdapter.setAccounts(mAccounts, null);
         }
-        mAccountTypeManager = AccountTypeManager.getInstance(getContext());
     }
 
     @Override
@@ -77,11 +75,11 @@
     @Override
     public CharSequence getSummary() {
         final AccountWithDataSet defaultAccount = mPreferences.getDefaultAccount();
-        if (defaultAccount == null ||
-                !mAccountTypeManager.exists(defaultAccount)) {
+        if (defaultAccount == null || mAccounts == null ||
+                !AccountInfo.contains(mAccounts, defaultAccount)) {
             return null;
         } else {
-            return mAccountTypeManager.getAccountInfoForAccount(defaultAccount).getNameLabel();
+            return AccountInfo.getAccount(mAccounts, defaultAccount).getNameLabel();
         }
     }
 
diff --git a/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java b/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
index e9c3a01..3f68d05 100644
--- a/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
+++ b/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
@@ -294,14 +294,9 @@
     @Override
     public void onAccountsLoaded(List<AccountInfo> accounts) {
         // Hide accounts preferences if no writable accounts exist
-        if (accounts.isEmpty()) {
-            getPreferenceScreen().removePreference(findPreference(KEY_DEFAULT_ACCOUNT));
-            getPreferenceScreen().removePreference(findPreference(KEY_CUSTOM_CONTACTS_FILTER));
-        } else {
-            final DefaultAccountPreference preference =
-                    (DefaultAccountPreference) findPreference(KEY_DEFAULT_ACCOUNT);
-            preference.setAccounts(accounts);
-        }
+        final DefaultAccountPreference preference =
+                (DefaultAccountPreference) findPreference(KEY_DEFAULT_ACCOUNT);
+        preference.setAccounts(accounts);
     }
 
     @Override
