diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3069107..7817e3a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -164,7 +164,7 @@
         </activity-alias>
 
         <!-- The actual list of contacts -->
-        <activity android:name=".activities.ContactListActivity"
+        <activity android:name=".activities.ContactBrowserActivity"
             android:label="@string/contactsList"
             android:clearTaskOnLaunch="true"
         >
@@ -248,7 +248,7 @@
 
         <!-- Backwards compatibility: somebody may have hard coded this activity name -->
         <activity-alias android:name="ContactsListActivity"
-            android:targetActivity=".activities.ContactListActivity"
+            android:targetActivity=".activities.ContactBrowserActivity"
         />
 
         <!-- An activity for joining contacts -->
@@ -457,7 +457,7 @@
         <!-- Makes .ContactListActivity the search target for any activity in Contacts -->
         <meta-data
             android:name="android.app.default_searchable"
-            android:value=".activities.ContactListActivity" />
+            android:value=".activities.ContactBrowserActivity" />
 
 
         <!-- LIVE FOLDERS -->
diff --git a/src/com/android/contacts/ContactsSearchActivity.java b/src/com/android/contacts/ContactsSearchActivity.java
index 7d84640..ef2fe25 100644
--- a/src/com/android/contacts/ContactsSearchActivity.java
+++ b/src/com/android/contacts/ContactsSearchActivity.java
@@ -16,8 +16,8 @@
 
 package com.android.contacts;
 
-import com.android.contacts.activities.ContactListActivity;
+import com.android.contacts.activities.ContactBrowserActivity;
 
-public class ContactsSearchActivity extends ContactListActivity {
+public class ContactsSearchActivity extends ContactBrowserActivity {
 
-}
\ No newline at end of file
+}
diff --git a/src/com/android/contacts/DialtactsActivity.java b/src/com/android/contacts/DialtactsActivity.java
index 1771405..4fdd775 100644
--- a/src/com/android/contacts/DialtactsActivity.java
+++ b/src/com/android/contacts/DialtactsActivity.java
@@ -17,7 +17,7 @@
 package com.android.contacts;
 
 import com.android.contacts.activities.ContactsFrontDoor;
-import com.android.contacts.activities.ContactListActivity;
+import com.android.contacts.activities.ContactBrowserActivity;
 import com.android.internal.telephony.ITelephony;
 
 import android.app.Activity;
@@ -158,7 +158,7 @@
 
     private void setupContactsTab() {
         Intent intent = new Intent(UI.LIST_DEFAULT);
-        intent.setClass(this, ContactListActivity.class);
+        intent.setClass(this, ContactBrowserActivity.class);
 
         mTabHost.addTab(mTabHost.newTabSpec("contacts")
                 .setIndicator(getText(R.string.contactsIconLabel),
@@ -168,7 +168,7 @@
 
     private void setupFavoritesTab() {
         Intent intent = new Intent(UI.LIST_STREQUENT_ACTION);
-        intent.setClass(this, ContactListActivity.class);
+        intent.setClass(this, ContactBrowserActivity.class);
 
         mTabHost.addTab(mTabHost.newTabSpec("favorites")
                 .setIndicator(getString(R.string.contactsFavoritesLabel),
diff --git a/src/com/android/contacts/activities/ContactListActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
similarity index 96%
rename from src/com/android/contacts/activities/ContactListActivity.java
rename to src/com/android/contacts/activities/ContactBrowserActivity.java
index 98fc88c..2036939 100644
--- a/src/com/android/contacts/activities/ContactListActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -61,7 +61,7 @@
 /**
  * Displays a list of contacts.
  */
-public class ContactListActivity extends Activity
+public class ContactBrowserActivity extends Activity
         implements View.OnCreateContextMenuListener, NavigationBar.Listener {
 
     private static final String TAG = "ContactListActivity";
@@ -98,7 +98,7 @@
     private NavigationBar mNavigationBar;
     private int mMode = -1;
 
-    public ContactListActivity() {
+    public ContactBrowserActivity() {
         mIntentResolver = new ContactsIntentResolver(this);
     }
 
@@ -489,7 +489,7 @@
 
     private class DetailFragmentListener implements ContactDetailFragment.Listener {
         public void onContactNotFound() {
-            Toast.makeText(ContactListActivity.this, "onContactNotFound", Toast.LENGTH_LONG).show();
+            Toast.makeText(ContactBrowserActivity.this, "onContactNotFound", Toast.LENGTH_LONG).show();
         }
 
         public void onEditRequested(Uri contactLookupUri) {
@@ -510,39 +510,39 @@
     private class EditorFragmentListener implements ContactEditorFragment.Listener {
         @Override
         public void closeAfterDelete() {
-            Toast.makeText(ContactListActivity.this, "closeAfterDelete", Toast.LENGTH_LONG).show();
+            Toast.makeText(ContactBrowserActivity.this, "closeAfterDelete", Toast.LENGTH_LONG).show();
         }
 
         @Override
         public void closeAfterRevert() {
-            Toast.makeText(ContactListActivity.this, "closeAfterRevert", Toast.LENGTH_LONG).show();
+            Toast.makeText(ContactBrowserActivity.this, "closeAfterRevert", Toast.LENGTH_LONG).show();
         }
 
         @Override
         public void closeAfterSaving(int resultCode, Intent resultIntent) {
-            Toast.makeText(ContactListActivity.this, "closeAfterSaving", Toast.LENGTH_LONG).show();
+            Toast.makeText(ContactBrowserActivity.this, "closeAfterSaving", Toast.LENGTH_LONG).show();
         }
 
         @Override
         public void closeAfterSplit() {
-            Toast.makeText(ContactListActivity.this, "closeAfterSplit", Toast.LENGTH_LONG).show();
+            Toast.makeText(ContactBrowserActivity.this, "closeAfterSplit", Toast.LENGTH_LONG).show();
         }
 
         @Override
         public void closeBecauseAccountSelectorAborted() {
-            Toast.makeText(ContactListActivity.this, "closeBecauseAccountSelectorAborted",
+            Toast.makeText(ContactBrowserActivity.this, "closeBecauseAccountSelectorAborted",
                     Toast.LENGTH_LONG).show();
         }
 
         @Override
         public void closeBecauseContactNotFound() {
-            Toast.makeText(ContactListActivity.this, "closeBecauseContactNotFound",
+            Toast.makeText(ContactBrowserActivity.this, "closeBecauseContactNotFound",
                     Toast.LENGTH_LONG).show();
         }
 
         @Override
         public void setTitleTo(int resourceId) {
-            Toast.makeText(ContactListActivity.this, "setTitleTo", Toast.LENGTH_LONG).show();
+            Toast.makeText(ContactBrowserActivity.this, "setTitleTo", Toast.LENGTH_LONG).show();
         }
     }
 
diff --git a/src/com/android/contacts/activities/ContactsFrontDoor.java b/src/com/android/contacts/activities/ContactsFrontDoor.java
index f7995e2..d8ffd7a 100644
--- a/src/com/android/contacts/activities/ContactsFrontDoor.java
+++ b/src/com/android/contacts/activities/ContactsFrontDoor.java
@@ -40,7 +40,7 @@
         int screenLayoutSize = config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
         if (screenLayoutSize == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
             // XL screen, use two pane UI
-            intent.setClass(this, ContactListActivity.class);
+            intent.setClass(this, ContactBrowserActivity.class);
         } else {
             // Default to the normal dialtacts layout
             intent.setClass(this, DialtactsActivity.class);
diff --git a/src/com/android/contacts/ui/ShowOrCreateActivity.java b/src/com/android/contacts/ui/ShowOrCreateActivity.java
index ee40d76..2d8217f 100755
--- a/src/com/android/contacts/ui/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/ui/ShowOrCreateActivity.java
@@ -18,7 +18,7 @@
 
 import com.android.contacts.ContactsSearchManager;
 import com.android.contacts.R;
-import com.android.contacts.activities.ContactListActivity;
+import com.android.contacts.activities.ContactBrowserActivity;
 import com.android.contacts.util.Constants;
 import com.android.contacts.util.NotifyingAsyncQueryHandler;
 
@@ -176,7 +176,7 @@
         } else if (count > 1) {
             // If more than one, show pick list
             Intent listIntent = new Intent(Intent.ACTION_SEARCH);
-            listIntent.setComponent(new ComponentName(this, ContactListActivity.class));
+            listIntent.setComponent(new ComponentName(this, ContactBrowserActivity.class));
             listIntent.putExtras(mCreateExtras);
             startActivity(listIntent);
             finish();
diff --git a/src/com/android/contacts/vcard/ExportProcessor.java b/src/com/android/contacts/vcard/ExportProcessor.java
index d81b68c..8217861 100644
--- a/src/com/android/contacts/vcard/ExportProcessor.java
+++ b/src/com/android/contacts/vcard/ExportProcessor.java
@@ -29,7 +29,7 @@
 import android.widget.RemoteViews;
 
 import com.android.contacts.R;
-import com.android.contacts.activities.ContactListActivity;
+import com.android.contacts.activities.ContactBrowserActivity;
 import com.android.vcard.VCardComposer;
 import com.android.vcard.VCardConfig;
 
@@ -239,7 +239,7 @@
         notification.contentView = remoteViews;
         notification.contentIntent =
                 PendingIntent.getActivity(mService, 0,
-                        new Intent(mService, ContactListActivity.class), 0);
+                        new Intent(mService, ContactBrowserActivity.class), 0);
         mNotificationManager.notify(VCardService.EXPORT_NOTIFICATION_ID, notification);
     }
 
@@ -248,9 +248,9 @@
         notification.icon = android.R.drawable.stat_sys_upload_done;
         notification.flags |= Notification.FLAG_AUTO_CANCEL;
         notification.setLatestEventInfo(mService, title, message, null);
-        final Intent intent = new Intent(mService, ContactListActivity.class);
+        final Intent intent = new Intent(mService, ContactBrowserActivity.class);
         notification.contentIntent =
                 PendingIntent.getActivity(mService, 0, intent, 0);
         mNotificationManager.notify(VCardService.EXPORT_NOTIFICATION_ID, notification);
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/contacts/vcard/ImportProgressNotifier.java b/src/com/android/contacts/vcard/ImportProgressNotifier.java
index b7fac49..c023696 100644
--- a/src/com/android/contacts/vcard/ImportProgressNotifier.java
+++ b/src/com/android/contacts/vcard/ImportProgressNotifier.java
@@ -22,7 +22,7 @@
 import android.content.Intent;
 
 import com.android.contacts.R;
-import com.android.contacts.activities.ContactListActivity;
+import com.android.contacts.activities.ContactBrowserActivity;
 import com.android.vcard.VCardEntry;
 import com.android.vcard.VCardEntryHandler;
 
@@ -102,7 +102,7 @@
 
         final PendingIntent pendingIntent =
             PendingIntent.getActivity(context, 0,
-                    new Intent(context, ContactListActivity.class),
+                    new Intent(context, ContactBrowserActivity.class),
                     PendingIntent.FLAG_UPDATE_CURRENT);
 
         // notification.contentIntent = pendingIntent;
