diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index b564a27..0d92c62 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -33,6 +33,7 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.dashboard.conditional.Condition;
 import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
+import com.android.settingslib.SuggestionParser;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 
@@ -66,6 +67,7 @@
     private int mSuggestionMode = SUGGESTION_MODE_DEFAULT;
 
     private Condition mExpandedCondition = null;
+    private SuggestionParser mSuggestionParser;
 
     public DashboardAdapter(Context context) {
         mContext = context;
@@ -73,8 +75,9 @@
         setHasStableIds(true);
     }
 
-    public void setSuggestions(List<Tile> suggestions) {
-        mSuggestions = suggestions;
+    public void setSuggestions(SuggestionParser suggestionParser) {
+        mSuggestions = suggestionParser.getSuggestions();
+        mSuggestionParser = suggestionParser;
         recountItems();
     }
 
@@ -235,10 +238,12 @@
                 new MenuItem.OnMenuItemClickListener() {
             @Override
             public boolean onMenuItemClick(MenuItem item) {
-                mContext.getPackageManager().setComponentEnabledSetting(
-                        suggestion.intent.getComponent(),
-                        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                        PackageManager.DONT_KILL_APP);
+                if (mSuggestionParser.dismissSuggestion(suggestion)) {
+                    mContext.getPackageManager().setComponentEnabledSetting(
+                            suggestion.intent.getComponent(),
+                            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                            PackageManager.DONT_KILL_APP);
+                }
                 mSuggestions.remove(suggestion);
                 recountItems();
                 return true;
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index cbb1549..8dffffa 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.dashboard;
 
+import android.content.Context;
 import android.os.Bundle;
 import android.support.v7.widget.LinearLayoutManager;
 import android.util.Log;
@@ -55,6 +56,8 @@
             Settings.StorageSettingsActivity.class.getName(),
     };
 
+    private static final String SUGGESTIONS = "suggestions";
+
     private FocusRecyclerView mDashboard;
     private DashboardAdapter mAdapter;
     private SummaryLoader mSummaryLoader;
@@ -77,8 +80,10 @@
         setHasOptionsMenu(true);
         if (DEBUG_TIMING) Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime)
                 + " ms");
-        mConditionManager = ConditionManager.get(getContext());
-        mSuggestionParser = new SuggestionParser(getContext(), R.xml.suggestion_ordering);
+        Context context = getContext();
+        mConditionManager = ConditionManager.get(context);
+        mSuggestionParser = new SuggestionParser(context,
+                context.getSharedPreferences(SUGGESTIONS, 0), R.xml.suggestion_ordering);
     }
 
     @Override
@@ -138,7 +143,7 @@
         mDashboard.setListener(this);
         mAdapter = new DashboardAdapter(getContext());
         mAdapter.setConditions(mConditionManager.getConditions());
-        mAdapter.setSuggestions(mSuggestionParser.getSuggestions());
+        mAdapter.setSuggestions(mSuggestionParser);
         mSummaryLoader.setAdapter(mAdapter);
         ConditionAdapterUtils.addDismiss(mDashboard);
 
