diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 24992cc..95f0699 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -506,7 +506,6 @@
                     break;
                 case ContactsRequest.ACTION_GROUP:
                     tabToOpen = TabState.GROUPS;
-                    // TODO Select the specified group?  See the TODO in ContactsIntentResolver too.
                     break;
             }
             if (tabToOpen != null) {
diff --git a/src/com/android/contacts/list/ContactsIntentResolver.java b/src/com/android/contacts/list/ContactsIntentResolver.java
index a3fa7b0..8d14591 100644
--- a/src/com/android/contacts/list/ContactsIntentResolver.java
+++ b/src/com/android/contacts/list/ContactsIntentResolver.java
@@ -73,16 +73,7 @@
             request.setActionCode(ContactsRequest.ACTION_STREQUENT);
         } else if (UI.LIST_GROUP_ACTION.equals(action)) {
             request.setActionCode(ContactsRequest.ACTION_GROUP);
-
-            // TODO Selecting a group is not implemented, but it doesn't seem to be used anywhere.
-            // Can we remove this?
-            String groupName = intent.getStringExtra(UI.GROUP_NAME_EXTRA_KEY);
-            if (!TextUtils.isEmpty(groupName)) {
-                request.setGroupName(groupName);
-            } else {
-                Log.e(TAG, "Intent missing a required extra: " + UI.GROUP_NAME_EXTRA_KEY);
-                request.setValid(false);
-            }
+            // We no longer support UI.GROUP_NAME_EXTRA_KEY
         } else if (Intent.ACTION_PICK.equals(action)) {
             final String resolvedType = intent.resolveType(mContext);
             if (Contacts.CONTENT_TYPE.equals(resolvedType)) {
diff --git a/src/com/android/contacts/list/ContactsRequest.java b/src/com/android/contacts/list/ContactsRequest.java
index b7e21b4..2a26ddf 100644
--- a/src/com/android/contacts/list/ContactsRequest.java
+++ b/src/com/android/contacts/list/ContactsRequest.java
@@ -84,7 +84,6 @@
     private boolean mSearchMode;
     private String mQueryString;
     private boolean mIncludeProfile;
-    private String mGroupName;
     private boolean mLegacyCompatibilityMode;
     private boolean mDirectorySearchEnabled = true;
     private Uri mContactUri;
@@ -98,7 +97,6 @@
                 + " mSearchMode=" + mSearchMode
                 + " mQueryString=" + mQueryString
                 + " mIncludeProfile=" + mIncludeProfile
-                + " mGroupName=" + mGroupName
                 + " mLegacyCompatibilityMode=" + mLegacyCompatibilityMode
                 + " mDirectorySearchEnabled=" + mDirectorySearchEnabled
                 + " mContactUri=" + mContactUri
@@ -116,7 +114,6 @@
         mSearchMode = request.mSearchMode;
         mQueryString = request.mQueryString;
         mIncludeProfile = request.mIncludeProfile;
-        mGroupName = request.mGroupName;
         mLegacyCompatibilityMode = request.mLegacyCompatibilityMode;
         mDirectorySearchEnabled = request.mDirectorySearchEnabled;
         mContactUri = request.mContactUri;
@@ -138,7 +135,6 @@
             request.mSearchMode = source.readInt() != 0;
             request.mQueryString = source.readString();
             request.mIncludeProfile = source.readInt() != 0;
-            request.mGroupName = source.readString();
             request.mLegacyCompatibilityMode  = source.readInt() != 0;
             request.mDirectorySearchEnabled = source.readInt() != 0;
             request.mContactUri = source.readParcelable(classLoader);
@@ -154,7 +150,6 @@
         dest.writeInt(mSearchMode ? 1 : 0);
         dest.writeString(mQueryString);
         dest.writeInt(mIncludeProfile ? 1 : 0);
-        dest.writeString(mGroupName);
         dest.writeInt(mLegacyCompatibilityMode ? 1 : 0);
         dest.writeInt(mDirectorySearchEnabled ? 1 : 0);
         dest.writeParcelable(mContactUri, 0);
@@ -220,14 +215,6 @@
         mIncludeProfile = includeProfile;
     }
 
-    public String getGroupName() {
-        return mGroupName;
-    }
-
-    public void setGroupName(String groupName) {
-        mGroupName = groupName;
-    }
-
     public boolean isLegacyCompatibilityMode() {
         return mLegacyCompatibilityMode;
     }
