diff --git a/src/com/android/contacts/DynamicShortcuts.java b/src/com/android/contacts/DynamicShortcuts.java
index fce2f8b..52307e4 100644
--- a/src/com/android/contacts/DynamicShortcuts.java
+++ b/src/com/android/contacts/DynamicShortcuts.java
@@ -407,8 +407,6 @@
             final Flags flags = Flags.getInstance();
             Log.d(TAG, "DyanmicShortcuts.initialize\nVERSION >= N_MR1? " +
                     (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) +
-                    "\n" + Experiments.DYNAMIC_SHORTCUTS + " enabled? " +
-                    flags.getBoolean(Experiments.DYNAMIC_SHORTCUTS) +
                     "\nisJobScheduled? " + isJobScheduled(context) +
                     "\nminDelay=" +
                     flags.getInteger(Experiments.DYNAMIC_MIN_CONTENT_CHANGE_UPDATE_DELAY_MILLIS) +
@@ -420,11 +418,7 @@
 
         final DynamicShortcuts shortcuts = new DynamicShortcuts(context);
 
-        if (!Flags.getInstance().getBoolean(Experiments.DYNAMIC_SHORTCUTS)) {
-            // Clear dynamic shortcuts if the flag is not enabled. This prevents shortcuts from
-            // staying around if it is enabled then later disabled (due to bugs for instance).
-            shortcuts.handleFlagDisabled();
-        } else if (!shortcuts.hasRequiredPermissions()) {
+        if (!shortcuts.hasRequiredPermissions()) {
             final IntentFilter filter = new IntentFilter();
             filter.addAction(RequestPermissionsActivity.BROADCAST_PERMISSIONS_GRANTED);
             LocalBroadcastManager.getInstance(shortcuts.mContext).registerReceiver(
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index fd6ee89..90aa580 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -449,10 +449,8 @@
 
         super.onPause();
 
-        if (Flags.getInstance().getBoolean(Experiments.PULL_TO_REFRESH)) {
-            ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
-            onSyncStateUpdated();
-        }
+        ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
+        onSyncStateUpdated();
     }
 
     @Override
@@ -471,14 +469,13 @@
         mProviderStatusWatcher.start();
         updateViewConfiguration(true);
 
-        if (Flags.getInstance().getBoolean(Experiments.PULL_TO_REFRESH)) {
-            mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
-                    ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
-                            | ContentResolver.SYNC_OBSERVER_TYPE_PENDING
-                            | ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS,
-                    mSyncStatusObserver);
-            onSyncStateUpdated();
-        }
+        mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
+                ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
+                        | ContentResolver.SYNC_OBSERVER_TYPE_PENDING
+                        | ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS,
+                mSyncStatusObserver);
+        onSyncStateUpdated();
+
         initializeFabVisibility();
         initializeHomeVisibility();
 
diff --git a/src/com/android/contacts/common/Experiments.java b/src/com/android/contacts/common/Experiments.java
index dee95dd..827083b 100644
--- a/src/com/android/contacts/common/Experiments.java
+++ b/src/com/android/contacts/common/Experiments.java
@@ -26,11 +26,6 @@
     public static final String ASSISTANT = "Assistant__enable_assistant";
 
     /**
-     * Experiment to show the restore assistant on the assistants view.
-     */
-    public static final String ASSISTANT_RESTORE = "Assistant__restore";
-
-    /**
      * Whether to open contact sheet (aka smart profile) instead of our own QuickContact.
      */
     public static final String CONTACT_SHEET = "QuickContact__contact_sheet";
@@ -48,22 +43,12 @@
             "Shortcuts__dynamic_min_content_change_update_delay_millis";
 
     /**
-     * Experiment to enable dynamic strequent shortcuts.
-     */
-    public static final String DYNAMIC_SHORTCUTS = "Shortcuts__dynamic_shortcuts";
-
-    /**
      * Experiment to enable device account detection using CP2 queries
      */
     public static final String OEM_CP2_DEVICE_ACCOUNT_DETECTION_ENABLED =
             "OEM__cp2_device_account_detection_enabled";
 
     /**
-     * Experiment to toggle contacts sync using the pull to refresh gesture.
-     */
-    public static final String PULL_TO_REFRESH = "PullToRefresh__pull_to_refresh";
-
-    /**
      * Flags for maximum time to show spinner for a contacts sync.
      */
     public static final String PULL_TO_REFRESH_CANCEL_REFRESH_MILLIS =
@@ -79,11 +64,6 @@
      */
     public static final String SEARCH_YENTA_TIMEOUT_MILLIS = "Search__yenta_timeout";
 
-    /**
-     * The options for sending email/messages to groups and selections
-     */
-    public static final String SEND_TO_GROUP = "Groups__send_to_group";
-
     private Experiments() {
     }
 }
diff --git a/src/com/android/contacts/group/GroupMembersFragment.java b/src/com/android/contacts/group/GroupMembersFragment.java
index e71b3a4..be3b127 100644
--- a/src/com/android/contacts/group/GroupMembersFragment.java
+++ b/src/com/android/contacts/group/GroupMembersFragment.java
@@ -268,13 +268,9 @@
         final boolean isSelectionMode = mActionBarAdapter.isSelectionMode();
         final boolean isGroupEditable = mGroupMetaData != null && mGroupMetaData.editable;
         final boolean isGroupReadOnly = mGroupMetaData != null && mGroupMetaData.readOnly;
-        final boolean experimentFlagSet =
-                Flags.getInstance().getBoolean(Experiments.SEND_TO_GROUP);
 
-        setVisible(menu, R.id.menu_multi_send_email, !mIsEditMode && !isGroupEmpty()
-                && experimentFlagSet);
-        setVisible(menu, R.id.menu_multi_send_message, !mIsEditMode && !isGroupEmpty()
-                && experimentFlagSet);
+        setVisible(menu, R.id.menu_multi_send_email, !mIsEditMode && !isGroupEmpty());
+        setVisible(menu, R.id.menu_multi_send_message, !mIsEditMode && !isGroupEmpty());
         setVisible(menu, R.id.menu_add, isGroupEditable && !isSelectionMode);
         setVisible(menu, R.id.menu_rename_group, !isGroupReadOnly && !isSelectionMode);
         setVisible(menu, R.id.menu_delete_group, !isGroupReadOnly && !isSelectionMode);
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 331c566..5539428 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -190,9 +190,7 @@
                     setSyncOffAlert();
 
                     // Determine whether the account has pullToRefresh feature
-                    if (Flags.getInstance().getBoolean(Experiments.PULL_TO_REFRESH)) {
-                        setSwipeRefreshLayoutEnabledOrNot(getFilter());
-                    }
+                    setSwipeRefreshLayoutEnabledOrNot(getFilter());
                     break;
                 case ActionBarAdapter.Listener.Action.CHANGE_SEARCH_QUERY:
                     final String queryString = mActionBarAdapter.getQueryString();
@@ -464,9 +462,8 @@
     protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
         super.onCreateView(inflater, container);
 
-        if (Flags.getInstance().getBoolean(Experiments.PULL_TO_REFRESH)) {
-            initSwipeRefreshLayout();
-        }
+        initSwipeRefreshLayout();
+
         // Putting the header view inside a container will allow us to make
         // it invisible later. See checkHeaderViewVisibility()
         final FrameLayout headerContainer = new FrameLayout(inflater.getContext());
@@ -834,9 +831,7 @@
         setSyncOffAlert();
 
         // Determine whether the account has pullToRefresh feature
-        if (Flags.getInstance().getBoolean(Experiments.PULL_TO_REFRESH)) {
-            setSwipeRefreshLayoutEnabledOrNot(filter);
-        }
+        setSwipeRefreshLayoutEnabledOrNot(filter);
     }
 
     private void setSwipeRefreshLayoutEnabledOrNot(ContactListFilter filter) {
