diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3299455..6a478ce 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -541,18 +541,18 @@
         </activity>
 
         <!-- The widget that shows details and the social stream of a contact -->
-        <receiver android:name=".contactSocialWidget.ContactSocialWidgetProvider"
+        <receiver android:name=".socialwidget.SocialWidgetProvider"
             android:label="Contact Social Stream" >
             <intent-filter>
                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
             </intent-filter>
             <meta-data android:name="android.appwidget.provider"
-                    android:resource="@xml/contact_social_widget_info" />
+                    android:resource="@xml/social_widget_info" />
         </receiver>
 
         <activity
-            android:name=".contactSocialWidget.ContactSocialWidgetConfigureActivity"
-            android:theme="@style/ContactSocialWidgetConfigureTheme">
+            android:name=".socialwidget.SocialWidgetConfigureActivity"
+            android:theme="@style/SocialWidgetConfigureTheme">
             <intent-filter>
                 <action android:name="android.intent.action.APPWIDGET_PICK" />
             </intent-filter>
diff --git a/res/layout/contact_social_widget_configure_activity.xml b/res/layout/contact_social_widget_configure_activity.xml
deleted file mode 100644
index 7f6f117..0000000
--- a/res/layout/contact_social_widget_configure_activity.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
->
-    <fragment
-        class="com.android.contacts.list.DefaultContactBrowseListFragment"
-        android:id="@android:id/list"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:fastScrollEnabled="true"
-        />
-</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/contact_social_widget.xml b/res/layout/social_widget.xml
similarity index 100%
rename from res/layout/contact_social_widget.xml
rename to res/layout/social_widget.xml
diff --git a/res/values-xlarge/styles.xml b/res/values-xlarge/styles.xml
index 8c43e9a..4a397f6 100644
--- a/res/values-xlarge/styles.xml
+++ b/res/values-xlarge/styles.xml
@@ -53,7 +53,7 @@
         <item name="list_item_photo_size">64dip</item>
     </style>
     
-    <style name="ContactSocialWidgetConfigureTheme" parent="ContactPickerTheme">
+    <style name="SocialWidgetConfigureTheme" parent="ContactPickerTheme">
     </style>
 
     <style name="ContactsSearchTheme" parent="ContactPickerTheme">
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 10da2ee..5f64e27 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -173,7 +173,7 @@
         <item name="list_item_header_checkbox_margin">5dip</item>
     </style>
 
-    <style name="ContactSocialWidgetConfigureTheme" parent="ContactPickerTheme">
+    <style name="SocialWidgetConfigureTheme" parent="ContactPickerTheme">
     </style>
 
     <style name="JoinContactActivityTheme" parent="ContactPickerTheme">
diff --git a/res/xml/contact_social_widget_info.xml b/res/xml/social_widget_info.xml
similarity index 84%
rename from res/xml/contact_social_widget_info.xml
rename to res/xml/social_widget_info.xml
index 4b83e2d..330ddc7 100644
--- a/res/xml/contact_social_widget_info.xml
+++ b/res/xml/social_widget_info.xml
@@ -18,6 +18,6 @@
     android:minWidth="294dip"
     android:minHeight="72dip"
     android:updatePeriodMillis="3600000"
-    android:initialLayout="@layout/contact_social_widget"
-    android:configure="com.android.contacts.contactSocialWidget.ContactSocialWidgetConfigureActivity" >
+    android:initialLayout="@layout/social_widget"
+    android:configure="com.android.contacts.socialwidget.SocialWidgetConfigureActivity" >
 </appwidget-provider>
diff --git a/src/com/android/contacts/contactSocialWidget/ContactSocialWidgetConfigureActivity.java b/src/com/android/contacts/socialwidget/SocialWidgetConfigureActivity.java
similarity index 83%
rename from src/com/android/contacts/contactSocialWidget/ContactSocialWidgetConfigureActivity.java
rename to src/com/android/contacts/socialwidget/SocialWidgetConfigureActivity.java
index dc25a89..f5033fe 100644
--- a/src/com/android/contacts/contactSocialWidget/ContactSocialWidgetConfigureActivity.java
+++ b/src/com/android/contacts/socialwidget/SocialWidgetConfigureActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.contactSocialWidget;
+package com.android.contacts.socialwidget;
 
 import android.app.Activity;
 import android.appwidget.AppWidgetManager;
@@ -22,7 +22,7 @@
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
 
-public class ContactSocialWidgetConfigureActivity extends Activity {
+public class SocialWidgetConfigureActivity extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -45,12 +45,11 @@
                     AppWidgetManager.INVALID_APPWIDGET_ID);
 
             // Save the setting
-            final ContactSocialWidgetConfigureActivity context =
-                    ContactSocialWidgetConfigureActivity.this;
-            ContactSocialWidgetSettings.setContactUri(context, widgetId, data.getData());
+            final SocialWidgetConfigureActivity context = SocialWidgetConfigureActivity.this;
+            SocialWidgetSettings.setContactUri(context, widgetId, data.getData());
 
             // Update the widget
-            ContactSocialWidgetProvider.startLoading(context, widgetId);
+            SocialWidgetProvider.startLoading(context, widgetId);
 
             // Return OK so that the system won't remove the widget
             final Intent resultValue = new Intent();
diff --git a/src/com/android/contacts/contactSocialWidget/ContactSocialWidgetProvider.java b/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
similarity index 93%
rename from src/com/android/contacts/contactSocialWidget/ContactSocialWidgetProvider.java
rename to src/com/android/contacts/socialwidget/SocialWidgetProvider.java
index 5c82c27..32bbffb 100644
--- a/src/com/android/contacts/contactSocialWidget/ContactSocialWidgetProvider.java
+++ b/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.contactSocialWidget;
+package com.android.contacts.socialwidget;
 
 import com.android.contacts.R;
 import com.android.contacts.util.ContactBadgeUtil;
@@ -34,8 +34,8 @@
 import android.view.View;
 import android.widget.RemoteViews;
 
-public class ContactSocialWidgetProvider extends AppWidgetProvider {
-    private static final String TAG = "ContactSocialWidgetProvider";
+public class SocialWidgetProvider extends AppWidgetProvider {
+    private static final String TAG = "SocialWidgetProvider";
 
     @Override
     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
@@ -48,12 +48,12 @@
         // Show that we are loading
         final AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
         final RemoteViews loadingViews =
-            new RemoteViews(context.getPackageName(), R.layout.contact_social_widget);
+            new RemoteViews(context.getPackageName(), R.layout.social_widget);
         loadingViews.setTextViewText(R.id.name, "Loading...");
         widgetManager.updateAppWidget(widgetId, loadingViews);
 
         // Load
-        final Uri contactUri = ContactSocialWidgetSettings.getContactUri(context, widgetId);
+        final Uri contactUri = SocialWidgetSettings.getContactUri(context, widgetId);
         if (contactUri == null) {
             // Not yet set-up (this can happen while the Configuration activity is visible)
             return;
@@ -70,7 +70,7 @@
                         }
                         Log.d(TAG, "Loaded " + contactData.getLookupKey());
                         final RemoteViews views = new RemoteViews(context.getPackageName(),
-                                R.layout.contact_social_widget);
+                                R.layout.social_widget);
 
                         setDisplayName(views, contactData.getDisplayName(),
                                 contactData.getPhoneticName());
diff --git a/src/com/android/contacts/contactSocialWidget/ContactSocialWidgetSettings.java b/src/com/android/contacts/socialwidget/SocialWidgetSettings.java
similarity index 92%
rename from src/com/android/contacts/contactSocialWidget/ContactSocialWidgetSettings.java
rename to src/com/android/contacts/socialwidget/SocialWidgetSettings.java
index 32cdac7..4377991 100644
--- a/src/com/android/contacts/contactSocialWidget/ContactSocialWidgetSettings.java
+++ b/src/com/android/contacts/socialwidget/SocialWidgetSettings.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.contacts.contactSocialWidget;
+package com.android.contacts.socialwidget;
 
 import android.content.Context;
 import android.content.SharedPreferences;
@@ -22,8 +22,8 @@
 import android.net.Uri;
 import android.util.Log;
 
-public class ContactSocialWidgetSettings {
-    private static final String TAG = "ContactSocialWidgetSettings";
+public class SocialWidgetSettings {
+    private static final String TAG = "SocialWidgetSettings";
 
     private static final String PREFS_NAME = "WidgetSettings";
     private static final String CONTACT_URI = "CONTACT_URI_%";
