diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 84bdc96..80fc62f 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -1736,7 +1736,6 @@
             ApplicationInfo info = list.get(i);
             int removeIndex = findAppByComponent(mApps, info);
             if (removeIndex > -1) {
-                Log.d(TAG, "Removing app in removeAppsWithoutInvalidate: " + info);
                 mApps.remove(removeIndex);
             }
         }
@@ -1746,8 +1745,6 @@
         for (String pn : packageNames) {
             int removeIndex = findAppByPackage(mApps, pn);
             while (removeIndex > -1) {
-                Log.d(TAG, "Removing app in removeAppsWithPackageNameWithoutInvalidate: "
-                        + mApps.get(removeIndex));
                 mApps.remove(removeIndex);
                 removeIndex = findAppByPackage(mApps, pn);
             }
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index 1890e74..2c5f03a 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -1715,20 +1715,23 @@
             ArrayList<ApplicationInfo> modified = null;
 
             if (mBgAllAppsList.added.size() > 0) {
-                added = mBgAllAppsList.added;
-                mBgAllAppsList.added = new ArrayList<ApplicationInfo>();
+                added = new ArrayList<ApplicationInfo>(mBgAllAppsList.added);
+                mBgAllAppsList.added.clear();
             }
             if (mBgAllAppsList.modified.size() > 0) {
-                modified = mBgAllAppsList.modified;
-                mBgAllAppsList.modified = new ArrayList<ApplicationInfo>();
+                modified = new ArrayList<ApplicationInfo>(mBgAllAppsList.modified);
+                mBgAllAppsList.modified.clear();
             }
-
             // We may be removing packages that have no associated launcher application, so we
             // pass through the removed package names directly.
             // NOTE: We flush the icon cache aggressively in removePackage() above.
             final ArrayList<String> removedPackageNames = new ArrayList<String>();
-            for (int i = 0; i < N; ++i) {
-                removedPackageNames.add(packages[i]);
+            if (mBgAllAppsList.removed.size() > 0) {
+                mBgAllAppsList.removed.clear();
+
+                for (int i = 0; i < N; ++i) {
+                    removedPackageNames.add(packages[i]);
+                }
             }
 
             final Callbacks callbacks = mCallbacks != null ? mCallbacks.get() : null;
