diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 0b669fb..4467cde 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -78,7 +78,6 @@
 import com.android.contacts.common.util.ImplicitIntentsUtil;
 import com.android.contacts.common.util.ViewUtil;
 import com.android.contacts.common.widget.FloatingActionButtonController;
-import com.android.contacts.commonbind.ObjectFactory;
 import com.android.contacts.editor.EditorIntents;
 import com.android.contacts.group.GroupListItem;
 import com.android.contacts.group.GroupUtil;
@@ -102,6 +101,7 @@
 import com.android.contacts.quickcontact.QuickContactActivity;
 import com.android.contacts.util.DialogManager;
 import com.android.contacts.util.PhoneCapabilityTester;
+import com.android.contactsbind.Assistants;
 import com.android.contactsbind.HelpUtils;
 
 import java.util.List;
@@ -1170,7 +1170,7 @@
         makeMenuItemVisible(menu, R.id.menu_accounts, showMiscOptions);
         makeMenuItemVisible(menu, R.id.menu_blocked_numbers, showMiscOptions && showBlockedNumbers);
         makeMenuItemVisible(menu, R.id.menu_duplicates,
-                showMiscOptions && ObjectFactory.getDuplicatesActivityIntent(this) != null);
+                showMiscOptions && Assistants.getDuplicatesActivityIntent(this) != null);
 
         final boolean showSelectedContactOptions = mActionBarAdapter.isSelectionMode()
                 && mAllFragment.getSelectedContactIds().size() != 0;
@@ -1271,7 +1271,7 @@
             }
             case R.id.menu_duplicates: {
                 ImplicitIntentsUtil.startActivityInAppIfPossible(this,
-                        ObjectFactory.getDuplicatesActivityIntent(this));
+                        Assistants.getDuplicatesActivityIntent(this));
                 return true;
             }
             case R.id.export_database: {
diff --git a/src/com/android/contacts/interactions/JoinContactsDialogFragment.java b/src/com/android/contacts/interactions/JoinContactsDialogFragment.java
index 1dae5dc..205e18e 100644
--- a/src/com/android/contacts/interactions/JoinContactsDialogFragment.java
+++ b/src/com/android/contacts/interactions/JoinContactsDialogFragment.java
@@ -39,23 +39,15 @@
     private static final String FRAGMENT_TAG = "joinDialog";
     private static final String KEY_CONTACT_IDS = "contactIds";
 
-    private JoinContactsListener mListener;
-
     public interface JoinContactsListener {
         void onContactsJoined();
     }
 
-    public static JoinContactsDialogFragment start(Activity activity, TreeSet<Long> contactIds) {
+    public static void start(Activity activity, TreeSet<Long> contactIds) {
         final FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
         final JoinContactsDialogFragment newFragment
                 = JoinContactsDialogFragment.newInstance(contactIds);
         newFragment.show(ft, FRAGMENT_TAG);
-
-        if (activity instanceof JoinContactsListener) {
-            newFragment.setJoinContactsListener(((JoinContactsListener) activity));
-        }
-
-        return newFragment;
     }
 
     private static JoinContactsDialogFragment newInstance(TreeSet<Long> contactIds) {
@@ -66,10 +58,6 @@
         return fragment;
     }
 
-    public void setJoinContactsListener(JoinContactsListener listener) {
-        mListener = listener;
-    }
-
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         final TreeSet<Long> contactIds =
@@ -111,8 +99,9 @@
     }
 
     private void notifyListener() {
-        if (mListener != null) {
-            mListener.onContactsJoined();
+        if (getActivity() instanceof JoinContactsListener) {
+            ((JoinContactsListener) getActivity()).onContactsJoined();
         }
     }
+
 }
diff --git a/src/com/android/contactsbind/Assistants.java b/src/com/android/contactsbind/Assistants.java
new file mode 100644
index 0000000..3fba91c
--- /dev/null
+++ b/src/com/android/contactsbind/Assistants.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+package com.android.contactsbind;
+
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * Creates default implementations of contacts assistants.
+ */
+public final class Assistants {
+
+    private Assistants() {
+    }
+
+    /**
+     * Returns an Intent to start an Activity to clean up duplicate contacts or null
+     * if it is not a supported feature.
+     */
+    public static Intent getDuplicatesActivityIntent(Context context) {
+        return null;
+    }
+}
