diff --git a/src/com/android/contacts/GroupMemberLoader.java b/src/com/android/contacts/GroupMemberLoader.java
index 9012362..7689f8a 100644
--- a/src/com/android/contacts/GroupMemberLoader.java
+++ b/src/com/android/contacts/GroupMemberLoader.java
@@ -15,7 +15,6 @@
  */
 package com.android.contacts;
 
-import com.android.contacts.list.ContactListAdapter;
 import com.android.contacts.preference.ContactsPreferences;
 
 import android.content.Context;
@@ -35,51 +34,63 @@
  */
 public final class GroupMemberLoader extends CursorLoader {
 
-    /**
-     * Projection map is taken from {@link ContactListAdapter}
-     */
-    private static final String[] PROJECTION_DATA = new String[] {
-        // TODO: Pull Projection_data out into util class
-        Data.CONTACT_ID,                        // 0
-        Data.RAW_CONTACT_ID,                    // 1
-        Data.DISPLAY_NAME_PRIMARY,              // 2
-        Data.DISPLAY_NAME_ALTERNATIVE,          // 3
-        Data.SORT_KEY_PRIMARY,                  // 4
-        Data.STARRED,                           // 5
-        Data.CONTACT_PRESENCE,                  // 6
-        Data.CONTACT_CHAT_CAPABILITY,           // 7
-        Data.PHOTO_ID,                          // 8
-        Data.PHOTO_URI,                         // 9
-        Data.PHOTO_THUMBNAIL_URI,               // 10
-        Data.LOOKUP_KEY,                        // 11
-        Data.PHONETIC_NAME,                     // 12
-        Data.HAS_PHONE_NUMBER,                  // 13
-        Data.CONTACT_STATUS,                    // 14
-    };
+    public static class GroupEditorQuery {
+        private static final String[] PROJECTION = new String[] {
+            Data.CONTACT_ID,                        // 0
+            Data.RAW_CONTACT_ID,                    // 1
+            Data.DISPLAY_NAME_PRIMARY,              // 2
+            Data.PHOTO_URI,                         // 3
+            Data.LOOKUP_KEY,                        // 4
+        };
+
+        public static final int CONTACT_ID                   = 0;
+        public static final int RAW_CONTACT_ID               = 1;
+        public static final int CONTACT_DISPLAY_NAME_PRIMARY = 2;
+        public static final int CONTACT_PHOTO_URI            = 3;
+        public static final int CONTACT_LOOKUP_KEY           = 4;
+    }
+
+    public static class GroupDetailQuery {
+        private static final String[] PROJECTION = new String[] {
+            Data.PHOTO_ID,                          // 0
+            Data.PHOTO_URI,                         // 1
+            Data.LOOKUP_KEY,                        // 2
+            Data.DISPLAY_NAME_PRIMARY,              // 3
+            Data.CONTACT_PRESENCE,                  // 4
+            Data.CONTACT_STATUS,                    // 5
+        };
+
+        public static final int CONTACT_PHOTO_ID             = 0;
+        public static final int CONTACT_PHOTO_URI            = 1;
+        public static final int CONTACT_LOOKUP_KEY           = 2;
+        public static final int CONTACT_DISPLAY_NAME_PRIMARY = 3;
+        public static final int CONTACT_PRESENCE_STATUS      = 4;
+        public static final int CONTACT_STATUS               = 5;
+    }
 
     private final long mGroupId;
 
-    public static final int CONTACT_ID_COLUMN_INDEX = 0;
-    public static final int RAW_CONTACT_ID_COLUMN_INDEX = 1;
-    public static final int CONTACT_DISPLAY_NAME_PRIMARY_COLUMN_INDEX = 2;
-    public static final int CONTACT_DISPLAY_NAME_ALTERNATIVE_COLUMN_INDEX = 3;
-    public static final int CONTACT_SORT_KEY_PRIMARY_COLUMN_INDEX = 4;
-    public static final int CONTACT_STARRED_COLUMN_INDEX = 5;
-    public static final int CONTACT_PRESENCE_STATUS_COLUMN_INDEX = 6;
-    public static final int CONTACT_CHAT_CAPABILITY_COLUMN_INDEX = 7;
-    public static final int CONTACT_PHOTO_ID_COLUMN_INDEX = 8;
-    public static final int CONTACT_PHOTO_URI_COLUMN_INDEX = 9;
-    public static final int CONTACT_PHOTO_THUMBNAIL_URI_COLUMN_INDEX = 10;
-    public static final int CONTACT_LOOKUP_KEY_COLUMN_INDEX = 11;
-    public static final int CONTACT_PHONETIC_NAME_COLUMN_INDEX = 12;
-    public static final int CONTACT_HAS_PHONE_COLUMN_INDEX = 13;
-    public static final int CONTACT_STATUS_COLUMN_INDEX = 14;
+    /**
+     * @return GroupMemberLoader object which can be used in group editor.
+     */
+    public static GroupMemberLoader constructLoaderForGroupEditorQuery(
+            Context context, long groupId) {
+        return new GroupMemberLoader(context, groupId, GroupEditorQuery.PROJECTION);
+    }
 
-    public GroupMemberLoader(Context context, long groupId) {
+    /**
+     * @return GroupMemberLoader object used in group detail page.
+     */
+    public static GroupMemberLoader constructLoaderForGroupDetailQuery(
+            Context context, long groupId) {
+        return new GroupMemberLoader(context, groupId, GroupDetailQuery.PROJECTION);
+    }
+
+    private GroupMemberLoader(Context context, long groupId, String[] projection) {
         super(context);
         mGroupId = groupId;
         setUri(createUri());
-        setProjection(PROJECTION_DATA);
+        setProjection(projection);
         setSelection(createSelection());
         setSelectionArgs(createSelectionArgs());
 
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index c856594..5b275bd 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -254,7 +254,7 @@
 
         @Override
         public CursorLoader onCreateLoader(int id, Bundle args) {
-            return new GroupMemberLoader(mContext, mGroupId);
+            return GroupMemberLoader.constructLoaderForGroupDetailQuery(mContext, mGroupId);
         }
 
         @Override
diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java
index bb56b6e..a3ebeb0 100644
--- a/src/com/android/contacts/group/GroupEditorFragment.java
+++ b/src/com/android/contacts/group/GroupEditorFragment.java
@@ -19,6 +19,7 @@
 import com.android.contacts.ContactPhotoManager;
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.GroupMemberLoader;
+import com.android.contacts.GroupMemberLoader.GroupEditorQuery;
 import com.android.contacts.GroupMetaDataLoader;
 import com.android.contacts.R;
 import com.android.contacts.activities.GroupEditorActivity;
@@ -781,7 +782,7 @@
 
         @Override
         public CursorLoader onCreateLoader(int id, Bundle args) {
-            return new GroupMemberLoader(mContext, mGroupId);
+            return GroupMemberLoader.constructLoaderForGroupEditorQuery(mContext, mGroupId);
         }
 
         @Override
@@ -789,14 +790,11 @@
             List<Member> listExistingMembers = new ArrayList<Member>();
             data.moveToPosition(-1);
             while (data.moveToNext()) {
-                long contactId = data.getLong(GroupMemberLoader.CONTACT_ID_COLUMN_INDEX);
-                long rawContactId = data.getLong(GroupMemberLoader.RAW_CONTACT_ID_COLUMN_INDEX);
-                String lookupKey = data.getString(
-                        GroupMemberLoader.CONTACT_LOOKUP_KEY_COLUMN_INDEX);
-                String displayName = data.getString(
-                        GroupMemberLoader.CONTACT_DISPLAY_NAME_PRIMARY_COLUMN_INDEX);
-                String photoUri = data.getString(
-                        GroupMemberLoader.CONTACT_PHOTO_URI_COLUMN_INDEX);
+                long contactId = data.getLong(GroupEditorQuery.CONTACT_ID);
+                long rawContactId = data.getLong(GroupEditorQuery.RAW_CONTACT_ID);
+                String lookupKey = data.getString(GroupEditorQuery.CONTACT_LOOKUP_KEY);
+                String displayName = data.getString(GroupEditorQuery.CONTACT_DISPLAY_NAME_PRIMARY);
+                String photoUri = data.getString(GroupEditorQuery.CONTACT_PHOTO_URI);
                 listExistingMembers.add(new Member(rawContactId, lookupKey, contactId,
                         displayName, photoUri));
             }
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 3eb7232..b7e2586 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -21,7 +21,9 @@
 import com.android.contacts.ContactTileLoaderFactory;
 import com.android.contacts.ContactsUtils;
 import com.android.contacts.GroupMemberLoader;
+import com.android.contacts.GroupMemberLoader.GroupDetailQuery;
 import com.android.contacts.R;
+import com.android.contacts.list.ContactTileAdapter.DisplayType;
 
 import android.content.ContentUris;
 import android.content.Context;
@@ -36,7 +38,6 @@
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.FrameLayout;
-import android.widget.TextView;
 
 import java.util.ArrayList;
 
@@ -156,13 +157,12 @@
          * the correct {@link Cursor}s will be given.
          */
         if (mDisplayType == DisplayType.GROUP_MEMBERS) {
-            mIdIndex = GroupMemberLoader.CONTACT_PHOTO_ID_COLUMN_INDEX;
-            mLookupIndex = GroupMemberLoader.CONTACT_LOOKUP_KEY_COLUMN_INDEX;
-            mPhotoUriIndex = GroupMemberLoader.CONTACT_PHOTO_URI_COLUMN_INDEX;
-            mNameIndex = GroupMemberLoader.CONTACT_DISPLAY_NAME_PRIMARY_COLUMN_INDEX;
-            mStarredIndex = GroupMemberLoader.CONTACT_STARRED_COLUMN_INDEX;
-            mPresenceIndex = GroupMemberLoader.CONTACT_PRESENCE_STATUS_COLUMN_INDEX;
-            mStatusIndex = GroupMemberLoader.CONTACT_STATUS_COLUMN_INDEX;
+            mIdIndex = GroupDetailQuery.CONTACT_PHOTO_ID;
+            mLookupIndex = GroupDetailQuery.CONTACT_LOOKUP_KEY;
+            mPhotoUriIndex = GroupDetailQuery.CONTACT_PHOTO_URI;
+            mNameIndex = GroupDetailQuery.CONTACT_DISPLAY_NAME_PRIMARY;
+            mPresenceIndex = GroupDetailQuery.CONTACT_PRESENCE_STATUS;
+            mStatusIndex = GroupDetailQuery.CONTACT_STATUS;
         } else {
             mIdIndex = ContactTileLoaderFactory.CONTACT_ID;
             mLookupIndex = ContactTileLoaderFactory.LOOKUP_KEY;
