diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ace53ef..8382977 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -68,7 +68,7 @@
         android:label="@string/application_name"
         android:icon="@drawable/ic_launcher_home"
         android:hardwareAccelerated="@bool/config_hardwareAccelerated"
-        android:largeHeap="true">
+        android:largeHeap="@bool/config_largeHeap">
         <activity
             android:name="com.android.launcher2.Launcher"
             android:launchMode="singleTask"
diff --git a/res/drawable-hdpi/all_apps_button_focused.png b/res/drawable-hdpi/all_apps_button_focused.png
deleted file mode 100644
index ace493b..0000000
--- a/res/drawable-hdpi/all_apps_button_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/all_apps_button_normal.png b/res/drawable-hdpi/all_apps_button_normal.png
deleted file mode 100644
index cde455d..0000000
--- a/res/drawable-hdpi/all_apps_button_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/all_apps_button_pressed.png b/res/drawable-hdpi/all_apps_button_pressed.png
deleted file mode 100644
index d5f9f54..0000000
--- a/res/drawable-hdpi/all_apps_button_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/box_launcher_top_normal.9.png b/res/drawable-hdpi/box_launcher_top_normal.9.png
deleted file mode 100644
index af04b07..0000000
--- a/res/drawable-hdpi/box_launcher_top_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/box_launcher_top_pressed.9.png b/res/drawable-hdpi/box_launcher_top_pressed.9.png
deleted file mode 100644
index af04b07..0000000
--- a/res/drawable-hdpi/box_launcher_top_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/box_launcher_top_selected.9.png b/res/drawable-hdpi/box_launcher_top_selected.9.png
deleted file mode 100644
index af04b07..0000000
--- a/res/drawable-hdpi/box_launcher_top_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/focused_application_background.9.png b/res/drawable-hdpi/focused_application_background.9.png
deleted file mode 100644
index 7bf37ef..0000000
--- a/res/drawable-hdpi/focused_application_background.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/home_button_focused.png b/res/drawable-hdpi/home_button_focused.png
deleted file mode 100644
index 08b1fcb..0000000
--- a/res/drawable-hdpi/home_button_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/home_button_normal.png b/res/drawable-hdpi/home_button_normal.png
deleted file mode 100644
index 4afcce8..0000000
--- a/res/drawable-hdpi/home_button_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/home_button_pressed.png b/res/drawable-hdpi/home_button_pressed.png
deleted file mode 100644
index aa91732..0000000
--- a/res/drawable-hdpi/home_button_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_bg_center.9.png b/res/drawable-hdpi/hotseat_bg_center.9.png
deleted file mode 100644
index e162970..0000000
--- a/res/drawable-hdpi/hotseat_bg_center.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_bg_left.9.png b/res/drawable-hdpi/hotseat_bg_left.9.png
deleted file mode 100644
index 39e079d..0000000
--- a/res/drawable-hdpi/hotseat_bg_left.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_bg_right.9.png b/res/drawable-hdpi/hotseat_bg_right.9.png
deleted file mode 100644
index 921216b..0000000
--- a/res/drawable-hdpi/hotseat_bg_right.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_focused.png b/res/drawable-hdpi/hotseat_browser_focused.png
deleted file mode 100644
index 4ab51dd..0000000
--- a/res/drawable-hdpi/hotseat_browser_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_normal.png b/res/drawable-hdpi/hotseat_browser_normal.png
deleted file mode 100644
index 77ae927..0000000
--- a/res/drawable-hdpi/hotseat_browser_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_pressed.png b/res/drawable-hdpi/hotseat_browser_pressed.png
deleted file mode 100644
index cfe963b..0000000
--- a/res/drawable-hdpi/hotseat_browser_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_phone_focused.png b/res/drawable-hdpi/hotseat_phone_focused.png
deleted file mode 100644
index f81f0a8..0000000
--- a/res/drawable-hdpi/hotseat_phone_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_phone_normal.png b/res/drawable-hdpi/hotseat_phone_normal.png
deleted file mode 100644
index 391802e..0000000
--- a/res/drawable-hdpi/hotseat_phone_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_phone_pressed.png b/res/drawable-hdpi/hotseat_phone_pressed.png
deleted file mode 100644
index a6c2baf..0000000
--- a/res/drawable-hdpi/hotseat_phone_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_center.9.png b/res/drawable-land-hdpi/hotseat_bg_center.9.png
deleted file mode 100644
index 958b4a4..0000000
--- a/res/drawable-land-hdpi/hotseat_bg_center.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_left.9.png b/res/drawable-land-hdpi/hotseat_bg_left.9.png
deleted file mode 100644
index 9ea8f9d..0000000
--- a/res/drawable-land-hdpi/hotseat_bg_left.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_right.9.png b/res/drawable-land-hdpi/hotseat_bg_right.9.png
deleted file mode 100644
index ce8f1e2..0000000
--- a/res/drawable-land-hdpi/hotseat_bg_right.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_track_holo.9.png b/res/drawable-land-hdpi/hotseat_track_holo.9.png
new file mode 100644
index 0000000..165870e
--- /dev/null
+++ b/res/drawable-land-hdpi/hotseat_track_holo.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/hotseat_bg_center.9.png b/res/drawable-land-mdpi/hotseat_bg_center.9.png
deleted file mode 100644
index 691ab01..0000000
--- a/res/drawable-land-mdpi/hotseat_bg_center.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-mdpi/hotseat_bg_left.9.png b/res/drawable-land-mdpi/hotseat_bg_left.9.png
deleted file mode 100644
index bd235f3..0000000
--- a/res/drawable-land-mdpi/hotseat_bg_left.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-mdpi/hotseat_bg_right.9.png b/res/drawable-land-mdpi/hotseat_bg_right.9.png
deleted file mode 100644
index 6d87f0d..0000000
--- a/res/drawable-land-mdpi/hotseat_bg_right.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-mdpi/hotseat_track_holo.9.png b/res/drawable-land-mdpi/hotseat_track_holo.9.png
new file mode 100644
index 0000000..82ed81d
--- /dev/null
+++ b/res/drawable-land-mdpi/hotseat_track_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/all_apps_button_focused.png b/res/drawable-mdpi/all_apps_button_focused.png
deleted file mode 100644
index dd77f80..0000000
--- a/res/drawable-mdpi/all_apps_button_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/all_apps_button_normal.png b/res/drawable-mdpi/all_apps_button_normal.png
deleted file mode 100644
index 2419f97..0000000
--- a/res/drawable-mdpi/all_apps_button_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/all_apps_button_pressed.png b/res/drawable-mdpi/all_apps_button_pressed.png
deleted file mode 100644
index 3e6c850..0000000
--- a/res/drawable-mdpi/all_apps_button_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/box_launcher_top_normal.9.png b/res/drawable-mdpi/box_launcher_top_normal.9.png
deleted file mode 100644
index af04b07..0000000
--- a/res/drawable-mdpi/box_launcher_top_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/box_launcher_top_pressed.9.png b/res/drawable-mdpi/box_launcher_top_pressed.9.png
deleted file mode 100644
index af04b07..0000000
--- a/res/drawable-mdpi/box_launcher_top_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/box_launcher_top_selected.9.png b/res/drawable-mdpi/box_launcher_top_selected.9.png
deleted file mode 100644
index af04b07..0000000
--- a/res/drawable-mdpi/box_launcher_top_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/focused_application_background.9.png b/res/drawable-mdpi/focused_application_background.9.png
deleted file mode 100644
index 17ee6ea..0000000
--- a/res/drawable-mdpi/focused_application_background.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/home_button_focused.png b/res/drawable-mdpi/home_button_focused.png
deleted file mode 100644
index 4d62c1b..0000000
--- a/res/drawable-mdpi/home_button_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/home_button_normal.png b/res/drawable-mdpi/home_button_normal.png
deleted file mode 100644
index 37eccc0..0000000
--- a/res/drawable-mdpi/home_button_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/home_button_pressed.png b/res/drawable-mdpi/home_button_pressed.png
deleted file mode 100644
index 4b77d6d..0000000
--- a/res/drawable-mdpi/home_button_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_center.9.png b/res/drawable-mdpi/hotseat_bg_center.9.png
deleted file mode 100644
index c846d54..0000000
--- a/res/drawable-mdpi/hotseat_bg_center.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_left.9.png b/res/drawable-mdpi/hotseat_bg_left.9.png
deleted file mode 100644
index 92d583f..0000000
--- a/res/drawable-mdpi/hotseat_bg_left.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_right.9.png b/res/drawable-mdpi/hotseat_bg_right.9.png
deleted file mode 100644
index 5181b00..0000000
--- a/res/drawable-mdpi/hotseat_bg_right.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_focused.png b/res/drawable-mdpi/hotseat_browser_focused.png
deleted file mode 100644
index 0ad0878..0000000
--- a/res/drawable-mdpi/hotseat_browser_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_normal.png b/res/drawable-mdpi/hotseat_browser_normal.png
deleted file mode 100644
index 52abe8c..0000000
--- a/res/drawable-mdpi/hotseat_browser_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_pressed.png b/res/drawable-mdpi/hotseat_browser_pressed.png
deleted file mode 100644
index e1d35d1..0000000
--- a/res/drawable-mdpi/hotseat_browser_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_phone_focused.png b/res/drawable-mdpi/hotseat_phone_focused.png
deleted file mode 100644
index 3b2d361..0000000
--- a/res/drawable-mdpi/hotseat_phone_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_phone_normal.png b/res/drawable-mdpi/hotseat_phone_normal.png
deleted file mode 100644
index 750960b..0000000
--- a/res/drawable-mdpi/hotseat_phone_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_phone_pressed.png b/res/drawable-mdpi/hotseat_phone_pressed.png
deleted file mode 100644
index 8ad9d5a..0000000
--- a/res/drawable-mdpi/hotseat_phone_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/default_widget_preview_holo.9.png b/res/drawable-xhdpi/default_widget_preview_holo.9.png
new file mode 100644
index 0000000..87cc975
--- /dev/null
+++ b/res/drawable-xhdpi/default_widget_preview_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/gardening_crosshairs.png b/res/drawable-xhdpi/gardening_crosshairs.png
new file mode 100644
index 0000000..18c9fbe
--- /dev/null
+++ b/res/drawable-xhdpi/gardening_crosshairs.png
Binary files differ
diff --git a/res/drawable-xhdpi/homescreen_blue_normal_holo.9.png b/res/drawable-xhdpi/homescreen_blue_normal_holo.9.png
new file mode 100644
index 0000000..966d0c1
--- /dev/null
+++ b/res/drawable-xhdpi/homescreen_blue_normal_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/homescreen_blue_strong_holo.9.png b/res/drawable-xhdpi/homescreen_blue_strong_holo.9.png
new file mode 100644
index 0000000..7e037ed
--- /dev/null
+++ b/res/drawable-xhdpi/homescreen_blue_strong_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/homescreen_green_normal_holo.9.png b/res/drawable-xhdpi/homescreen_green_normal_holo.9.png
new file mode 100644
index 0000000..219db3b
--- /dev/null
+++ b/res/drawable-xhdpi/homescreen_green_normal_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/homescreen_green_strong_holo.9.png b/res/drawable-xhdpi/homescreen_green_strong_holo.9.png
new file mode 100644
index 0000000..cc71519
--- /dev/null
+++ b/res/drawable-xhdpi/homescreen_green_strong_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/hotseat_bg_panel.9.png b/res/drawable-xhdpi/hotseat_bg_panel.9.png
new file mode 100644
index 0000000..6d9288e
--- /dev/null
+++ b/res/drawable-xhdpi/hotseat_bg_panel.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/hotseat_scrubber_holo.9.png b/res/drawable-xhdpi/hotseat_scrubber_holo.9.png
new file mode 100644
index 0000000..55b313f
--- /dev/null
+++ b/res/drawable-xhdpi/hotseat_scrubber_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/hotseat_track_holo.9.png b/res/drawable-xhdpi/hotseat_track_holo.9.png
new file mode 100644
index 0000000..a362a98
--- /dev/null
+++ b/res/drawable-xhdpi/hotseat_track_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_google_logo_normal_holo.png b/res/drawable-xhdpi/ic_google_logo_normal_holo.png
new file mode 100644
index 0000000..925e0b9
--- /dev/null
+++ b/res/drawable-xhdpi/ic_google_logo_normal_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_launcher_info_active_holo.png b/res/drawable-xhdpi/ic_launcher_info_active_holo.png
new file mode 100644
index 0000000..356c074
--- /dev/null
+++ b/res/drawable-xhdpi/ic_launcher_info_active_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_launcher_info_normal_holo.png b/res/drawable-xhdpi/ic_launcher_info_normal_holo.png
new file mode 100644
index 0000000..1f827fa
--- /dev/null
+++ b/res/drawable-xhdpi/ic_launcher_info_normal_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_launcher_market_holo.png b/res/drawable-xhdpi/ic_launcher_market_holo.png
new file mode 100644
index 0000000..958f0de
--- /dev/null
+++ b/res/drawable-xhdpi/ic_launcher_market_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_launcher_trashcan_active_holo.png b/res/drawable-xhdpi/ic_launcher_trashcan_active_holo.png
new file mode 100644
index 0000000..77cc3e4
--- /dev/null
+++ b/res/drawable-xhdpi/ic_launcher_trashcan_active_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_launcher_trashcan_normal_holo.png b/res/drawable-xhdpi/ic_launcher_trashcan_normal_holo.png
new file mode 100644
index 0000000..ce6aff0
--- /dev/null
+++ b/res/drawable-xhdpi/ic_launcher_trashcan_normal_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_search_google_logo_normal_holo.png b/res/drawable-xhdpi/ic_search_google_logo_normal_holo.png
new file mode 100644
index 0000000..b4978ae
--- /dev/null
+++ b/res/drawable-xhdpi/ic_search_google_logo_normal_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_search_normal_holo.png b/res/drawable-xhdpi/ic_search_normal_holo.png
new file mode 100644
index 0000000..3700a0c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_search_normal_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_voice_search_holo.png b/res/drawable-xhdpi/ic_voice_search_holo.png
new file mode 100644
index 0000000..bab4e49
--- /dev/null
+++ b/res/drawable-xhdpi/ic_voice_search_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/page_hover_left_holo.9.png b/res/drawable-xhdpi/page_hover_left_holo.9.png
new file mode 100644
index 0000000..9187c9b
--- /dev/null
+++ b/res/drawable-xhdpi/page_hover_left_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/page_hover_right_holo.9.png b/res/drawable-xhdpi/page_hover_right_holo.9.png
new file mode 100644
index 0000000..ad70587
--- /dev/null
+++ b/res/drawable-xhdpi/page_hover_right_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/portal_container_holo.9.png b/res/drawable-xhdpi/portal_container_holo.9.png
new file mode 100644
index 0000000..55c701b
--- /dev/null
+++ b/res/drawable-xhdpi/portal_container_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/portal_ring_inner_holo.png b/res/drawable-xhdpi/portal_ring_inner_holo.png
new file mode 100644
index 0000000..dfdd622
--- /dev/null
+++ b/res/drawable-xhdpi/portal_ring_inner_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/portal_ring_outer_holo.png b/res/drawable-xhdpi/portal_ring_outer_holo.png
new file mode 100644
index 0000000..43579ec
--- /dev/null
+++ b/res/drawable-xhdpi/portal_ring_outer_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/portal_ring_rest.png b/res/drawable-xhdpi/portal_ring_rest.png
new file mode 100644
index 0000000..dcf1ae8
--- /dev/null
+++ b/res/drawable-xhdpi/portal_ring_rest.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_selected_focused_holo.9.png b/res/drawable-xhdpi/tab_selected_focused_holo.9.png
new file mode 100644
index 0000000..ffc7331
--- /dev/null
+++ b/res/drawable-xhdpi/tab_selected_focused_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_selected_holo.9.png b/res/drawable-xhdpi/tab_selected_holo.9.png
new file mode 100644
index 0000000..9c98c9d
--- /dev/null
+++ b/res/drawable-xhdpi/tab_selected_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_selected_pressed_focused_holo.9.png b/res/drawable-xhdpi/tab_selected_pressed_focused_holo.9.png
new file mode 100644
index 0000000..2412711
--- /dev/null
+++ b/res/drawable-xhdpi/tab_selected_pressed_focused_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_selected_pressed_holo.9.png b/res/drawable-xhdpi/tab_selected_pressed_holo.9.png
new file mode 100644
index 0000000..36bdf66
--- /dev/null
+++ b/res/drawable-xhdpi/tab_selected_pressed_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_unselected_focused_holo.9.png b/res/drawable-xhdpi/tab_unselected_focused_holo.9.png
new file mode 100644
index 0000000..dcf6964
--- /dev/null
+++ b/res/drawable-xhdpi/tab_unselected_focused_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_unselected_holo.9.png b/res/drawable-xhdpi/tab_unselected_holo.9.png
new file mode 100644
index 0000000..557f3f5
--- /dev/null
+++ b/res/drawable-xhdpi/tab_unselected_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_unselected_pressed_focused_holo.9.png b/res/drawable-xhdpi/tab_unselected_pressed_focused_holo.9.png
new file mode 100644
index 0000000..1653600
--- /dev/null
+++ b/res/drawable-xhdpi/tab_unselected_pressed_focused_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_unselected_pressed_holo.9.png b/res/drawable-xhdpi/tab_unselected_pressed_holo.9.png
new file mode 100644
index 0000000..09ae705
--- /dev/null
+++ b/res/drawable-xhdpi/tab_unselected_pressed_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/widget_resize_frame_holo.9.png b/res/drawable-xhdpi/widget_resize_frame_holo.9.png
new file mode 100644
index 0000000..4988cad
--- /dev/null
+++ b/res/drawable-xhdpi/widget_resize_frame_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/widget_resize_handle_bottom.png b/res/drawable-xhdpi/widget_resize_handle_bottom.png
new file mode 100644
index 0000000..18b5a26
--- /dev/null
+++ b/res/drawable-xhdpi/widget_resize_handle_bottom.png
Binary files differ
diff --git a/res/drawable-xhdpi/widget_resize_handle_left.png b/res/drawable-xhdpi/widget_resize_handle_left.png
new file mode 100644
index 0000000..40d4e0b
--- /dev/null
+++ b/res/drawable-xhdpi/widget_resize_handle_left.png
Binary files differ
diff --git a/res/drawable-xhdpi/widget_resize_handle_right.png b/res/drawable-xhdpi/widget_resize_handle_right.png
new file mode 100644
index 0000000..5ca6071
--- /dev/null
+++ b/res/drawable-xhdpi/widget_resize_handle_right.png
Binary files differ
diff --git a/res/drawable-xhdpi/widget_resize_handle_top.png b/res/drawable-xhdpi/widget_resize_handle_top.png
new file mode 100644
index 0000000..329559c
--- /dev/null
+++ b/res/drawable-xhdpi/widget_resize_handle_top.png
Binary files differ
diff --git a/res/drawable/all_apps_button.xml b/res/drawable/all_apps_button.xml
deleted file mode 100644
index 9f6b8ac..0000000
--- a/res/drawable/all_apps_button.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true" android:drawable="@drawable/all_apps_button_pressed" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/all_apps_button_focused" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/all_apps_button_normal" />
-    <item android:drawable="@drawable/all_apps_button_normal" />
-</selector>
-
diff --git a/res/drawable/box_launcher_top.xml b/res/drawable/box_launcher_top.xml
deleted file mode 100644
index 20c07c4..0000000
--- a/res/drawable/box_launcher_top.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true" android:drawable="@drawable/box_launcher_top_pressed" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/box_launcher_top_selected" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/box_launcher_top_normal" />
-    <item android:drawable="@drawable/box_launcher_top_normal" />
-</selector>
-
diff --git a/res/drawable/hotseat_browser.xml b/res/drawable/hotseat_browser.xml
deleted file mode 100644
index 3c327bf..0000000
--- a/res/drawable/hotseat_browser.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true" android:drawable="@drawable/hotseat_browser_pressed" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/hotseat_browser_focused" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/hotseat_browser_normal" />
-    <item android:drawable="@drawable/hotseat_browser_normal" />
-</selector>
-
diff --git a/res/drawable/hotseat_phone.xml b/res/drawable/hotseat_phone.xml
deleted file mode 100644
index 318a81e..0000000
--- a/res/drawable/hotseat_phone.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true" android:drawable="@drawable/hotseat_phone_pressed" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/hotseat_phone_focused" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/hotseat_phone_normal" />
-    <item android:drawable="@drawable/hotseat_phone_normal" />
-</selector>
-
diff --git a/res/layout-land/hotseat.xml b/res/layout-land/hotseat.xml
index 79661a7..9dbe234 100644
--- a/res/layout-land/hotseat.xml
+++ b/res/layout-land/hotseat.xml
@@ -30,4 +30,4 @@
         launcher:widthGap="-1dp"
         launcher:heightGap="-1dp"
         launcher:maxGap="@dimen/workspace_max_gap" />
-</com.android.launcher2.Hotseat>
\ No newline at end of file
+</com.android.launcher2.Hotseat>
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 4d40ada..215f8db 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -23,11 +23,12 @@
     android:layout_height="match_parent">
 
     <include
-        android:id="@+id/paged_view_indicator_track"
-        layout="@layout/scroll_indicator_track"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom" />
+        android:id="@+id/dock_divider"
+        layout="@layout/dock_divider"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_marginRight="@dimen/button_bar_height"
+        android:layout_gravity="right" />
     <include
         android:id="@+id/paged_view_indicator"
         layout="@layout/scroll_indicator"
@@ -45,7 +46,9 @@
         launcher:defaultScreen="2"
         launcher:cellCountX="4"
         launcher:cellCountY="4"
-        launcher:pageSpacing="@dimen/workspace_page_spacing">
+        launcher:pageSpacing="@dimen/workspace_page_spacing"
+        launcher:scrollIndicatorPaddingLeft="@dimen/qsb_bar_height"
+        launcher:scrollIndicatorPaddingRight="@dimen/button_bar_height">
 
         <include android:id="@+id/cell1" layout="@layout/workspace_screen" />
         <include android:id="@+id/cell2" layout="@layout/workspace_screen" />
@@ -71,6 +74,4 @@
         android:layout_width="@dimen/button_bar_height"
         android:layout_height="match_parent"
         android:layout_gravity="right" />
-
-
 </com.android.launcher2.DragLayer>
diff --git a/res/layout-port/hotseat.xml b/res/layout-port/hotseat.xml
index 88dd738..a122abb 100644
--- a/res/layout-port/hotseat.xml
+++ b/res/layout-port/hotseat.xml
@@ -23,6 +23,7 @@
         android:id="@+id/layout"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:paddingTop="@dimen/button_bar_height_padding"
         android:paddingLeft="@dimen/workspace_left_padding"
         android:paddingRight="@dimen/workspace_right_padding"
         launcher:cellWidth="@dimen/workspace_cell_width"
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index fc39034..f7e93f0 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -25,12 +25,12 @@
     <!-- Keep these behind the workspace so that they are not visible when
          we go into AllApps -->
     <include
-        android:id="@+id/paged_view_indicator_track"
-        layout="@layout/scroll_indicator_track"
+        android:id="@+id/dock_divider"
+        layout="@layout/dock_divider"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_gravity="bottom"
-        android:layout_marginBottom="@dimen/button_bar_height" />
+        android:layout_marginBottom="@dimen/button_bar_height"
+        android:layout_gravity="bottom" />
     <include
         android:id="@+id/paged_view_indicator"
         layout="@layout/scroll_indicator"
@@ -47,7 +47,9 @@
         launcher:defaultScreen="2"
         launcher:cellCountX="4"
         launcher:cellCountY="4"
-        launcher:pageSpacing="@dimen/workspace_page_spacing">
+        launcher:pageSpacing="@dimen/workspace_page_spacing"
+        launcher:scrollIndicatorPaddingLeft="@dimen/dock_divider_padding_left"
+        launcher:scrollIndicatorPaddingRight="@dimen/dock_divider_padding_right">
 
         <include android:id="@+id/cell1" layout="@layout/workspace_screen" />
         <include android:id="@+id/cell2" layout="@layout/workspace_screen" />
@@ -71,9 +73,6 @@
     <include layout="@layout/hotseat"
         android:id="@+id/hotseat"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/button_bar_height"
+        android:layout_height="@dimen/button_bar_height_plus_padding"
         android:layout_gravity="bottom" />
-
-
-
 </com.android.launcher2.DragLayer>
diff --git a/res/layout/scroll_indicator_track.xml b/res/layout/dock_divider.xml
similarity index 78%
rename from res/layout/scroll_indicator_track.xml
rename to res/layout/dock_divider.xml
index e3aa625..c3cac52 100644
--- a/res/layout/scroll_indicator_track.xml
+++ b/res/layout/dock_divider.xml
@@ -16,7 +16,9 @@
 <ImageView
     xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
-    android:paddingLeft="@dimen/scroll_track_padding_left"
-    android:paddingRight="@dimen/scroll_track_padding_right"
+    android:paddingLeft="@dimen/dock_divider_padding_left"
+    android:paddingRight="@dimen/dock_divider_padding_right"
+    android:paddingTop="@dimen/dock_divider_padding_top"
+    android:paddingBottom="@dimen/dock_divider_padding_bottom"
     android:scaleType="fitXY"
     android:src="@drawable/hotseat_track_holo" />
\ No newline at end of file
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index d484393..d8cc7ef 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -25,8 +25,10 @@
     <dimen name="workspace_top_padding">0dp</dimen>
     <dimen name="workspace_bottom_padding">0dp</dimen>
     <dimen name="workspace_page_spacing">8dp</dimen>
-    <dimen name="scroll_track_padding_left">@dimen/qsb_bar_height</dimen>
-    <dimen name="scroll_track_padding_right">@dimen/button_bar_height</dimen>
+    <dimen name="dock_divider_padding_left">0dp</dimen>
+    <dimen name="dock_divider_padding_right">0dp</dimen>
+    <dimen name="dock_divider_padding_top">12dp</dimen>
+    <dimen name="dock_divider_padding_bottom">12dp</dimen>
 
 <!-- AppsCustomize -->
     <dimen name="apps_customize_cell_width">80dp</dimen>
diff --git a/res/values-land/styles.xml b/res/values-land/styles.xml
index e8d767c..ea79a5a 100644
--- a/res/values-land/styles.xml
+++ b/res/values-land/styles.xml
@@ -55,25 +55,5 @@
         <item name="android:paddingTop">5dp</item>
         <item name="android:paddingBottom">10dp</item>
     </style>
-
-    <style name="HotseatButton">
-        <item name="android:paddingTop">12dip</item>
-        <item name="android:paddingBottom">12dip</item>
-        <item name="android:background">@drawable/hotseat_bg_center</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:layout_width">fill_parent</item>
-        <item name="android:scaleType">center</item>
-        <item name="android:focusable">true</item>
-        <item name="android:clickable">true</item>
-    </style>
-    <style name="HotseatButton.Left">
-        <item name="android:layout_marginBottom">4dip</item>
-        <item name="android:background">@drawable/hotseat_bg_left</item>
-    </style>
-    <style name="HotseatButton.Right">
-        <item name="android:layout_marginTop">4dip</item>
-        <item name="android:background">@drawable/hotseat_bg_right</item>
-    </style>
-
 </resources>
 
diff --git a/res/values-large/config.xml b/res/values-large/config.xml
index f0ce348..6274364 100644
--- a/res/values-large/config.xml
+++ b/res/values-large/config.xml
@@ -1,4 +1,6 @@
 <resources>
+    <bool name="config_largeHeap">true</bool>
+
 <!-- AllApps/Customize/AppsCustomize -->
     <!-- Out of 100, the percent to shrink the workspace during spring loaded mode. -->
     <integer name="config_workspaceSpringLoadShrinkPercentage">90</integer>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
deleted file mode 100644
index 6bd16ed..0000000
--- a/res/values/arrays.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <string-array name="hotseats" translatable="false">
-        <item>intent:#Intent;action=android.intent.action.DIAL;end</item>
-        <item>*BROWSER*</item>
-    </string-array>
-    <array name="hotseat_icons" translatable="false">
-        <item>@drawable/hotseat_phone</item>
-        <item>@drawable/hotseat_browser</item>
-    </array>
-</resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index e093e36..4359103 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -108,6 +108,9 @@
         <attr name="pageLayoutPaddingRight" format="dimension" />
         <!-- The space between adjacent pages of the PagedView. -->
         <attr name="pageSpacing" format="dimension" />
+        <!-- The padding for the scroll indicator area -->
+        <attr name="scrollIndicatorPaddingLeft" format="dimension" />
+        <attr name="scrollIndicatorPaddingRight" format="dimension" />
     </declare-styleable>
 
     <!-- AppsCustomizePagedView specific attributes.  These attributes are used to
diff --git a/res/values/config.xml b/res/values/config.xml
index 5ddf0a1..9a2c1f2 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -1,5 +1,6 @@
 <resources>
     <bool name="config_hardwareAccelerated">true</bool>
+    <bool name="config_largeHeap">false</bool>
 
 <!-- AllApps/Customize/AppsCustomize -->
     <!-- The alpha of the AppsCustomize bg in spring loaded mode -->
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 44da352..215f698 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -24,8 +24,10 @@
     <dimen name="workspace_max_gap">8dp</dimen>
     <dimen name="folder_cell_width">74dp</dimen>
     <dimen name="folder_cell_height">80dp</dimen>
-    <dimen name="scroll_track_padding_left">12dp</dimen>
-    <dimen name="scroll_track_padding_right">12dp</dimen>
+    <dimen name="dock_divider_padding_left">12dp</dimen>
+    <dimen name="dock_divider_padding_right">12dp</dimen>
+    <dimen name="dock_divider_padding_top">0dp</dimen>
+    <dimen name="dock_divider_padding_bottom">0dp</dimen>
 
 <!-- QSB -->
     <dimen name="toolbar_button_vertical_padding">0dip</dimen>
@@ -45,6 +47,10 @@
 
     <!-- height of the bottom row of controls -->
     <dimen name="button_bar_height">80dip</dimen>
+    <!-- Because portal animations go beyond the bounds of an icon, we need
+         to make the dock layout slightly larger than the button_bar_height -->
+    <dimen name="button_bar_height_padding">8dp</dimen>
+    <dimen name="button_bar_height_plus_padding">88dp</dimen>
 
     <!-- Drag padding to add to the drop targets -->
     <dimen name="drop_target_drag_padding">20dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a3c263d..e8c8d00 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -81,6 +81,9 @@
     <string name="menu_item_add_item">Add to Home screen</string>
     <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all apps -->
     <string name="group_applications">Applications</string>
+    <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all shortcut
+s -->
+    <string name="group_shortcuts">Shortcuts</string>
     <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all widgets/gadgets -->
     <string name="group_widgets">Widgets</string>
     <!-- Options in "Add to Home" dialog box; Title of the group containing the list of apps that can set the wallpaper-->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 33a1d10..6ed830a 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -65,6 +65,7 @@
     <style name="WorkspaceIcon.Landscape.Folder">
         <item name="android:drawablePadding">0dp</item>
         <item name="android:paddingTop">0dp</item>
+        <item name="android:layout_marginTop">-6dp</item>
     </style>
 
     <style name="WorkspaceIcon.Portrait.AppsCustomize">
diff --git a/src/com/android/launcher2/AddAdapter.java b/src/com/android/launcher2/AddAdapter.java
index d1076b1..5b7e92c 100644
--- a/src/com/android/launcher2/AddAdapter.java
+++ b/src/com/android/launcher2/AddAdapter.java
@@ -35,14 +35,14 @@
 public class AddAdapter extends BaseAdapter {
 
     private final LayoutInflater mInflater;
-    
+
     private final ArrayList<ListItem> mItems = new ArrayList<ListItem>();
-    
+
     public static final int ITEM_SHORTCUT = 0;
     public static final int ITEM_APPWIDGET = 1;
     public static final int ITEM_APPLICATION = 2;
     public static final int ITEM_WALLPAPER = 3;
-    
+
     /**
      * Specific item in our list.
      */
@@ -50,7 +50,7 @@
         public final CharSequence text;
         public final Drawable image;
         public final int actionTag;
-        
+
         public ListItem(Resources res, int textResourceId, int imageResourceId, int actionTag) {
             text = res.getString(textResourceId);
             if (imageResourceId != -1) {
@@ -66,16 +66,17 @@
         super();
 
         mInflater = (LayoutInflater) launcher.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        
+
         // Create default actions
         Resources res = launcher.getResources();
-        
+
         mItems.add(new ListItem(res, R.string.group_applications,
                 R.drawable.ic_launcher_application, ITEM_APPLICATION));
 
         mItems.add(new ListItem(res, R.string.group_widgets,
                 R.drawable.ic_launcher_appwidget, ITEM_APPWIDGET));
-        
+        mItems.add(new ListItem(res, R.string.group_shortcuts,
+                R.drawable.ic_launcher_application, ITEM_SHORTCUT));
         mItems.add(new ListItem(res, R.string.group_wallpapers,
                 R.drawable.ic_launcher_wallpaper, ITEM_WALLPAPER));
 
@@ -83,16 +84,16 @@
 
     public View getView(int position, View convertView, ViewGroup parent) {
         ListItem item = (ListItem) getItem(position);
-        
+
         if (convertView == null) {
             convertView = mInflater.inflate(R.layout.add_list_item, parent, false);
         }
-        
+
         TextView textView = (TextView) convertView;
         textView.setTag(item);
         textView.setText(item.text);
         textView.setCompoundDrawablesWithIntrinsicBounds(item.image, null, null, null);
-        
+
         return convertView;
     }
 
@@ -107,5 +108,4 @@
     public long getItemId(int position) {
         return position;
     }
-    
 }
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 714e7f9..d07b321 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -181,6 +181,7 @@
     private int mWidgetWidthGap, mWidgetHeightGap;
     private int mShortcutCountX, mShortcutCountY;
     private int mShortcutWidthGap, mShortcutHeightGap;
+    private int mNumWidgetPages, mNumShortcutPages;
     private final int mWidgetPreviewIconPaddedDimension;
     private final float sWidgetPreviewIconPaddingPercentage = 0.25f;
     private PagedViewCellLayout mWidgetSpacingLayout;
@@ -287,12 +288,16 @@
         mShortcutCountX = Math.max(1, (int) Math.round(mCellCountX / 2f));
         mShortcutCountY = Math.max(1, (int) Math.round(mCellCountY / 2f));
 
+        mNumWidgetPages = (int) Math.ceil(mWidgets.size() /
+                (float) (mWidgetCountX * mWidgetCountY));
+        mNumShortcutPages = (int) Math.ceil(mShortcuts.size() /
+                (float) (mShortcutCountX * mShortcutCountY));
+
         // Force a measure to update recalculate the gaps
         int widthSpec = MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.AT_MOST);
         int heightSpec = MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.AT_MOST);
         mWidgetSpacingLayout.measure(widthSpec, heightSpec);
         mContentWidth = mWidgetSpacingLayout.getContentWidth();
-
         invalidatePageData();
     }
 
@@ -495,14 +500,20 @@
 
     public void setContentType(ContentType type) {
         mContentType = type;
-        setCurrentPage(0);
-        invalidatePageData();
+        invalidatePageData(0);
     }
 
     public boolean isContentType(ContentType type) {
         return (mContentType == type);
     }
 
+    public void setCurrentPageToWidgets() {
+        invalidatePageData(0);
+    }
+    public void setCurrentPageToShortcuts() {
+        invalidatePageData(mNumWidgetPages);
+    }
+
     /*
      * Apps PagedView implementation
      */
@@ -848,14 +859,10 @@
         Context context = getContext();
         int[] countX = { mWidgetCountX, mShortcutCountX };
         int[] countY = { mWidgetCountY, mShortcutCountY };
-        Object[] collection = { mWidgets, mShortcuts };
+        int[] numPages = { mNumWidgetPages, mNumShortcutPages };
         for (int i = 0; i < 2; ++i) {
-            ArrayList<Object> list = (ArrayList<Object>) collection[i];
-            int numItemsPerPage = countX[i] * countY[i];
-            int numItemPages = (int) Math.ceil(list.size() / (float) numItemsPerPage);
-            for (int j = 0; j < numItemPages; ++j) {
-                PagedViewGridLayout layout = new PagedViewGridLayout(context, countX[i],
-                        countY[i]);
+            for (int j = 0; j < numPages[i]; ++j) {
+                PagedViewGridLayout layout = new PagedViewGridLayout(context, countX[i], countY[i]);
                 setupPage(layout);
                 addView(layout);
             }
@@ -1130,10 +1137,9 @@
             // Reset to the first page of the Apps pane
             AppsCustomizeTabHost tabs = (AppsCustomizeTabHost)
                     mLauncher.findViewById(R.id.apps_customize_pane);
-            tabs.setCurrentTabByTag(tabs.getTabTagForContentType(ContentType.Applications));
+            tabs.selectAppsTab();
         } else if (getCurrentPage() != 0) {
-            setCurrentPage(0);
-            invalidatePageData();
+            invalidatePageData(0);
         }
     }
     @Override
diff --git a/src/com/android/launcher2/AppsCustomizeTabHost.java b/src/com/android/launcher2/AppsCustomizeTabHost.java
index ed408df..c2d1341 100644
--- a/src/com/android/launcher2/AppsCustomizeTabHost.java
+++ b/src/com/android/launcher2/AppsCustomizeTabHost.java
@@ -52,12 +52,29 @@
     }
 
     /**
-     * Convenience methods to select specific tabs
+     * Convenience methods to select specific tabs.  We want to set the content type immediately
+     * in these cases, but we note that we still call setCurrentTabByTag() so that the tab view
+     * reflects the new content (but doesn't do the animation and logic associated with changing
+     * tabs manually).
      */
+    private void setContentTypeImmediate(AppsCustomizePagedView.ContentType type) {
+        onTabChangedStart();
+        onTabChangedEnd(type);
+    }
     void selectAppsTab() {
+        setContentTypeImmediate(AppsCustomizePagedView.ContentType.Applications);
         setCurrentTabByTag(APPS_TAB_TAG);
     }
     void selectWidgetsTab() {
+        setContentTypeImmediate(AppsCustomizePagedView.ContentType.Widgets);
+        mAppsCustomizePane.setCurrentPageToWidgets();
+
+        setCurrentTabByTag(WIDGETS_TAB_TAG);
+    }
+    void selectShortcutsTab() {
+        setContentTypeImmediate(AppsCustomizePagedView.ContentType.Widgets);
+        mAppsCustomizePane.setCurrentPageToShortcuts();
+
         setCurrentTabByTag(WIDGETS_TAB_TAG);
     }
 
@@ -135,6 +152,13 @@
         return super.onTouchEvent(event);
     }
 
+    private void onTabChangedStart() {
+        mAppsCustomizePane.hideScrollingIndicator(false);
+    }
+    private void onTabChangedEnd(AppsCustomizePagedView.ContentType type) {
+        mAppsCustomizePane.setContentType(type);
+    }
+
     @Override
     public void onTabChanged(String tabId) {
         final AppsCustomizePagedView.ContentType type = getContentTypeForTabTag(tabId);
@@ -148,11 +172,11 @@
             anim.addListener(new AnimatorListenerAdapter() {
                 @Override
                 public void onAnimationStart(android.animation.Animator animation) {
-                    mAppsCustomizePane.hideScrollingIndicator(false);
+                    onTabChangedStart();
                 }
                 @Override
                 public void onAnimationEnd(android.animation.Animator animation) {
-                    mAppsCustomizePane.setContentType(type);
+                    onTabChangedEnd(type);
 
                     ObjectAnimator anim = ObjectAnimator.ofFloat(mAppsCustomizePane, "alpha", 1f);
                     anim.setDuration(duration);
@@ -206,8 +230,11 @@
 
     /* LauncherTransitionable overrides */
     @Override
-    public void onLauncherTransitionStart(Animator animation) {
-        if (animation != null) {
+    public void onLauncherTransitionStart(Animator animation, boolean toWorkspace) {
+        // isHardwareAccelerated() checks if we're attached to a window and if that
+        // window is HW accelerated-- we were sometimes not attached to a window
+        // and buildLayer was throwing an IllegalStateException
+        if (animation != null && isHardwareAccelerated()) {
             // Turn on hardware layers for performance
             setLayerType(LAYER_TYPE_HARDWARE, null);
 
@@ -218,11 +245,13 @@
     }
 
     @Override
-    public void onLauncherTransitionEnd(Animator animation) {
+    public void onLauncherTransitionEnd(Animator animation, boolean toWorkspace) {
         if (animation != null) {
             setLayerType(LAYER_TYPE_NONE, null);
         }
 
-        mAppsCustomizePane.flashScrollingIndicator();
+        if (!toWorkspace) {
+            mAppsCustomizePane.flashScrollingIndicator();
+        }
     }
 }
diff --git a/src/com/android/launcher2/HolographicPagedViewIcon.java b/src/com/android/launcher2/HolographicPagedViewIcon.java
index 7123e2a..dda233e 100644
--- a/src/com/android/launcher2/HolographicPagedViewIcon.java
+++ b/src/com/android/launcher2/HolographicPagedViewIcon.java
@@ -48,7 +48,7 @@
             int hspace = getWidth() - compoundPaddingRight - compoundPaddingLeft;
             canvas.drawBitmap(overlay,
                     offset + compoundPaddingLeft + (hspace - overlay.getWidth()) / 2,
-                    mPaddingTop,
+                    mOriginalIcon.getPaddingTop(),
                     mPaint);
         }
     }
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index af8d986..795d5cc 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -282,7 +282,6 @@
                     Environment.getExternalStorageDirectory() + "/launcher");
         }
 
-        loadHotseats();
         checkForLocaleChange();
         setContentView(R.layout.launcher);
         setupViews();
@@ -368,7 +367,6 @@
             sLocaleConfiguration.mnc = mnc;
 
             mIconCache.flush();
-            loadHotseats();
 
             final LocaleConfiguration localeConfiguration = sLocaleConfiguration;
             new Thread("WriteLocaleConfiguration") {
@@ -458,141 +456,6 @@
         return Uri.parse(url);
     }
 
-    // Load the Intent templates from arrays.xml to populate the hotseats. For
-    // each Intent, if it resolves to a single app, use that as the launch
-    // intent & use that app's label as the contentDescription. Otherwise,
-    // retain the ResolveActivity so the user can pick an app.
-    private void loadHotseats() {
-        if (mHotseatConfig == null) {
-            mHotseatConfig = getResources().getStringArray(R.array.hotseats);
-            if (mHotseatConfig.length > 0) {
-                mHotseats = new Intent[mHotseatConfig.length];
-                mHotseatLabels = new CharSequence[mHotseatConfig.length];
-                mHotseatIcons = new Drawable[mHotseatConfig.length];
-            } else {
-                mHotseats = null;
-                mHotseatIcons = null;
-                mHotseatLabels = null;
-            }
-
-            TypedArray hotseatIconDrawables = getResources().obtainTypedArray(R.array.hotseat_icons);
-            for (int i=0; i<mHotseatConfig.length; i++) {
-                // load icon for this slot; currently unrelated to the actual activity
-                try {
-                    mHotseatIcons[i] = hotseatIconDrawables.getDrawable(i);
-                } catch (ArrayIndexOutOfBoundsException ex) {
-                    Log.w(TAG, "Missing hotseat_icons array item #" + i);
-                    mHotseatIcons[i] = null;
-                }
-            }
-            hotseatIconDrawables.recycle();
-        }
-
-        PackageManager pm = getPackageManager();
-        for (int i=0; i<mHotseatConfig.length; i++) {
-            Intent intent = null;
-            if (mHotseatConfig[i].equals("*BROWSER*")) {
-                // magic value meaning "launch user's default web browser"
-                // replace it with a generic web request so we can see if there is indeed a default
-                String defaultUri = getString(R.string.default_browser_url);
-                intent = new Intent(
-                        Intent.ACTION_VIEW,
-                        ((defaultUri != null)
-                            ? Uri.parse(defaultUri)
-                            : getDefaultBrowserUri())
-                    ).addCategory(Intent.CATEGORY_BROWSABLE);
-                // note: if the user launches this without a default set, she
-                // will always be taken to the default URL above; this is
-                // unavoidable as we must specify a valid URL in order for the
-                // chooser to appear, and once the user selects something, that
-                // URL is unavoidably sent to the chosen app.
-            } else {
-                try {
-                    intent = Intent.parseUri(mHotseatConfig[i], 0);
-                } catch (java.net.URISyntaxException ex) {
-                    Log.w(TAG, "Invalid hotseat intent: " + mHotseatConfig[i]);
-                    // bogus; leave intent=null
-                }
-            }
-
-            if (intent == null) {
-                mHotseats[i] = null;
-                mHotseatLabels[i] = getText(R.string.activity_not_found);
-                continue;
-            }
-
-            if (LOGD) {
-                Log.d(TAG, "loadHotseats: hotseat " + i
-                    + " initial intent=["
-                    + intent.toUri(Intent.URI_INTENT_SCHEME)
-                    + "]");
-            }
-
-            ResolveInfo bestMatch = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
-            List<ResolveInfo> allMatches = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
-            if (LOGD) {
-                Log.d(TAG, "Best match for intent: " + bestMatch);
-                Log.d(TAG, "All matches: ");
-                for (ResolveInfo ri : allMatches) {
-                    Log.d(TAG, "  --> " + ri);
-                }
-            }
-            // did this resolve to a single app, or the resolver?
-            if (allMatches.size() == 0 || bestMatch == null) {
-                // can't find any activity to handle this. let's leave the
-                // intent as-is and let Launcher show a toast when it fails
-                // to launch.
-                mHotseats[i] = intent;
-
-                // set accessibility text to "Not installed"
-                mHotseatLabels[i] = getText(R.string.activity_not_found);
-            } else {
-                boolean found = false;
-                for (ResolveInfo ri : allMatches) {
-                    if (bestMatch.activityInfo.name.equals(ri.activityInfo.name)
-                        && bestMatch.activityInfo.applicationInfo.packageName
-                            .equals(ri.activityInfo.applicationInfo.packageName)) {
-                        found = true;
-                        break;
-                    }
-                }
-
-                if (!found) {
-                    if (LOGD) Log.d(TAG, "Multiple options, no default yet");
-                    // the bestMatch is probably the ResolveActivity, meaning the
-                    // user has not yet selected a default
-                    // so: we'll keep the original intent for now
-                    mHotseats[i] = intent;
-
-                    // set the accessibility text to "Select shortcut"
-                    mHotseatLabels[i] = getText(R.string.title_select_shortcut);
-                } else {
-                    // we have an app!
-                    // now reconstruct the intent to launch it through the front
-                    // door
-                    ComponentName com = new ComponentName(
-                        bestMatch.activityInfo.applicationInfo.packageName,
-                        bestMatch.activityInfo.name);
-                    mHotseats[i] = new Intent(Intent.ACTION_MAIN).setComponent(com);
-
-                    // load the app label for accessibility
-                    mHotseatLabels[i] = bestMatch.activityInfo.loadLabel(pm);
-                }
-            }
-
-            if (LOGD) {
-                Log.d(TAG, "loadHotseats: hotseat " + i
-                    + " final intent=["
-                    + ((mHotseats[i] == null)
-                        ? "null"
-                        : mHotseats[i].toUri(Intent.URI_INTENT_SCHEME))
-                    + "] label=[" + mHotseatLabels[i]
-                    + "]"
-                    );
-            }
-        }
-    }
-
     /**
      * Returns whether we should delay spring loaded mode -- for shortcuts and widgets that have
      * a configuration step, this allows the proper animations to run after other transitions.
@@ -2225,7 +2088,7 @@
             alphaAnim.start();
 
             if (toView instanceof LauncherTransitionable) {
-                ((LauncherTransitionable) toView).onLauncherTransitionStart(scaleAnim);
+                ((LauncherTransitionable) toView).onLauncherTransitionStart(scaleAnim, false);
             }
             scaleAnim.addListener(new AnimatorListenerAdapter() {
                 @Override
@@ -2244,13 +2107,12 @@
                     toView.setScaleX(1.0f);
                     toView.setScaleY(1.0f);
                     if (toView instanceof LauncherTransitionable) {
-                        ((LauncherTransitionable) toView).onLauncherTransitionEnd(scaleAnim);
+                        ((LauncherTransitionable) toView).onLauncherTransitionEnd(scaleAnim, false);
                     }
 
                     if (!springLoaded && !LauncherApplication.isScreenLarge()) {
                         // Hide the workspace scrollbar
                         mWorkspace.hideScrollingIndicator(true);
-                        mWorkspace.hideScrollIndicatorTrack();
                     }
                 }
             });
@@ -2270,13 +2132,12 @@
             toView.setVisibility(View.VISIBLE);
             toView.bringToFront();
             if (toView instanceof LauncherTransitionable) {
-                ((LauncherTransitionable) toView).onLauncherTransitionStart(null);
-                ((LauncherTransitionable) toView).onLauncherTransitionEnd(null);
+                ((LauncherTransitionable) toView).onLauncherTransitionStart(null, false);
+                ((LauncherTransitionable) toView).onLauncherTransitionEnd(null, false);
 
                 if (!springLoaded && !LauncherApplication.isScreenLarge()) {
                     // Hide the workspace scrollbar
                     mWorkspace.hideScrollingIndicator(true);
-                    mWorkspace.hideScrollIndicatorTrack();
                 }
             }
         }
@@ -2327,23 +2188,16 @@
                 }
             });
             if (fromView instanceof LauncherTransitionable) {
-                ((LauncherTransitionable) fromView).onLauncherTransitionStart(alphaAnim);
+                ((LauncherTransitionable) fromView).onLauncherTransitionStart(alphaAnim, true);
             }
             alphaAnim.addListener(new AnimatorListenerAdapter() {
                 @Override
-                public void onAnimationStart(android.animation.Animator animation) {
-                    if (!springLoaded && !LauncherApplication.isScreenLarge()) {
-                        // Show the workspace scrollbar
-                        mWorkspace.showScrollIndicatorTrack();
-                        mWorkspace.flashScrollingIndicator();
-                    }
-                }
-                @Override
                 public void onAnimationEnd(Animator animation) {
                     fromView.setVisibility(View.GONE);
                     if (fromView instanceof LauncherTransitionable) {
-                        ((LauncherTransitionable) fromView).onLauncherTransitionEnd(alphaAnim);
+                        ((LauncherTransitionable) fromView).onLauncherTransitionEnd(alphaAnim,true);
                     }
+                    mWorkspace.flashScrollingIndicator();
                 }
             });
 
@@ -2352,12 +2206,11 @@
         } else {
             fromView.setVisibility(View.GONE);
             if (fromView instanceof LauncherTransitionable) {
-                ((LauncherTransitionable) fromView).onLauncherTransitionStart(null);
-                ((LauncherTransitionable) fromView).onLauncherTransitionEnd(null);
+                ((LauncherTransitionable) fromView).onLauncherTransitionStart(null, true);
+                ((LauncherTransitionable) fromView).onLauncherTransitionEnd(null, true);
 
                 if (!springLoaded && !LauncherApplication.isScreenLarge()) {
-                    // Show the workspace scrollbar
-                    mWorkspace.showScrollIndicatorTrack();
+                    // Flash the workspace scrollbar
                     mWorkspace.flashScrollingIndicator();
                 }
             }
@@ -2593,14 +2446,18 @@
         ImageView button = (ImageView) findViewById(buttonId);
         Drawable toolbarIcon = getExternalPackageToolbarIcon(activityName);
 
-        // If we were unable to find the icon via the meta-data, use a generic one
-        if (toolbarIcon == null) {
-            button.setImageResource(fallbackDrawableId);
-            return null;
-        } else {
-            button.setImageDrawable(toolbarIcon);
-            return toolbarIcon.getConstantState();
+        if (button != null) {
+            // If we were unable to find the icon via the meta-data, use a
+            // generic one
+            if (toolbarIcon == null) {
+                button.setImageResource(fallbackDrawableId);
+            } else {
+                button.setImageDrawable(toolbarIcon);
+            }
         }
+
+        return toolbarIcon != null ? toolbarIcon.getConstantState() : null;
+
     }
 
     private void updateTextButtonWithDrawable(int buttonId, Drawable.ConstantState d) {
@@ -2702,7 +2559,6 @@
 
             final AlertDialog.Builder builder = new AlertDialog.Builder(Launcher.this, 
                     AlertDialog.THEME_HOLO_DARK);
-            builder.setTitle(getString(R.string.menu_item_add_item));
             builder.setAdapter(mAdapter, this);
 
             AlertDialog dialog = builder.create();
@@ -2741,7 +2597,7 @@
             switch (item.actionTag) {
                 case AddAdapter.ITEM_SHORTCUT: {
                     if (mAppsCustomizeTabHost != null) {
-                        mAppsCustomizeTabHost.selectWidgetsTab();
+                        mAppsCustomizeTabHost.selectShortcutsTab();
                     }
                     showAllApps(true);
                     break;
@@ -3128,6 +2984,6 @@
 }
 
 interface LauncherTransitionable {
-    void onLauncherTransitionStart(Animator animation);
-    void onLauncherTransitionEnd(Animator animation);
+    void onLauncherTransitionStart(Animator animation, boolean toWorkspace);
+    void onLauncherTransitionEnd(Animator animation, boolean toWorkspace);
 }
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index bed107a..26f0e57 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -163,7 +163,8 @@
     // Scrolling indicator
     private android.animation.ValueAnimator mScrollIndicatorAnimator;
     private ImageView mScrollIndicator;
-    private ImageView mScrollTrack;
+    private int mScrollIndicatorPaddingLeft;
+    private int mScrollIndicatorPaddingRight;
     private boolean mHasScrollIndicator = true;
     private static final int sScrollIndicatorFadeInDuration = 150;
     private static final int sScrollIndicatorFadeOutDuration = 650;
@@ -203,6 +204,10 @@
                 R.styleable.PagedView_pageLayoutWidthGap, -1);
         mPageLayoutHeightGap = a.getDimensionPixelSize(
                 R.styleable.PagedView_pageLayoutHeightGap, -1);
+        mScrollIndicatorPaddingLeft =
+            a.getDimensionPixelSize(R.styleable.PagedView_scrollIndicatorPaddingLeft, 0);
+        mScrollIndicatorPaddingRight =
+            a.getDimensionPixelSize(R.styleable.PagedView_scrollIndicatorPaddingRight, 0);
         a.recycle();
 
         setHapticFeedbackEnabled(false);
@@ -286,6 +291,7 @@
 
         mCurrentPage = Math.max(0, Math.min(currentPage, getPageCount() - 1));
         updateCurrentPageScroll();
+        updateScrollingIndicator();
         notifyPageSwitchListener();
         invalidate();
     }
@@ -1613,6 +1619,9 @@
     }
 
     protected void invalidatePageData() {
+        invalidatePageData(-1);
+    }
+    protected void invalidatePageData(int currentPage) {
         if (!mIsDataReady) {
             return;
         }
@@ -1621,6 +1630,16 @@
             // Update all the pages
             syncPages();
 
+            // We must force a measure after we've loaded the pages to update the content width and
+            // to determine the full scroll width
+            measure(MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY));
+
+            // Set a new page as the current page if necessary
+            if (currentPage > -1) {
+                setCurrentPage(currentPage);
+            }
+
             // Mark each of the pages as dirty
             final int count = getChildCount();
             mDirtyPageContent.clear();
@@ -1654,14 +1673,16 @@
         return !LauncherApplication.isScreenLarge();
     }
 
+    Runnable hideScrollingIndicatorRunnable = new Runnable() {
+        @Override
+        public void run() {
+            hideScrollingIndicator(false);
+        }
+    };
     protected void flashScrollingIndicator() {
+        removeCallbacks(hideScrollingIndicatorRunnable);
         showScrollingIndicator();
-        postDelayed(new Runnable() {
-            @Override
-            public void run() {
-                hideScrollingIndicator(false);
-            }
-        }, sScrollIndicatorFlashDuration);
+        postDelayed(hideScrollingIndicatorRunnable, sScrollIndicatorFlashDuration);
     }
 
     protected void showScrollingIndicator() {
@@ -1741,23 +1762,13 @@
         int numPages = getChildCount();
         int pageWidth = getMeasuredWidth();
         int maxPageWidth = (numPages * getMeasuredWidth()) + ((numPages - 1) * mPageSpacing);
-        int trackWidth = pageWidth;
+        int trackWidth = pageWidth - mScrollIndicatorPaddingLeft - mScrollIndicatorPaddingRight;
         int indicatorWidth = mScrollIndicator.getMeasuredWidth() -
                 mScrollIndicator.getPaddingLeft() - mScrollIndicator.getPaddingRight();
-        int paddingLeft = 0;
-        int paddingRight = 0;
-
-        // Get the track properties
-        getScrollingIndicatorTrack();
-        if (mScrollTrack != null) {
-            paddingLeft = mScrollTrack.getPaddingLeft();
-            paddingRight = mScrollTrack.getPaddingRight();
-            trackWidth = mScrollTrack.getMeasuredWidth() - paddingLeft - paddingRight;
-        }
 
         float offset = (float) getScrollX() / maxPageWidth;
         int indicatorSpace = trackWidth / numPages;
-        int indicatorPos = (int) (offset * trackWidth) + paddingLeft;
+        int indicatorPos = (int) (offset * trackWidth) + mScrollIndicatorPaddingLeft;
         if (hasElasticScrollIndicator()) {
             if (mScrollIndicator.getMeasuredWidth() != indicatorSpace) {
                 mScrollIndicator.getLayoutParams().width = indicatorSpace;
@@ -1771,30 +1782,10 @@
         mScrollIndicator.invalidate();
     }
 
-    private ImageView getScrollingIndicatorTrack() {
-        if (mScrollTrack == null) {
-            ViewGroup parent = (ViewGroup) getParent();
-            mScrollTrack = (ImageView) (parent.findViewById(R.id.paged_view_indicator_track));
-        }
-        return mScrollTrack;
-    }
-
     public void showScrollIndicatorTrack() {
-        if (!isScrollingIndicatorEnabled()) return;
-
-        getScrollingIndicatorTrack();
-        if (mScrollTrack != null) {
-            mScrollTrack.setVisibility(View.VISIBLE);
-        }
     }
 
     public void hideScrollIndicatorTrack() {
-        if (!isScrollingIndicatorEnabled()) return;
-
-        getScrollingIndicatorTrack();
-        if (mScrollTrack != null) {
-            mScrollTrack.setVisibility(View.GONE);
-        }
     }
 
     /* Accessibility */
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 035d9ea..a198c6d 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -1369,16 +1369,12 @@
         final int screenCount = getChildCount();
         float totalWidth = screenCount * scaledPageWidth + (screenCount - 1) * extraScaledSpacing;
 
+        // We shrink and disappear to nothing
         boolean isPortrait = getMeasuredHeight() > getMeasuredWidth();
-        float y = (isPortrait ?
+        float y = screenHeight - scaledPageHeight - (isPortrait ?
                 getResources().getDimension(R.dimen.allAppsSmallScreenVerticalMarginPortrait) :
                 getResources().getDimension(R.dimen.allAppsSmallScreenVerticalMarginLandscape));
-        float finalAlpha = 1.0f;
-        float extraShrinkFactor = 1.0f;
-
-        // We shrink and disappear to nothing
-        y = screenHeight - y - scaledPageHeight;
-        finalAlpha = 0.0f;
+        float finalAlpha = 0.0f;
 
         int duration = res.getInteger(R.integer.config_appsCustomizeWorkspaceShrinkTime);
 
@@ -1402,7 +1398,6 @@
         mUnshrinkAnimationEnabled = false;
         mShrinkAnimationEnabled = true;
 
-        final int childCount = getChildCount();
         initAnimationArrays();
 
         for (int i = 0; i < screenCount; i++) {
@@ -1428,17 +1423,17 @@
                 mOldRotationYs[i] = cl.getRotationY();
                 mNewTranslationXs[i] = x;
                 mNewTranslationYs[i] = y;
-                mNewScaleXs[i] = shrinkFactor * rotationScaleX * extraShrinkFactor;
-                mNewScaleYs[i] = shrinkFactor * rotationScaleY * extraShrinkFactor;
+                mNewScaleXs[i] = shrinkFactor * rotationScaleX;
+                mNewScaleYs[i] = shrinkFactor * rotationScaleY;
                 mNewBackgroundAlphas[i] = finalAlpha;
                 mNewRotationYs[i] = rotation;
             } else {
                 cl.setX((int)x);
                 cl.setY((int)y);
-                cl.setScaleX(shrinkFactor * rotationScaleX * extraShrinkFactor);
-                cl.setScaleY(shrinkFactor * rotationScaleY * extraShrinkFactor);
+                cl.setScaleX(shrinkFactor * rotationScaleX);
+                cl.setScaleY(shrinkFactor * rotationScaleY);
                 cl.setBackgroundAlpha(finalAlpha);
-                cl.setAlpha(finalAlpha);
+                cl.setFastAlpha(finalAlpha);
                 cl.setRotationY(rotation);
                 mShrinkAnimationListener.onAnimationEnd(null);
             }
@@ -1531,6 +1526,13 @@
         showBackgroundGradientForAllApps();
     }
 
+    @Override
+    protected void updateAdjacentPagesAlpha() {
+        if (!isSmall()) {
+            super.updateAdjacentPagesAlpha();
+        }
+    }
+
     /*
      * This interpolator emulates the rate at which the perceived scale of an object changes
      * as its distance from a camera increases. When this interpolator is applied to a scale
@@ -3143,7 +3145,6 @@
         mSpringLoadedDragController = new SpringLoadedDragController(mLauncher);
         mDragController = dragController;
 
-
         // hardware layers on children are enabled on startup, but should be disabled until
         // needed
         updateChildrenLayersEnabled();
