diff --git a/res/layout-xlarge-land/launcher.xml b/res/layout-xlarge-land/launcher.xml
index 5c58a69..327b572 100644
--- a/res/layout-xlarge-land/launcher.xml
+++ b/res/layout-xlarge-land/launcher.xml
@@ -171,21 +171,6 @@
             android:src="@drawable/delete_zone_selector"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_alignRight="@id/all_apps_button"
-            android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
-            android:paddingRight="@dimen/toolbar_button_horizontal_padding"
-            android:paddingTop="@dimen/toolbar_button_vertical_padding"
-            android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-            android:background="@drawable/button_bg"
-
-            android:visibility="gone"
-            launcher:direction="horizontal" />
-
-        <com.android.launcher2.ApplicationInfoDropTarget
-            android:id="@+id/info_button"
-            android:src="@drawable/ic_home_info_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
             android:layout_alignLeft="@id/configure_button"
             android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
             android:paddingRight="@dimen/toolbar_button_horizontal_padding"
@@ -194,9 +179,7 @@
             android:background="@drawable/button_bg"
 
             android:visibility="gone"
-            android:focusable="true"
-            android:clickable="true" />
-
+            launcher:direction="horizontal" />
     </RelativeLayout>
 
     <TabHost
diff --git a/res/layout-xlarge-port/launcher.xml b/res/layout-xlarge-port/launcher.xml
index 7bc318c..1989649 100644
--- a/res/layout-xlarge-port/launcher.xml
+++ b/res/layout-xlarge-port/launcher.xml
@@ -169,20 +169,6 @@
             android:src="@drawable/delete_zone_selector"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_alignRight="@id/all_apps_button"
-            android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
-            android:paddingRight="@dimen/toolbar_button_horizontal_padding"
-            android:paddingTop="@dimen/toolbar_button_vertical_padding"
-            android:paddingBottom="@dimen/toolbar_button_vertical_padding"
-
-            android:visibility="gone"
-            launcher:direction="horizontal" />
-
-        <com.android.launcher2.ApplicationInfoDropTarget
-            android:id="@+id/info_button"
-            android:src="@drawable/ic_home_info_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
             android:layout_alignLeft="@id/configure_button"
             android:paddingLeft="@dimen/toolbar_button_horizontal_padding"
             android:paddingRight="@dimen/toolbar_button_horizontal_padding"
@@ -190,9 +176,7 @@
             android:paddingBottom="@dimen/toolbar_button_vertical_padding"
 
             android:visibility="gone"
-            android:focusable="true"
-            android:clickable="true" />
-
+            launcher:direction="horizontal" />
     </RelativeLayout>
 
     <TabHost
diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java
index dccc03d..5b98a15 100644
--- a/src/com/android/launcher2/AllAppsPagedView.java
+++ b/src/com/android/launcher2/AllAppsPagedView.java
@@ -205,18 +205,16 @@
     private void setupDragMode() {
         mLauncher.getWorkspace().shrink(Workspace.ShrinkState.BOTTOM_VISIBLE);
 
-        ApplicationInfoDropTarget infoButton =
-                (ApplicationInfoDropTarget) mLauncher.findViewById(R.id.info_button);
-        infoButton.setDragAndDropEnabled(false);
         DeleteZone deleteZone = (DeleteZone) mLauncher.findViewById(R.id.delete_zone);
         deleteZone.setDragAndDropEnabled(false);
 
+        DeleteZone allAppsDeleteZone = (DeleteZone)
+                mLauncher.findViewById(R.id.all_apps_delete_zone);
+        allAppsDeleteZone.setDragAndDropEnabled(true);
+
         ApplicationInfoDropTarget allAppsInfoButton =
                 (ApplicationInfoDropTarget) mLauncher.findViewById(R.id.all_apps_info_target);
         allAppsInfoButton.setDragAndDropEnabled(true);
-        DeleteZone allAppsDeleteZone = (DeleteZone)
-                mLauncher.findViewById(R.id.all_apps_delete_zone);
-        allAppsDeleteZone.setDragAndDropEnabled(true);
     }
 
     private void tearDownDragMode() {
@@ -225,18 +223,16 @@
             // deleteZone and the appInfoButton in all apps, and re-enable the instance which
             // live in the workspace
             public void run() {
-                ApplicationInfoDropTarget infoButton =
-                    (ApplicationInfoDropTarget) mLauncher.findViewById(R.id.info_button);
-                infoButton.setDragAndDropEnabled(true);
                 DeleteZone deleteZone = (DeleteZone) mLauncher.findViewById(R.id.delete_zone);
                 deleteZone.setDragAndDropEnabled(true);
 
+                DeleteZone allAppsDeleteZone =
+                        (DeleteZone) mLauncher.findViewById(R.id.all_apps_delete_zone);
+                allAppsDeleteZone.setDragAndDropEnabled(false);
+
                 ApplicationInfoDropTarget allAppsInfoButton =
                     (ApplicationInfoDropTarget) mLauncher.findViewById(R.id.all_apps_info_target);
                 allAppsInfoButton.setDragAndDropEnabled(false);
-                DeleteZone allAppsDeleteZone =
-                        (DeleteZone) mLauncher.findViewById(R.id.all_apps_delete_zone);
-                allAppsDeleteZone.setDragAndDropEnabled(false);
             }
         });
         resetCheckedGrandchildren();
diff --git a/src/com/android/launcher2/ApplicationInfoDropTarget.java b/src/com/android/launcher2/ApplicationInfoDropTarget.java
index 7c81c1a..9d421c6 100644
--- a/src/com/android/launcher2/ApplicationInfoDropTarget.java
+++ b/src/com/android/launcher2/ApplicationInfoDropTarget.java
@@ -39,8 +39,6 @@
     private static final int sFadeOutAnimationDuration = 100;
 
     private AnimatorSet mFadeAnimator;
-    private ObjectAnimator mHandleFadeAnimator;
-    private boolean mHandleWasVisibleOnDragStart;
 
     public ApplicationInfoDropTarget(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
@@ -62,7 +60,6 @@
 
     public boolean acceptDrop(DragSource source, int x, int y, int xOffset, int yOffset,
             DragView dragView, Object dragInfo) {
-
         // acceptDrop is called just before onDrop. We do the work here, rather than
         // in onDrop, because it allows us to reject the drop (by returning false)
         // so that the object being dragged isn't removed from the home screen.
@@ -101,25 +98,18 @@
                 Animator infoButtonAnimator = ObjectAnimator.ofFloat(this, "alpha", 0.0f, 1.0f);
                 infoButtonAnimator.setDuration(sFadeInAnimationDuration);
 
-                if (mHandle == mLauncher.findViewById(R.id.configure_button)) {
-                    final View divider = mLauncher.findViewById(R.id.divider_during_drag);
-                    divider.setVisibility(VISIBLE);
-                    Animator dividerAnimator = ObjectAnimator.ofFloat(divider, "alpha", 1.0f);
-                    dividerAnimator.setDuration(sFadeInAnimationDuration);
-                    mFadeAnimator.play(infoButtonAnimator).with(dividerAnimator);
-                } else {
-                    mFadeAnimator.play(infoButtonAnimator);
-                }
-                mFadeAnimator.start();
+                mFadeAnimator.play(infoButtonAnimator);
+
                 setVisibility(VISIBLE);
 
-                // Fade out the handle
-                if (mHandle != null) {
-                    mHandleWasVisibleOnDragStart = mHandle.getVisibility() == VISIBLE;
-                    if (mHandleFadeAnimator != null) mHandleFadeAnimator.cancel();
-                    mHandleFadeAnimator = ObjectAnimator.ofFloat(mHandle, "alpha", 0.0f);
-                    mHandleFadeAnimator.setDuration(sFadeOutAnimationDuration);
-                    mHandleFadeAnimator.addListener(new AnimatorListener() {
+                // Fade out the overlapping views
+                if (mOverlappingViews != null) {
+                    for (View view : mOverlappingViews) {
+                        ObjectAnimator oa = ObjectAnimator.ofFloat(view, "alpha", 0.0f);
+                        oa.setDuration(sFadeOutAnimationDuration);
+                        mFadeAnimator.play(oa);
+                    }
+                    mFadeAnimator.addListener(new AnimatorListener() {
                         public void onAnimationStart(Animator animation) {}
                         public void onAnimationRepeat(Animator animation) {}
                         public void onAnimationEnd(Animator animation) {
@@ -129,12 +119,14 @@
                             onEndOrCancel();
                         }
                         private void onEndOrCancel() {
-                            mHandle.setVisibility(INVISIBLE);
-                            mHandleFadeAnimator = null;
+                            for (View view : mOverlappingViews) {
+                                view.setVisibility(INVISIBLE);
+                            }
+                            mFadeAnimator = null;
                         }
                     });
-                    mHandleFadeAnimator.start();
                 }
+                mFadeAnimator.start();
             }
         }
     }
@@ -148,9 +140,6 @@
         mFadeAnimator = new AnimatorSet();
         Animator infoButtonAnimator = ObjectAnimator.ofFloat(this, "alpha", 0.0f);
         infoButtonAnimator.setDuration(sFadeOutAnimationDuration);
-        final View divider = mLauncher.findViewById(R.id.divider_during_drag);
-        divider.setVisibility(VISIBLE);
-        Animator dividerAnimator = ObjectAnimator.ofFloat(divider, "alpha", 0.0f);
         mFadeAnimator.addListener(new AnimatorListener() {
             public void onAnimationStart(Animator animation) {}
             public void onAnimationRepeat(Animator animation) {}
@@ -162,20 +151,20 @@
             }
             private void onEndOrCancel() {
                 setVisibility(GONE);
-                divider.setVisibility(GONE);
                 mFadeAnimator = null;
             }
         });
-        mFadeAnimator.play(infoButtonAnimator).with(dividerAnimator);
-        mFadeAnimator.start();
+        mFadeAnimator.play(infoButtonAnimator);
 
-        // Fade in the handle
-        if (mHandle != null && mHandleWasVisibleOnDragStart) {
-            if (mHandleFadeAnimator != null) mHandleFadeAnimator.cancel();
-            mHandleFadeAnimator = ObjectAnimator.ofFloat(mHandle, "alpha", 1.0f);
-            mHandleFadeAnimator.setDuration(sFadeInAnimationDuration);
-            mHandleFadeAnimator.start();
-            mHandle.setVisibility(VISIBLE);
+        // Fade in the overlapping views
+        if (mOverlappingViews != null) {
+            for (View view : mOverlappingViews) {
+                ObjectAnimator oa = ObjectAnimator.ofFloat(view, "alpha", 1.0f);
+                oa.setDuration(sFadeInAnimationDuration);
+                mFadeAnimator.play(oa);
+                view.setVisibility(VISIBLE);
+            }
         }
+        mFadeAnimator.start();
     }
 }
diff --git a/src/com/android/launcher2/DeleteZone.java b/src/com/android/launcher2/DeleteZone.java
index 773bc6b..16061d3 100644
--- a/src/com/android/launcher2/DeleteZone.java
+++ b/src/com/android/launcher2/DeleteZone.java
@@ -166,8 +166,10 @@
 
             createAnimations();
             startAnimation(mInAnimation);
-            if (mHandle != null) {
-                mHandle.startAnimation(mHandleOutAnimation);
+            if (mOverlappingViews != null) {
+                for (View view : mOverlappingViews) {
+                    view.startAnimation(mHandleOutAnimation);
+                }
             }
             setVisibility(VISIBLE);
         }
@@ -179,8 +181,10 @@
             mDragController.setDeleteRegion(null);
 
             if (mOutAnimation != null) startAnimation(mOutAnimation);
-            if (mHandleInAnimation != null && mHandle != null) {
-                mHandle.startAnimation(mHandleInAnimation);
+            if (mHandleInAnimation != null && mOverlappingViews != null) {
+                for (View view : mOverlappingViews) {
+                    view.startAnimation(mHandleInAnimation);
+                }
             }
             setVisibility(GONE);
         }
diff --git a/src/com/android/launcher2/IconDropTarget.java b/src/com/android/launcher2/IconDropTarget.java
index ec08c1e..bfc46cf 100644
--- a/src/com/android/launcher2/IconDropTarget.java
+++ b/src/com/android/launcher2/IconDropTarget.java
@@ -35,8 +35,8 @@
     protected Launcher mLauncher;
 
     /**
-     * If true, this View responsible for managing its own visibility, and that of its handle.
-     * This is generally the case, but it will be set to false when this is part of the
+     * If true, this View responsible for managing its own visibility, and that of its overlapping
+     *  views. This is generally the case, but it will be set to false when this is part of the
      * Contextual Action Bar.
      */
     protected boolean mDragAndDropEnabled;
@@ -44,8 +44,8 @@
     /** Whether this drop target is active for the current drag */
     protected boolean mActive;
 
-    /** The view that this view should appear in the place of. */
-    protected View mHandle = null;
+    /** The views that this view should appear in the place of. */
+    protected View[] mOverlappingViews = null;
 
     /** The paint applied to the drag view on hover */
     protected final Paint mHoverPaint = new Paint();
@@ -73,8 +73,12 @@
         mLauncher = launcher;
     }
 
-    void setHandle(View view) {
-        mHandle = view;
+    void setOverlappingView(View view) {
+        mOverlappingViews = new View[] { view };
+    }
+    
+    void setOverlappingViews(View[] views) {
+        mOverlappingViews = views;
     }
 
     void setDragAndDropEnabled(boolean enabled) {
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 696380c..3c1c336 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -987,12 +987,16 @@
         deleteZone.setLauncher(this);
         deleteZone.setDragController(dragController);
         int deleteZoneHandleId;
+
+        final View allAppsButton = findViewById(R.id.all_apps_button);
+        final View divider = findViewById(R.id.divider);
+        final View configureButton = findViewById(R.id.configure_button);
+
         if (LauncherApplication.isScreenXLarge()) {
-            deleteZoneHandleId = R.id.all_apps_button;
+            mDeleteZone.setOverlappingViews(new View[] { allAppsButton, divider, configureButton });
         } else {
-            deleteZoneHandleId = R.id.all_apps_button_cluster;
+            deleteZone.setOverlappingView(configureButton);
         }
-        deleteZone.setHandle(findViewById(deleteZoneHandleId));
         dragController.addDragListener(deleteZone);
 
         DeleteZone allAppsDeleteZone = (DeleteZone) findViewById(R.id.all_apps_delete_zone);
@@ -1012,17 +1016,10 @@
             allAppsInfoTarget.setDragAndDropEnabled(false);
             View marketButton = findViewById(R.id.market_button);
             if (marketButton != null) {
-                allAppsInfoTarget.setHandle(marketButton);
+                allAppsInfoTarget.setOverlappingView(marketButton);
             }
         }
 
-        ApplicationInfoDropTarget infoButton = (ApplicationInfoDropTarget)findViewById(R.id.info_button);
-        if (infoButton != null) {
-            infoButton.setLauncher(this);
-            infoButton.setHandle(findViewById(R.id.configure_button));
-            dragController.addDragListener(infoButton);
-        }
-
         dragController.setDragScoller(workspace);
         dragController.setScrollView(dragLayer);
         dragController.setMoveTarget(workspace);
@@ -1030,9 +1027,6 @@
         // The order here is bottom to top.
         dragController.addDropTarget(workspace);
         dragController.addDropTarget(deleteZone);
-        if (infoButton != null) {
-            dragController.addDropTarget(infoButton);
-        }
         if (allAppsInfoTarget != null) {
             dragController.addDropTarget(allAppsInfoTarget);
         }
@@ -2600,7 +2594,7 @@
             hideOrShowToolbarButton(true, allAppsButton, showSeq);
             hideOrShowToolbarButton(true, divider, showSeq);
             hideOrShowToolbarButton(true, configureButton, showSeq);
-            mDeleteZone.setHandle(allAppsButton);
+            mDeleteZone.setOverlappingViews(new View[] { allAppsButton, divider, configureButton });
             break;
         case ALL_APPS:
             hideOrShowToolbarButton(false, configureButton, hideSeq);
@@ -2613,7 +2607,7 @@
             hideOrShowToolbarButton(false, searchButton, hideSeq);
             hideOrShowToolbarButton(false, divider, hideSeq);
             hideOrShowToolbarButton(false, configureButton, hideSeq);
-            mDeleteZone.setHandle(allAppsButton);
+            //mDeleteZone.setOverlappingView(configureButton);
             break;
         }
     }
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index eaa09ac..a066a16 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -171,7 +171,7 @@
     // in all apps or customize mode)
     private boolean mIsSmall = false;
     private boolean mIsInUnshrinkAnimation = false;
-    private AnimatorListener mShrinkAnimationListener, mUnshrinkAnimationListener;
+    private AnimatorListener mUnshrinkAnimationListener;
     enum ShrinkState { TOP, SPRING_LOADED, MIDDLE, BOTTOM_HIDDEN, BOTTOM_VISIBLE };
     private ShrinkState mShrinkState;
     private boolean mWasSpringLoadedOnDragExit = false;
