diff --git a/src/com/android/contacts/ContactsApplication.java b/src/com/android/contacts/ContactsApplication.java
index 2d2a782..ff6a1ae 100644
--- a/src/com/android/contacts/ContactsApplication.java
+++ b/src/com/android/contacts/ContactsApplication.java
@@ -34,6 +34,8 @@
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.testing.InjectedServices;
 import com.android.contacts.common.util.Constants;
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+
 import com.google.common.annotations.VisibleForTesting;
 
 public final class ContactsApplication extends Application {
@@ -128,6 +130,8 @@
         if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
             Log.d(Constants.PERFORMANCE_TAG, "ContactsApplication.onCreate finish");
         }
+
+        AnalyticsUtil.initialize(this);
     }
 
     private class DelayedInitializer extends AsyncTask<Void, Void, Void> {
diff --git a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
index a1ff6d9..e3fa7e2 100644
--- a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
+++ b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
@@ -58,7 +58,6 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
-import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
 import com.android.contacts.editor.Editor;
 import com.android.contacts.editor.EditorUiUtils;
@@ -103,7 +102,7 @@
  * Note when there's no accounts, it *is* okay to show the picker / dialog, because the local-only
  * contacts are writable.
  */
-public class ConfirmAddDetailActivity extends ContactsActivity implements
+public class ConfirmAddDetailActivity extends Activity implements
         DialogManager.DialogShowingViewActivity {
 
     private static final String TAG = "ConfirmAdd"; // The class name is too long to be a tag.
diff --git a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
index 197d3bd..bf3b1c1 100644
--- a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
@@ -28,7 +28,6 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
-import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
 import com.android.contacts.editor.ContactEditorUtils;
 import com.android.contacts.common.model.AccountTypeManager;
@@ -46,7 +45,7 @@
  * the new contact in. If the activity result doesn't contain intent data, then there is no
  * account for this contact.
  */
-public class ContactEditorAccountsChangedActivity extends ContactsActivity {
+public class ContactEditorAccountsChangedActivity extends Activity {
 
     private static final String TAG = ContactEditorAccountsChangedActivity.class.getSimpleName();
 
diff --git a/src/com/android/contacts/activities/PhotoSelectionActivity.java b/src/com/android/contacts/activities/PhotoSelectionActivity.java
index a773f11..da0d2e4 100644
--- a/src/com/android/contacts/activities/PhotoSelectionActivity.java
+++ b/src/com/android/contacts/activities/PhotoSelectionActivity.java
@@ -19,6 +19,7 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
@@ -32,7 +33,6 @@
 import android.widget.FrameLayout.LayoutParams;
 import android.widget.ImageView;
 
-import com.android.contacts.ContactsActivity;
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.R;
@@ -44,7 +44,7 @@
 /**
  * Popup activity for choosing a contact photo within the Contacts app.
  */
-public class PhotoSelectionActivity extends ContactsActivity {
+public class PhotoSelectionActivity extends Activity {
 
     private static final String TAG = "PhotoSelectionActivity";
 
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index a2e32c9..ed2520d 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -93,8 +93,6 @@
 import com.android.contacts.util.HelpUtils;
 import com.android.contacts.util.PhoneCapabilityTester;
 import com.android.contacts.util.UiClosables;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
-
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
@@ -104,7 +102,7 @@
 import java.util.Comparator;
 import java.util.List;
 
-public class ContactEditorFragment extends AnalyticsFragment implements
+public class ContactEditorFragment extends Fragment implements
         SplitContactConfirmationDialogFragment.Listener,
         AggregationSuggestionEngine.Listener, AggregationSuggestionView.Listener,
         RawContactReadOnlyEditorView.Listener {
diff --git a/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java b/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
index 423052e..c790e0b 100644
--- a/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
+++ b/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
@@ -24,7 +24,6 @@
 import android.os.Bundle;
 
 import com.android.contacts.R;
-import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
 
 /**
  * Shows a dialog asking the user whether to split the contact. The result is passed back
@@ -32,7 +31,7 @@
  * has to implement {@link SplitContactConfirmationDialogFragment.Listener}.
  * Does not split the contact itself.
  */
-public class SplitContactConfirmationDialogFragment extends AnalyticsDialogFragment {
+public class SplitContactConfirmationDialogFragment extends DialogFragment {
     public static final String TAG = "SplitContactConfirmationDialog";
 
     public SplitContactConfirmationDialogFragment() {
diff --git a/src/com/android/contacts/group/GroupBrowseListFragment.java b/src/com/android/contacts/group/GroupBrowseListFragment.java
index e511d52..81cc28c 100644
--- a/src/com/android/contacts/group/GroupBrowseListFragment.java
+++ b/src/com/android/contacts/group/GroupBrowseListFragment.java
@@ -47,12 +47,11 @@
 import com.android.contacts.group.GroupBrowseListAdapter.GroupListItemViewCache;
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.list.AutoScrollListView;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
 
 /**
  * Fragment to display the list of groups.
  */
-public class GroupBrowseListFragment extends AnalyticsFragment
+public class GroupBrowseListFragment extends Fragment
         implements OnFocusChangeListener, OnTouchListener {
 
     /**
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index b8f8975..c12595d 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -57,12 +57,11 @@
 import com.android.contacts.list.GroupMemberTileAdapter;
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.model.account.AccountType;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
 
 /**
  * Displays the details of a group and shows a list of actions possible for the group.
  */
-public class GroupDetailFragment extends AnalyticsFragment implements OnScrollListener {
+public class GroupDetailFragment extends Fragment implements OnScrollListener {
 
     public static interface Listener {
         /**
diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java
index 1b91ab8..3d13bdd 100644
--- a/src/com/android/contacts/group/GroupEditorFragment.java
+++ b/src/com/android/contacts/group/GroupEditorFragment.java
@@ -72,15 +72,13 @@
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
 import com.android.contacts.common.util.ViewUtil;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
 
 import com.google.common.base.Objects;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class GroupEditorFragment extends AnalyticsFragment
-        implements SelectAccountDialogFragment.Listener {
+public class GroupEditorFragment extends Fragment implements SelectAccountDialogFragment.Listener {
     private static final String TAG = "GroupEditorFragment";
 
     private static final String LEGACY_CONTACTS_AUTHORITY = "contacts";
diff --git a/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java b/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
index 7925ac0..2df7fe2 100644
--- a/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
+++ b/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
@@ -17,18 +17,18 @@
 
 import android.app.AlertDialog;
 import android.app.Dialog;
+import android.app.DialogFragment;
 import android.app.FragmentManager;
 import android.content.DialogInterface;
 import android.os.Bundle;
 
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.R;
-import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
 
 /**
  * A dialog for deleting a group.
  */
-public class GroupDeletionDialogFragment extends AnalyticsDialogFragment {
+public class GroupDeletionDialogFragment extends DialogFragment {
 
     private static final String ARG_GROUP_ID = "groupId";
     private static final String ARG_LABEL = "label";
diff --git a/src/com/android/contacts/interactions/GroupNameDialogFragment.java b/src/com/android/contacts/interactions/GroupNameDialogFragment.java
index 8059fd4..b0ad9c9 100644
--- a/src/com/android/contacts/interactions/GroupNameDialogFragment.java
+++ b/src/com/android/contacts/interactions/GroupNameDialogFragment.java
@@ -31,12 +31,11 @@
 import android.widget.EditText;
 
 import com.android.contacts.R;
-import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
 
 /**
  * A common superclass for creating and renaming groups.
  */
-public abstract class GroupNameDialogFragment extends AnalyticsDialogFragment {
+public abstract class GroupNameDialogFragment extends DialogFragment {
     protected abstract int getTitleResourceId();
     protected abstract void initializeGroupLabelEditText(EditText editText);
     protected abstract void onCompleted(String groupLabel);
diff --git a/src/com/android/contacts/list/ContactTileListFragment.java b/src/com/android/contacts/list/ContactTileListFragment.java
index 77c22e0..189cfd3 100644
--- a/src/com/android/contacts/list/ContactTileListFragment.java
+++ b/src/com/android/contacts/list/ContactTileListFragment.java
@@ -39,7 +39,7 @@
 import com.android.contacts.common.list.ContactTileAdapter.DisplayType;
 import com.android.contacts.common.list.ContactTileView;
 import com.android.contacts.common.util.ContactListViewUtils;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
+import com.android.contacts.common.util.SchedulingUtils;
 
 /**
  * Fragment containing a list of starred contacts followed by a list of frequently contacted.
@@ -49,7 +49,7 @@
  * (i.e. adding header views to the ListViews in the fragment). This work was started
  * by creating {@link ContactTileFrequentFragment}.
  */
-public class ContactTileListFragment extends AnalyticsFragment {
+public class ContactTileListFragment extends Fragment {
     private static final String TAG = ContactTileListFragment.class.getSimpleName();
 
     public interface Listener {
diff --git a/src/com/android/contacts/list/ContactsUnavailableFragment.java b/src/com/android/contacts/list/ContactsUnavailableFragment.java
index 46f2138..70d224a 100644
--- a/src/com/android/contacts/list/ContactsUnavailableFragment.java
+++ b/src/com/android/contacts/list/ContactsUnavailableFragment.java
@@ -15,6 +15,7 @@
  */
 package com.android.contacts.list;
 
+import android.app.Fragment;
 import android.content.Context;
 import android.os.Bundle;
 import android.provider.ContactsContract.ProviderStatus;
@@ -28,13 +29,12 @@
 import android.widget.TextView;
 
 import com.android.contacts.R;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
 
 /**
  * Fragment shown when contacts are unavailable. It contains provider status
  * messaging as well as instructions for the user.
  */
-public class ContactsUnavailableFragment extends AnalyticsFragment implements OnClickListener {
+public class ContactsUnavailableFragment extends Fragment implements OnClickListener {
 
     private View mView;
     private TextView mMessageView;
diff --git a/src/com/android/contacts/preference/ContactsPreferenceActivity.java b/src/com/android/contacts/preference/ContactsPreferenceActivity.java
index 3ddffbb..d47cb22 100644
--- a/src/com/android/contacts/preference/ContactsPreferenceActivity.java
+++ b/src/com/android/contacts/preference/ContactsPreferenceActivity.java
@@ -20,18 +20,18 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.preference.PreferenceActivity;
 import android.view.MenuItem;
 
 import com.android.contacts.R;
 import com.android.contacts.activities.PeopleActivity;
-import com.android.contacts.commonbind.analytics.AnalyticsPreferenceActivity;
 
 import java.util.List;
 
 /**
  * Contacts settings.
  */
-public final class ContactsPreferenceActivity extends AnalyticsPreferenceActivity {
+public final class ContactsPreferenceActivity extends PreferenceActivity {
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
