diff --git a/res/layout/contact_tile_list.xml b/res/layout/contact_tile_list.xml
index 2047b13..1df1377 100644
--- a/res/layout/contact_tile_list.xml
+++ b/res/layout/contact_tile_list.xml
@@ -32,6 +32,7 @@
         android:layout_height="match_parent"
         android:gravity="center_horizontal"
         android:layout_marginTop="@dimen/empty_message_top_margin"
-        android:textAppearance="?android:attr/textAppearanceMedium"/>
+        android:textColor="?android:attr/textColorSecondary"
+        android:textAppearance="?android:attr/textAppearanceLarge"/>
 
 </FrameLayout>
diff --git a/res/layout/contacts_unavailable_fragment.xml b/res/layout/contacts_unavailable_fragment.xml
index 5566589..1abc020 100644
--- a/res/layout/contacts_unavailable_fragment.xml
+++ b/res/layout/contacts_unavailable_fragment.xml
@@ -14,70 +14,81 @@
      limitations under the License.
 -->
 
-<com.android.contacts.widget.InterpolatingLayout
+<ScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@drawable/panel_message">
-
+    android:fillViewport="true">
     <LinearLayout
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
         android:orientation="vertical"
-        ex:layout_narrowParentWidth="600dip"
-        ex:layout_narrowWidth="400dip"
-        ex:layout_wideParentWidth="880dip"
-        ex:layout_wideWidth="600dip">
-
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center_horizontal"
+        android:background="@drawable/panel_message">
         <TextView
             android:id="@+id/message"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:layout_marginBottom="20dip" />
-
-        <Button
-            android:id="@+id/create_contact_button"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="15dip"
-            android:text="@string/contacts_unavailable_create_contact" />
-
-        <Button
-            android:id="@+id/add_account_button"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="15dip"
-            android:text="@string/contacts_unavailable_add_account" />
-
-        <Button
-            android:id="@+id/import_contacts_button"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="15dip"
-            android:text="@string/contacts_unavailable_import_contacts" />
-
-        <Button
-            android:id="@+id/import_failure_uninstall_button"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="15dip"
-            android:text="@string/upgrade_out_of_memory_uninstall" />
-
-        <Button
-            android:id="@+id/import_failure_retry_button"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="15dip"
-            android:text="@string/upgrade_out_of_memory_retry" />
-
-        <ProgressBar
-            android:id="@+id/progress"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_marginTop="48dip"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textColor="?android:attr/textColorSecondary" />
+
+        <TextView
+            android:id="@+id/secondary_message"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="?android:attr/textColorSecondary"
             android:layout_gravity="center_horizontal"
-            android:layout_marginBottom="15dip" />
+            android:layout_marginBottom="@dimen/no_accounts_message_margin" />
+
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_marginLeft="48dip"
+            android:layout_marginRight="48dip"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent">
+            <Button
+                android:id="@+id/create_contact_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="15dip"
+                android:text="@string/contacts_unavailable_create_contact" />
+
+            <Button
+                android:id="@+id/add_account_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="15dip"
+                android:text="@string/contacts_unavailable_add_account" />
+
+            <Button
+                android:id="@+id/import_contacts_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="15dip"
+                android:text="@string/contacts_unavailable_import_contacts" />
+
+            <Button
+                android:id="@+id/import_failure_uninstall_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="15dip"
+                android:text="@string/upgrade_out_of_memory_uninstall" />
+
+            <Button
+                android:id="@+id/import_failure_retry_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="15dip"
+                android:text="@string/upgrade_out_of_memory_retry" />
+
+            <ProgressBar
+                android:id="@+id/progress"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginBottom="15dip" />
+        </LinearLayout>
     </LinearLayout>
-</com.android.contacts.widget.InterpolatingLayout>
+</ScrollView>
\ No newline at end of file
diff --git a/res/layout/group_browse_list_fragment.xml b/res/layout/group_browse_list_fragment.xml
index 6e82e8f..e3d98f0 100644
--- a/res/layout/group_browse_list_fragment.xml
+++ b/res/layout/group_browse_list_fragment.xml
@@ -38,32 +38,31 @@
         android:layout_marginTop="@dimen/empty_message_top_margin"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingTop="8dip"
         android:gravity="center_horizontal"
-        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:textColor="?android:attr/textColorSecondary"
         android:text="@string/noGroups" />
 
     <LinearLayout
       android:id="@+id/add_accounts"
-      android:layout_width="match_parent"
+      android:layout_width="wrap_content"
       android:layout_height="wrap_content"
+      android:layout_gravity="center_horizontal"
       android:orientation="vertical">
 
       <TextView
-        android:layout_width="match_parent"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:gravity="center_horizontal"
-        android:layout_marginTop="@dimen/no_accounts_message_margin"
         android:layout_marginBottom="@dimen/no_accounts_message_margin"
         android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textColor="?android:attr/textColorSecondary"
         android:text="@string/noAccounts" />
 
       <Button
         android:id="@+id/add_account_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="@dimen/add_account_button_left_margin"
-        android:layout_marginRight="@dimen/add_account_button_right_margin"
         android:gravity="center"
         android:layout_gravity="center_horizontal"
         android:textAppearance="?android:attr/textAppearanceMedium"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index a67aa6b..f5fd3bf 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -240,10 +240,8 @@
     <dimen name="call_detail_action_bar_height">60dip</dimen>
 
     <!-- Empty message margins -->
-    <dimen name="empty_message_top_margin">43dip</dimen>
-    <dimen name="no_accounts_message_margin">15dip</dimen>
-    <dimen name="add_account_button_left_margin">50dip</dimen>
-    <dimen name="add_account_button_right_margin">50dip</dimen>
+    <dimen name="empty_message_top_margin">48dip</dimen>
+    <dimen name="no_accounts_message_margin">20dip</dimen>
 
     <!-- For contact filter setting screens -->
     <dimen name="contact_filter_left_margin">16dip</dimen>
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index 45ce4fe..2f13481 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -16,6 +16,8 @@
 
 package com.android.contacts;
 
+import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.model.AccountWithDataSet;
 import com.android.i18n.phonenumbers.NumberParseException;
 import com.android.i18n.phonenumbers.PhoneNumberUtil;
 import com.android.i18n.phonenumbers.PhoneNumberUtil.MatchType;
@@ -29,6 +31,8 @@
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 
+import java.util.List;
+
 public class ContactsUtils {
     private static final String TAG = "ContactsUtils";
     private static final String WAIT_SYMBOL_AS_STRING = String.valueOf(PhoneNumberUtils.WAIT);
@@ -166,4 +170,12 @@
                 (CountryDetector) context.getSystemService(Context.COUNTRY_DETECTOR);
         return detector.detectCountry().getCountryIso();
     }
+
+    public static boolean areAccountsAvailable(Context context) {
+        final List<AccountWithDataSet> accounts =
+                AccountTypeManager.getInstance(context).getAccounts(true /* writeable */);
+        return !accounts.isEmpty();
+    }
+
+
 }
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 1da1c97..b226ad1 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -19,6 +19,7 @@
 import com.android.contacts.ContactLoader;
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.ContactsActivity;
+import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
 import com.android.contacts.activities.ActionBarAdapter.TabState;
 import com.android.contacts.detail.ContactDetailFragment;
@@ -198,9 +199,7 @@
     }
 
     private boolean areAccountsAvailable() {
-        final List<AccountWithDataSet> accounts =
-                AccountTypeManager.getInstance(this).getAccounts(true /* writeable */);
-        return !accounts.isEmpty();
+        return ContactsUtils.areAccountsAvailable(this);
     }
 
 
@@ -677,13 +676,14 @@
             switch (tab) {
                 case FAVORITES:
                     mContactsUnavailableFragment.setMessageText(
-                            R.string.listTotalAllContactsZeroStarred);
+                            R.string.listTotalAllContactsZeroStarred, -1);
                     break;
                 case GROUPS:
-                    mContactsUnavailableFragment.setMessageText(R.string.noGroups);
+                    mContactsUnavailableFragment.setMessageText(R.string.noGroups,
+                            areAccountsAvailable() ? -1 : R.string.noAccounts);
                     break;
                 case ALL:
-                    mContactsUnavailableFragment.setMessageText(R.string.noContacts);
+                    mContactsUnavailableFragment.setMessageText(R.string.noContacts, -1);
                     break;
             }
         }
diff --git a/src/com/android/contacts/group/GroupBrowseListFragment.java b/src/com/android/contacts/group/GroupBrowseListFragment.java
index aca638e..49835ef 100644
--- a/src/com/android/contacts/group/GroupBrowseListFragment.java
+++ b/src/com/android/contacts/group/GroupBrowseListFragment.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts.group;
 
+import com.android.contacts.ContactsUtils;
 import com.android.contacts.GroupListLoader;
 import com.android.contacts.R;
 import com.android.contacts.group.GroupBrowseListAdapter.GroupListItemViewCache;
@@ -47,6 +48,7 @@
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ListView;
+import android.widget.TextView;
 
 /**
  * Fragment to display the list of groups.
@@ -81,7 +83,7 @@
 
     private View mRootView;
     private AutoScrollListView mListView;
-    private View mEmptyView;
+    private TextView mEmptyView;
     private View mAddAccountsView;
     private View mAddAccountButton;
 
@@ -100,7 +102,7 @@
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
         mRootView = inflater.inflate(R.layout.group_browse_list_fragment, null);
-        mEmptyView = mRootView.findViewById(R.id.empty);
+        mEmptyView = (TextView)mRootView.findViewById(R.id.empty);
 
         mAdapter = new GroupBrowseListAdapter(mContext);
         mAdapter.setSelectionVisible(mSelectionVisible);
@@ -120,7 +122,7 @@
             }
         });
 
-        mEmptyView = mRootView.findViewById(R.id.empty);
+        mListView.setEmptyView(mEmptyView);
         mAddAccountsView = mRootView.findViewById(R.id.add_accounts);
         mAddAccountButton = mRootView.findViewById(R.id.add_account_button);
         mAddAccountButton.setOnClickListener(new OnClickListener() {
@@ -133,7 +135,7 @@
                 startActivity(intent);
             }
         });
-        setAddAccountsVisibility(false);
+        setAddAccountsVisibility(!ContactsUtils.areAccountsAvailable(mContext));
 
         if (savedInstanceState != null) {
             String groupUriString = savedInstanceState.getString(EXTRA_KEY_GROUP_URI);
@@ -193,6 +195,7 @@
 
         @Override
         public CursorLoader onCreateLoader(int id, Bundle args) {
+            mEmptyView.setText(null);
             return new GroupListLoader(mContext);
         }
 
@@ -207,6 +210,8 @@
     };
 
     private void bindGroupList() {
+        mEmptyView.setText(R.string.noGroups);
+        setAddAccountsVisibility(!ContactsUtils.areAccountsAvailable(mContext));
         if (mGroupListCursor == null) {
             return;
         }
@@ -219,7 +224,6 @@
             // Restore the scroll position.
             mListView.onRestoreInstanceState(listState);
         }
-        mListView.setEmptyView(mEmptyView);
 
         mSelectedGroupUri = mAdapter.getSelectedGroup();
         if (mSelectionVisible && mSelectedGroupUri != null) {
diff --git a/src/com/android/contacts/list/ContactsUnavailableFragment.java b/src/com/android/contacts/list/ContactsUnavailableFragment.java
index 3bab3fd..74a578f 100644
--- a/src/com/android/contacts/list/ContactsUnavailableFragment.java
+++ b/src/com/android/contacts/list/ContactsUnavailableFragment.java
@@ -39,6 +39,7 @@
 
     private View mView;
     private TextView mMessageView;
+    private TextView mSecondaryMessageView;
     private Button mCreateContactButton;
     private Button mAddAccountButton;
     private Button mImportContactsButton;
@@ -46,6 +47,7 @@
     private Button mRetryUpgradeButton;
     private ProgressBar mProgress;
     private int mNoContactsMsgResId = -1;
+    private int mNSecNoContactsMsgResId = -1;
 
     private OnContactsUnavailableActionListener mListener;
 
@@ -54,6 +56,7 @@
             LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         mView = inflater.inflate(R.layout.contacts_unavailable_fragment, null);
         mMessageView = (TextView) mView.findViewById(R.id.message);
+        mSecondaryMessageView = (TextView) mView.findViewById(R.id.secondary_message);
         mCreateContactButton = (Button) mView.findViewById(R.id.create_contact_button);
         mCreateContactButton.setOnClickListener(this);
         mAddAccountButton = (Button) mView.findViewById(R.id.add_account_button);
@@ -82,14 +85,7 @@
         int providerStatus = mProviderStatusLoader.getProviderStatus();
         switch (providerStatus) {
             case ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS:
-                if (mNoContactsMsgResId != -1) {
-                    mMessageView.setText(mNoContactsMsgResId);
-                    mMessageView.setGravity(Gravity.CENTER_HORIZONTAL);
-                    mMessageView.setVisibility(View.VISIBLE);
-                } else {
-                    mMessageView.setGravity(Gravity.LEFT);
-                    mMessageView.setVisibility(View.GONE);
-                }
+                setMessageText(mNoContactsMsgResId, mNSecNoContactsMsgResId);
                 mCreateContactButton.setVisibility(View.VISIBLE);
                 mAddAccountButton.setVisibility(View.VISIBLE);
                 mImportContactsButton.setVisibility(View.VISIBLE);
@@ -162,18 +158,31 @@
         }
     }
     /**
-     * Set the message to be shown if data is available for the selected tab
+     * Set the message to be shown if no data is available for the selected tab
      *
-     * @param resId - String resource ID of the message
+     * @param resId - String resource ID of the message , -1 means view will not be visible
      */
-    public void setMessageText(int resId) {
+    public void setMessageText(int resId, int secResId) {
         mNoContactsMsgResId = resId;
+        mNSecNoContactsMsgResId = secResId;
         if (mMessageView != null &&
                 mProviderStatusLoader.getProviderStatus() ==
                     ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS) {
-            mMessageView.setText(mNoContactsMsgResId);
-            mMessageView.setGravity(Gravity.CENTER_HORIZONTAL);
-            mMessageView.setVisibility(View.VISIBLE);
+            if (resId != -1) {
+                mMessageView.setText(mNoContactsMsgResId);
+                mMessageView.setGravity(Gravity.CENTER_HORIZONTAL);
+                mMessageView.setVisibility(View.VISIBLE);
+                if (secResId != -1) {
+                    mSecondaryMessageView.setText(mNSecNoContactsMsgResId);
+                    mSecondaryMessageView.setGravity(Gravity.CENTER_HORIZONTAL);
+                    mSecondaryMessageView.setVisibility(View.VISIBLE);
+                } else {
+                    mSecondaryMessageView.setVisibility(View.INVISIBLE);
+                }
+            } else {
+                mSecondaryMessageView.setVisibility(View.GONE);
+                mMessageView.setVisibility(View.GONE);
+            }
         }
     }
 }
