diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index cf60b51..ed1e39a 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -168,6 +168,7 @@
     /** Show all postal addresses and pick them when clicking */
     static final int MODE_PICK_POSTAL =
             55 | MODE_MASK_PICKER | MODE_MASK_NO_PRESENCE | MODE_MASK_NO_FILTER;
+    static final int MODE_GROUP = 57 | MODE_MASK_SHOW_PHOTOS;
     /** Run a search query */
     static final int MODE_QUERY = 60 | MODE_MASK_NO_FILTER;
     /** Run a search query in PICK mode, but that still launches to VIEW */
@@ -264,6 +265,8 @@
      */
     private int mQueryPersonIdIndex;
 
+    private Uri mGroupUri;
+
     private long mQueryAggregateId;
 
     /**
@@ -327,15 +330,15 @@
             mMode = MODE_DEFAULT;
             // When mDefaultMode is true the mode is set in onResume(), since the preferneces
             // activity may change it whenever this activity isn't running
-        } /* else if (UI.LIST_GROUP_ACTION.equals(action)) {
+        } else if (UI.LIST_GROUP_ACTION.equals(action)) {
             mMode = MODE_GROUP;
             String groupName = intent.getStringExtra(UI.GROUP_NAME_EXTRA_KEY);
             if (TextUtils.isEmpty(groupName)) {
                 finish();
                 return;
             }
-            buildUserGroupUris(groupName);
-        }*/ else if (UI.LIST_ALL_CONTACTS_ACTION.equals(action)) {
+            buildUserGroupUri(groupName);
+        } else if (UI.LIST_ALL_CONTACTS_ACTION.equals(action)) {
             mMode = MODE_CUSTOM;
             mDisplayAll = true;
             mDisplayOnlyPhones = false;
@@ -525,6 +528,10 @@
         empty.setGravity(gravity);
     }
 
+    private void buildUserGroupUri(String group) {
+        mGroupUri = Uri.withAppendedPath(Aggregates.CONTENT_SUMMARY_GROUP_URI, group);
+    }
+
     /**
      * Sets the mode when the request is for "default"
      */
@@ -1021,11 +1028,11 @@
 
         // Kick off the new query
         switch (mMode) {
-            /* case MODE_GROUP:
+            case MODE_GROUP:
                 mQueryHandler.startQuery(QUERY_TOKEN, null,
-                        mGroupUri, CONTACTS_PROJECTION, null, null,
-                        getSortOrder(CONTACTS_PROJECTION));
-                break; */
+                        mGroupUri, AGGREGATES_SUMMARY_PROJECTION, getAggregateSelection(), null,
+                        getSortOrder(AGGREGATES_SUMMARY_PROJECTION));
+                break;
 
             case MODE_DEFAULT:
             case MODE_PICK_AGGREGATE:
