diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 2467871..35bdf14 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -485,8 +485,8 @@
                 int[] minSpanXY = mLauncher.getMinSpanForWidget(widget);
                 int minSpanX = Math.min(spanXY[0], minSpanXY[0]);
                 int minSpanY = Math.min(spanXY[1], minSpanXY[1]);
-                if (minSpanX < LauncherModel.getCellCountX() &&
-                        minSpanY < LauncherModel.getCellCountY()) {
+                if (minSpanX <= LauncherModel.getCellCountX() &&
+                        minSpanY <= LauncherModel.getCellCountY()) {
                     mWidgets.add(widget);
                 }
             } else {
diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java
index b3b14f4..c9bebe3 100644
--- a/src/com/android/launcher2/DragController.java
+++ b/src/com/android/launcher2/DragController.java
@@ -66,7 +66,7 @@
 
     private Launcher mLauncher;
     private Handler mHandler;
-    private final Vibrator mVibrator = new Vibrator();
+    private final Vibrator mVibrator;
 
     // temporaries to avoid gc thrash
     private Rect mRectTemp = new Rect();
@@ -150,6 +150,7 @@
         mHandler = new Handler();
         mScrollZone = launcher.getResources().getDimensionPixelSize(R.dimen.scroll_zone);
         mVelocityTracker = VelocityTracker.obtain();
+        mVibrator = (Vibrator)launcher.getSystemService(Context.VIBRATOR_SERVICE);
 
         float density = launcher.getResources().getDisplayMetrics().density;
         mFlingToDeleteThresholdVelocity = (int) (FLING_TO_DELETE_THRESHOLD_Y_VELOCITY * density);
diff --git a/src/com/android/launcher2/PagedViewCellLayout.java b/src/com/android/launcher2/PagedViewCellLayout.java
index 58b87dc..9e5452b 100644
--- a/src/com/android/launcher2/PagedViewCellLayout.java
+++ b/src/com/android/launcher2/PagedViewCellLayout.java
@@ -86,20 +86,15 @@
         return mCellHeight;
     }
 
-    @Override
-    public void setAlpha(float alpha) {
-        mChildren.setAlpha(alpha);
-    }
-
     void destroyHardwareLayers() {
         // called when a page is no longer visible (triggered by loadAssociatedPages ->
         // removeAllViewsOnPage)
-        mChildren.destroyHardwareLayer();
+        setLayerType(LAYER_TYPE_NONE, null);
     }
 
     void createHardwareLayers() {
         // called when a page is visible (triggered by loadAssociatedPages -> syncPageItems)
-        mChildren.createHardwareLayer();
+        setLayerType(LAYER_TYPE_HARDWARE, null);
     }
 
     @Override
diff --git a/src/com/android/launcher2/PagedViewCellLayoutChildren.java b/src/com/android/launcher2/PagedViewCellLayoutChildren.java
index eaef682..187a22d 100644
--- a/src/com/android/launcher2/PagedViewCellLayoutChildren.java
+++ b/src/com/android/launcher2/PagedViewCellLayoutChildren.java
@@ -141,13 +141,6 @@
         }
     }
 
-    void destroyHardwareLayer() {
-        setLayerType(LAYER_TYPE_NONE, null);
-    }
-    void createHardwareLayer() {
-        setLayerType(LAYER_TYPE_HARDWARE, null);
-    }
-
     public void enableCenteredContent(boolean enabled) {
         mCenterContent = enabled;
     }
