diff --git a/res/layout/call_log_action_call.xml b/res/layout/call_log_action_call.xml
new file mode 100644
index 0000000..53c343c
--- /dev/null
+++ b/res/layout/call_log_action_call.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <ImageView
+        android:id="@+id/call_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:paddingLeft="14dip"
+        android:paddingRight="14dip"
+        android:layout_alignParentRight="true"
+        android:gravity="center_vertical"
+        android:background="@drawable/call_background"
+        android:src="@android:drawable/sym_action_call"
+    />
+
+    <View android:id="@+id/divider"
+        android:layout_width="1px"
+        android:layout_height="match_parent"
+        android:layout_marginTop="5dip"
+        android:layout_marginBottom="5dip"
+        android:layout_toLeftOf="@id/call_icon"
+        android:layout_marginLeft="11dip"
+        android:background="@drawable/divider_vertical_dark"
+    />
+
+</merge>
diff --git a/res/layout/call_log_action_group.xml b/res/layout/call_log_action_group.xml
new file mode 100644
index 0000000..0b130b6
--- /dev/null
+++ b/res/layout/call_log_action_group.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <ImageView
+        android:id="@+id/groupIndicator"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:paddingLeft="12dip"
+        android:paddingRight="13dip"
+        android:layout_alignParentRight="true"
+        android:gravity="center_vertical"
+        android:background="@drawable/call_background"
+        android:src="@*android:drawable/expander_ic_minimized"
+    />
+
+    <View android:id="@+id/divider"
+        android:layout_width="1px"
+        android:layout_height="match_parent"
+        android:layout_marginTop="5dip"
+        android:layout_marginBottom="5dip"
+        android:layout_toLeftOf="@id/groupIndicator"
+        android:layout_marginLeft="11dip"
+        android:background="@drawable/divider_vertical_dark"
+    />
+
+</merge>
diff --git a/res/layout/call_log_list_child_item.xml b/res/layout/call_log_list_child_item.xml
index bb48fcf..68e1360 100644
--- a/res/layout/call_log_list_child_item.xml
+++ b/res/layout/call_log_list_child_item.xml
@@ -21,18 +21,7 @@
     android:background="@drawable/list_item_background_secondary"
 >
 
-    <ImageView android:id="@+id/call_icon"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:paddingLeft="14dip"
-        android:paddingRight="14dip"
-        android:layout_alignParentRight="true"
-
-        android:gravity="center_vertical"
-        android:src="@android:drawable/sym_action_call"
-        android:background="@drawable/call_background_secondary"
-    />
-
+    <include layout="@layout/call_log_action_call"/>
     <include layout="@layout/call_log_list_item_layout"/>
 
 </RelativeLayout>
diff --git a/res/layout/call_log_list_group_item.xml b/res/layout/call_log_list_group_item.xml
index 79423fa..d1bd165 100644
--- a/res/layout/call_log_list_group_item.xml
+++ b/res/layout/call_log_list_group_item.xml
@@ -20,27 +20,7 @@
     android:paddingLeft="7dip"
 >
 
-    <ImageView android:id="@+id/call_icon"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:paddingLeft="14dip"
-        android:paddingRight="14dip"
-        android:layout_alignParentRight="true"
-
-        android:gravity="center_vertical"
-        android:src="@android:drawable/sym_action_call"
-        android:background="@drawable/call_background"
-    />
-
-    <View android:id="@+id/divider"
-        android:layout_width="1px"
-        android:layout_height="match_parent"
-        android:layout_marginTop="5dip"
-        android:layout_marginBottom="5dip"
-        android:layout_toLeftOf="@id/call_icon"
-        android:layout_marginLeft="11dip"
-        android:background="@drawable/divider_vertical_dark"
-    />
+    <include layout="@layout/call_log_action_group"/>
 
     <TextView android:id="@+id/date"
         android:layout_width="wrap_content"
@@ -112,14 +92,4 @@
         android:ellipsize="marquee"
         android:gravity="center_vertical"
     />
-
-    <ImageView
-        android:id="@+id/groupIndicator"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentLeft="true"
-        android:layout_centerVertical="true"
-        android:src="@*android:drawable/expander_ic_minimized"
-        android:gravity="center_vertical"
-    />
 </RelativeLayout>
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index 4ea0563..10e09a4 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -20,18 +20,7 @@
     android:paddingLeft="7dip"
 >
 
-    <ImageView android:id="@+id/call_icon"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:paddingLeft="14dip"
-        android:paddingRight="14dip"
-        android:layout_alignParentRight="true"
-
-        android:gravity="center_vertical"
-        android:src="@android:drawable/sym_action_call"
-        android:background="@drawable/call_background"
-    />
-
+    <include layout="@layout/call_log_action_call"/>
     <include layout="@layout/call_log_list_item_layout"/>
 
 </RelativeLayout>
diff --git a/res/layout/call_log_list_item_layout.xml b/res/layout/call_log_list_item_layout.xml
index faaa893..8096ee6 100644
--- a/res/layout/call_log_list_item_layout.xml
+++ b/res/layout/call_log_list_item_layout.xml
@@ -16,16 +16,6 @@
 
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <View android:id="@+id/divider"
-        android:layout_width="1px"
-        android:layout_height="match_parent"
-        android:layout_marginTop="5dip"
-        android:layout_marginBottom="5dip"
-        android:layout_toLeftOf="@id/call_icon"
-        android:layout_marginLeft="11dip"
-        android:background="@drawable/divider_vertical_dark"
-    />
-
     <ImageView android:id="@+id/call_type_icon"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
index 5872043..360f5a6 100644
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ b/src/com/android/contacts/calllog/CallLogFragment.java
@@ -21,6 +21,7 @@
 import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
 import com.android.internal.telephony.CallerInfo;
+import com.google.common.annotations.VisibleForTesting;
 
 import android.app.ListFragment;
 import android.content.AsyncQueryHandler;
@@ -155,8 +156,14 @@
         public TextView numberView;
         public TextView dateView;
         public ImageView iconView;
+        /** The icon used to place a call to the contact. Only present for non-group entries. */
         public View callView;
+        /** The icon used to expand and collapse an entry. Only present for group entries. */
         public ImageView groupIndicator;
+        /**
+         * The text view containing the number of items in the group. Only present for group
+         * entries.
+         */
         public TextView groupSize;
     }
 
@@ -540,6 +547,7 @@
         }
 
 
+        @VisibleForTesting
         @Override
         public View newStandAloneView(Context context, ViewGroup parent) {
             LayoutInflater inflater =
@@ -549,13 +557,15 @@
             return view;
         }
 
+        @VisibleForTesting
         @Override
         public void bindStandAloneView(View view, Context context, Cursor cursor) {
             bindView(context, view, cursor);
         }
 
+        @VisibleForTesting
         @Override
-        protected View newChildView(Context context, ViewGroup parent) {
+        public View newChildView(Context context, ViewGroup parent) {
             LayoutInflater inflater =
                     (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             View view = inflater.inflate(R.layout.call_log_list_child_item, parent, false);
@@ -563,13 +573,15 @@
             return view;
         }
 
+        @VisibleForTesting
         @Override
-        protected void bindChildView(View view, Context context, Cursor cursor) {
+        public void bindChildView(View view, Context context, Cursor cursor) {
             bindView(context, view, cursor);
         }
 
+        @VisibleForTesting
         @Override
-        protected View newGroupView(Context context, ViewGroup parent) {
+        public View newGroupView(Context context, ViewGroup parent) {
             LayoutInflater inflater =
                     (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             View view = inflater.inflate(R.layout.call_log_list_group_item, parent, false);
@@ -577,8 +589,9 @@
             return view;
         }
 
+        @VisibleForTesting
         @Override
-        protected void bindGroupView(View view, Context context, Cursor cursor, int groupSize,
+        public void bindGroupView(View view, Context context, Cursor cursor, int groupSize,
                 boolean expanded) {
             final CallLogListItemViews views = (CallLogListItemViews) view.getTag();
             int groupIndicator = expanded
@@ -599,7 +612,9 @@
             views.dateView = (TextView) view.findViewById(R.id.date);
             views.iconView = (ImageView) view.findViewById(R.id.call_type_icon);
             views.callView = view.findViewById(R.id.call_icon);
-            views.callView.setOnClickListener(this);
+            if (views.callView != null) {
+                views.callView.setOnClickListener(this);
+            }
             views.groupIndicator = (ImageView) view.findViewById(R.id.groupIndicator);
             views.groupSize = (TextView) view.findViewById(R.id.groupSize);
             view.setTag(views);
@@ -615,7 +630,9 @@
             String callerNumberLabel = c.getString(CallLogQuery.CALLER_NUMBERLABEL);
             String countryIso = c.getString(CallLogQuery.COUNTRY_ISO);
             // Store away the number so we can call it directly if you click on the call icon
-            views.callView.setTag(number);
+            if (views.callView != null) {
+                views.callView.setTag(number);
+            }
 
             // Lookup contacts with this number
             ContactInfo info = mContactInfo.get(number);
@@ -663,7 +680,9 @@
             // Set the text lines and call icon.
             // Assumes the call back feature is on most of the
             // time. For private and unknown numbers: hide it.
-            views.callView.setVisibility(View.VISIBLE);
+            if (views.callView != null) {
+                views.callView.setVisibility(View.VISIBLE);
+            }
 
             if (!TextUtils.isEmpty(name)) {
                 views.line1View.setText(name);
@@ -711,10 +730,14 @@
             } else {
                 if (number.equals(CallerInfo.UNKNOWN_NUMBER)) {
                     number = getString(R.string.unknown);
-                    views.callView.setVisibility(View.INVISIBLE);
+                    if (views.callView != null) {
+                        views.callView.setVisibility(View.INVISIBLE);
+                    }
                 } else if (number.equals(CallerInfo.PRIVATE_NUMBER)) {
                     number = getString(R.string.private_num);
-                    views.callView.setVisibility(View.INVISIBLE);
+                    if (views.callView != null) {
+                        views.callView.setVisibility(View.INVISIBLE);
+                    }
                 } else if (number.equals(CallerInfo.PAYPHONE_NUMBER)) {
                     number = getString(R.string.payphone);
                 } else if (PhoneNumberUtils.extractNetworkPortion(number)
diff --git a/tests/src/com/android/contacts/activities/CallLogActivityTests.java b/tests/src/com/android/contacts/activities/CallLogActivityTests.java
index ef1afd0..eb0ec73 100644
--- a/tests/src/com/android/contacts/activities/CallLogActivityTests.java
+++ b/tests/src/com/android/contacts/activities/CallLogActivityTests.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts.activities;
 
+import com.android.contacts.R;
 import com.android.contacts.calllog.CallLogFragment;
 import com.android.internal.telephony.CallerInfo;
 
@@ -138,6 +139,38 @@
         checkCallStatus();
     }
 
+    @MediumTest
+    public void testCallAndGroupViews_GroupView() {
+        mCursor.moveToFirst();
+        insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
+        insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
+        insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
+        View view = mAdapter.newGroupView(getActivity(), mParentView);
+        mAdapter.bindGroupView(view, getActivity(), mCursor, 3, false);
+        assertNull(view.findViewById(R.id.call_icon));
+        assertNotNull(view.findViewById(R.id.groupIndicator));
+    }
+
+    @MediumTest
+    public void testCallAndGroupViews_StandAloneView() {
+        mCursor.moveToFirst();
+        insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
+        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
+        mAdapter.bindStandAloneView(view, getActivity(), mCursor);
+        assertNotNull(view.findViewById(R.id.call_icon));
+        assertNull(view.findViewById(R.id.groupIndicator));
+    }
+
+    @MediumTest
+    public void testCallAndGroupViews_ChildView() {
+        mCursor.moveToFirst();
+        insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
+        View view = mAdapter.newChildView(getActivity(), mParentView);
+        mAdapter.bindChildView(view, getActivity(), mCursor);
+        assertNotNull(view.findViewById(R.id.call_icon));
+        assertNull(view.findViewById(R.id.groupIndicator));
+    }
+
     //
     // HELPERS to check conditions on the DB/views
     //
@@ -273,6 +306,8 @@
         row.add(number);
         if (NOW == date) {
             row.add(new Date().getTime());
+        } else {
+            row.add(date);
         }
         if (duration < 0) {
             duration = mRnd.nextInt(10 * 60);  // 0 - 10 minutes random.
