diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 72e486b..4e60e66 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -92,10 +92,6 @@
             </intent-filter>
         </activity>
 
-        <activity
-            android:name="GesturesActivity"
-            android:label="@string/gestures_activity" />        
-        
         <!-- Enable system-default search mode for any activity in Home -->
         <meta-data
             android:name="android.app.default_searchable"
diff --git a/res/drawable-land/search_bg.9.png b/res/drawable-land/search_bg.9.png
deleted file mode 100644
index 7f105bd..0000000
--- a/res/drawable-land/search_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land/spinner_dropdown_background_down.9.png b/res/drawable-land/spinner_dropdown_background_down.9.png
deleted file mode 100644
index bb64b78..0000000
--- a/res/drawable-land/spinner_dropdown_background_down.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land/spinner_dropdown_background_up.9.png b/res/drawable-land/spinner_dropdown_background_up.9.png
deleted file mode 100644
index c0e2a66..0000000
--- a/res/drawable-land/spinner_dropdown_background_up.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-port/search_bg.9.png b/res/drawable-port/search_bg.9.png
deleted file mode 100644
index b55b545..0000000
--- a/res/drawable-port/search_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/btn_circle.xml b/res/drawable/btn_circle.xml
deleted file mode 100644
index 9208010..0000000
--- a/res/drawable/btn_circle.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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_window_focused="false" android:state_enabled="true"
-        android:drawable="@drawable/btn_circle_normal" />
-    <item android:state_window_focused="false" android:state_enabled="false"
-        android:drawable="@drawable/btn_circle_disable" />
-    <item android:state_pressed="true" 
-        android:drawable="@drawable/btn_circle_pressed" />
-    <item android:state_focused="true" android:state_enabled="true"
-        android:drawable="@drawable/btn_circle_selected" />
-    <item android:state_enabled="true"
-        android:drawable="@drawable/btn_circle_normal" />
-    <item android:state_focused="true"
-        android:drawable="@drawable/btn_circle_disable_focused" />
-    <item
-         android:drawable="@drawable/btn_circle_disable" />
-</selector>
diff --git a/res/drawable/btn_circle_disable.png b/res/drawable/btn_circle_disable.png
deleted file mode 100644
index 33b74a6..0000000
--- a/res/drawable/btn_circle_disable.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/btn_circle_disable_focused.png b/res/drawable/btn_circle_disable_focused.png
deleted file mode 100644
index 005ad8d..0000000
--- a/res/drawable/btn_circle_disable_focused.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/btn_circle_normal.png b/res/drawable/btn_circle_normal.png
deleted file mode 100644
index fc5af1c..0000000
--- a/res/drawable/btn_circle_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/btn_circle_pressed.png b/res/drawable/btn_circle_pressed.png
deleted file mode 100644
index 8f40afd..0000000
--- a/res/drawable/btn_circle_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/btn_circle_selected.png b/res/drawable/btn_circle_selected.png
deleted file mode 100644
index c74fac2..0000000
--- a/res/drawable/btn_circle_selected.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gestures_background.xml b/res/drawable/gestures_background.xml
deleted file mode 100755
index 34ec051..0000000
--- a/res/drawable/gestures_background.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-   Copyright (C) 2009 Romain Guy
-
-   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.
--->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/texture_paper"
-    android:tileMode="repeat" />
diff --git a/res/drawable/google_logo.png b/res/drawable/google_logo.png
deleted file mode 100644
index 54fd5f9..0000000
--- a/res/drawable/google_logo.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_btn_round_plus.png b/res/drawable/ic_btn_round_plus.png
deleted file mode 100644
index 1ec8a95..0000000
--- a/res/drawable/ic_btn_round_plus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/placeholder_google.png b/res/drawable/placeholder_google.png
new file mode 100644
index 0000000..e852909
--- /dev/null
+++ b/res/drawable/placeholder_google.png
Binary files differ
diff --git a/res/drawable/search_floater.9.png b/res/drawable/search_floater.9.png
index a2007ad..6646ad3 100644
--- a/res/drawable/search_floater.9.png
+++ b/res/drawable/search_floater.9.png
Binary files differ
diff --git a/res/drawable/spinner_dropdown_background_down.9.png b/res/drawable/spinner_dropdown_background_down.9.png
deleted file mode 100644
index 9cb5556..0000000
--- a/res/drawable/spinner_dropdown_background_down.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/spinner_dropdown_background_up.9.png b/res/drawable/spinner_dropdown_background_up.9.png
deleted file mode 100644
index 5c93f78..0000000
--- a/res/drawable/spinner_dropdown_background_up.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/texture_paper.jpg b/res/drawable/texture_paper.jpg
deleted file mode 100644
index 27f4fd6..0000000
--- a/res/drawable/texture_paper.jpg
+++ /dev/null
Binary files differ
diff --git a/res/layout-land/application_boxed.xml b/res/layout-land/application_boxed.xml
index 63d2254..7656b58 100644
--- a/res/layout-land/application_boxed.xml
+++ b/res/layout-land/application_boxed.xml
@@ -19,6 +19,8 @@
     android:layout_width="fill_parent"
     android:layout_height="88dip"
 
+    android:paddingLeft="2dip"
+    android:paddingRight="2dip"
     android:paddingTop="5dip"
     android:paddingBottom="2dip"
     android:drawablePadding="0dip"
diff --git a/res/layout-port/application_boxed.xml b/res/layout-port/application_boxed.xml
index e71a2e2..a6991d5 100644
--- a/res/layout-port/application_boxed.xml
+++ b/res/layout-port/application_boxed.xml
@@ -19,6 +19,8 @@
     android:layout_width="fill_parent"
     android:layout_height="88dip"
 
+    android:paddingLeft="2dip"
+    android:paddingRight="2dip"
     android:paddingTop="5dip"
     android:paddingBottom="2dip"
     android:drawablePadding="0dip"
diff --git a/res/layout/gestures.xml b/res/layout/gestures.xml
deleted file mode 100644
index c9ea2a5..0000000
--- a/res/layout/gestures.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<!-- Note: GesturesPanel is a special implementation that forces the widget
-     to be opaque for performance reasons. Make sure it visually is. -->
-<com.android.launcher.GesturesPanel
-    xmlns:android="http://schemas.android.com/apk/res/android"
-        
-    android:id="@+id/gestures_panel"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-
-    <ViewSwitcher
-        android:id="@+id/gestures_actions"
-        android:layout_width="fill_parent"
-        android:layout_height="83dip"
-        android:layout_alignParentBottom="true"
-
-        android:inAnimation="@anim/fade_in_fast"
-        android:outAnimation="@anim/fade_out_fast"
-
-        android:foregroundGravity="top|fill_horizontal"
-        android:foreground="@*android:drawable/title_bar_shadow"
-        android:background="@android:drawable/title_bar_tall">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="fill_parent"
-            android:layout_gravity="center_horizontal"
-
-            android:gravity="center_vertical"
-
-            android:shadowColor="#FF000000"
-            android:shadowRadius="2.0"
-
-            android:drawablePadding="8dip"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:ellipsize="end"
-            android:maxLines="2"
-            android:text="@string/gestures_instructions" />
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="fill_parent"
-            android:layout_gravity="center_horizontal"
-
-            android:gravity="center_vertical"
-
-            android:shadowColor="#FF000000"
-            android:shadowRadius="2.0"
-
-            android:drawablePadding="8dip"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:ellipsize="end"
-            android:maxLines="2"
-            android:text="@string/gestures_instructions" />
-
-    </ViewSwitcher>
-
-    <android.gesture.GestureOverlayView
-        android:id="@+id/gestures_overlay"
-        android:layout_width="fill_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1.0"
-        android:layout_alignParentTop="true"
-        android:layout_above="@id/gestures_actions"
-
-        android:background="@drawable/gestures_background"
-
-        android:gestureStrokeType="multiple" />
-
-    <ImageButton
-        style="@style/PlusButton"
-
-        android:id="@+id/gestures_add"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentRight="true"
-        android:layout_alignTop="@id/gestures_actions"
-        android:layout_marginRight="5dip"  
-        android:layout_marginTop="-47dip" />
-
-</com.android.launcher.GesturesPanel>
diff --git a/res/layout/gestures_settings.xml b/res/layout/gestures_settings.xml
deleted file mode 100644
index 4b1976f..0000000
--- a/res/layout/gestures_settings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-
-    <ListView
-        android:id="@android:id/list"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent" />
-
-    <TextView
-        android:id="@android:id/empty"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-
-        android:gravity="center_horizontal"
-
-        android:text="@string/gestures_loading"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
-</FrameLayout>
diff --git a/res/layout/gestures_settings_item.xml b/res/layout/gestures_settings_item.xml
deleted file mode 100644
index 1563dfe..0000000
--- a/res/layout/gestures_settings_item.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@android:id/text1"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-
-    android:gravity="center_vertical"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-
-    android:drawablePadding="12dip"
-    android:paddingLeft="6dip"
-    android:paddingRight="6dip"
-
-    android:ellipsize="marquee"
-    android:singleLine="true"
-    android:textAppearance="?android:attr/textAppearanceLarge" />
diff --git a/res/drawable/spinner_dropdown_background.xml b/res/layout/list_category.xml
similarity index 64%
rename from res/drawable/spinner_dropdown_background.xml
rename to res/layout/list_category.xml
index 9c37286..1e8d04c 100644
--- a/res/drawable/spinner_dropdown_background.xml
+++ b/res/layout/list_category.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!-- Copyright (C) 2009 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.
@@ -14,9 +14,5 @@
      limitations under the License.
 -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_above_anchor="true"
-        android:drawable="@drawable/spinner_dropdown_background_up" />
-    <item android:drawable="@drawable/spinner_dropdown_background_down" />
-</selector>
-
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    style="?android:attr/listSeparatorTextViewStyle" />
diff --git a/res/layout/list_checkbox_2lines.xml b/res/layout/list_checkbox_2lines.xml
new file mode 100644
index 0000000..ed80c5f
--- /dev/null
+++ b/res/layout/list_checkbox_2lines.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical"
+    android:paddingRight="?android:attr/scrollbarSize">
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="15dip"
+        android:layout_marginRight="6dip"
+        android:layout_marginTop="6dip"
+        android:layout_marginBottom="6dip"
+        android:layout_weight="1">
+
+        <TextView android:id="@+id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:ellipsize="marquee"
+            android:fadingEdge="horizontal" />
+
+        <TextView android:id="@+id/summary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/title"
+            android:layout_alignLeft="@id/title"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:maxLines="2" />
+
+    </RelativeLayout>
+
+    <CheckBox
+        android:id="@+id/checkbox"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="4dip"
+        android:layout_gravity="center_vertical"
+        android:focusable="false"
+        android:clickable="false" />
+
+</LinearLayout>
diff --git a/res/layout/rename_folder.xml b/res/layout/rename_folder.xml
index ba78995..cbb42b4 100644
--- a/res/layout/rename_folder.xml
+++ b/res/layout/rename_folder.xml
@@ -36,6 +36,7 @@
         android:autoText="false"
         android:capitalize="none"
         android:gravity="fill_horizontal"
+        android:maxLength="30"
         android:textAppearance="?android:attr/textAppearanceMedium" />
 
 </LinearLayout>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index f0cc369..c1de7f4 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -16,6 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Plocha"</string>
+    <string name="uid_name">"Android Core Apps"</string>
     <string name="folder_name">"Složka"</string>
     <string name="chooser_wallpaper">"Vybrat tapetu ze složky"</string>
     <string name="wallpaper_instructions">"Nastavit tapetu"</string>
@@ -26,31 +27,28 @@
     <string name="rename_action">"OK"</string>
     <string name="cancel_action">"Zrušit"</string>
     <string name="menu_item_add_item">"Přidat na plochu"</string>
-    <!-- no translation found for group_applications (4118484163419674240) -->
-    <skip />
-    <!-- no translation found for group_shortcuts (9133529424900391877) -->
-    <skip />
+    <string name="group_applications">"Aplikace"</string>
+    <string name="group_shortcuts">"Klávesové zkratky"</string>
     <string name="group_search">"Hledat"</string>
-    <!-- no translation found for group_folder (5143593791798929193) -->
-    <skip />
-    <!-- no translation found for group_live_folders (2664945399140647217) -->
-    <skip />
-    <!-- no translation found for group_widgets (6704978494073105844) -->
-    <skip />
-    <!-- no translation found for group_wallpapers (1568191644272224858) -->
-    <skip />
+    <string name="group_folder">"Nová složka"</string>
+    <string name="group_live_folders">"Složky"</string>
+    <string name="group_widgets">"Widgety"</string>
+    <string name="group_wallpapers">"Tapety"</string>
     <string name="add_folder">"Složka"</string>
     <string name="add_clock">"Hodiny"</string>
     <string name="add_photo_frame">"Rámeček fotografie"</string>
     <string name="add_search">"Vyhledávání"</string>
     <string name="out_of_space">"Na této ploše již není místo."</string>
+    <string name="shortcut_installed">"Zástupce %s je nainstalován."</string>
+    <string name="shortcut_uninstalled">"Zástupce %s byl odebrán."</string>
+    <string name="shortcut_duplicate">"Zástupce %s již existuje."</string>
     <string name="title_select_shortcut">"Vyberte zástupce"</string>
-    <!-- no translation found for title_select_live_folder (3753447798805166749) -->
-    <skip />
+    <string name="title_select_live_folder">"Vybrat složku"</string>
     <string name="menu_add">"Přidat"</string>
     <string name="menu_wallpaper">"Tapeta"</string>
     <string name="menu_search">"Hledat"</string>
     <string name="menu_notifications">"Oznámení"</string>
+    <string name="menu_gestures">"Gesta"</string>
     <string name="menu_settings">"Nastavení"</string>
     <string name="permlab_install_shortcut">"instalovat zástupce"</string>
     <string name="permdesc_install_shortcut">"Povoluje aplikaci přidat zástupce bez zásahu uživatele."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
new file mode 100644
index 0000000..3050f00
--- /dev/null
+++ b/res/values-da/strings.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Start"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
+    <string name="folder_name">"Mappe"</string>
+    <string name="chooser_wallpaper">"Vælg tapet fra"</string>
+    <string name="wallpaper_instructions">"Angiv tapet"</string>
+    <string name="pick_wallpaper">"Tapetgalleri"</string>
+    <string name="activity_not_found">"Programmet er ikke installeret på din telefon."</string>
+    <string name="rename_folder_label">"Mappenavn"</string>
+    <string name="rename_folder_title">"Omdøb mappe"</string>
+    <string name="rename_action">"OK"</string>
+    <string name="cancel_action">"Annuller"</string>
+    <string name="menu_item_add_item">"Føj til Startskærm"</string>
+    <string name="group_applications">"Programmer"</string>
+    <string name="group_shortcuts">"Genveje"</string>
+    <string name="group_search">"Søg"</string>
+    <string name="group_folder">"Ny mappe"</string>
+    <string name="group_live_folders">"Mapper"</string>
+    <string name="group_widgets">"Widgets"</string>
+    <string name="group_wallpapers">"Tapeter"</string>
+    <string name="add_folder">"Mappe"</string>
+    <string name="add_clock">"Ur"</string>
+    <string name="add_photo_frame">"Billedramme"</string>
+    <string name="add_search">"Søg"</string>
+    <string name="out_of_space">"Der er ikke mere plads på Startskærmen."</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
+    <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
+    <string name="title_select_shortcut">"Vælg genvej"</string>
+    <string name="title_select_live_folder">"Vælg mappe"</string>
+    <string name="menu_add">"Tilføj"</string>
+    <string name="menu_wallpaper">"Tapet"</string>
+    <string name="menu_search">"Søg"</string>
+    <string name="menu_notifications">"Meddelelser"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
+    <string name="menu_settings">"Indstillinger"</string>
+    <string name="permlab_install_shortcut">"installer genveje"</string>
+    <string name="permdesc_install_shortcut">"Tillader et program at tilføje genveje uden brugerindgriben."</string>
+    <string name="permlab_uninstall_shortcut">"afinstaller genveje"</string>
+    <string name="permdesc_uninstall_shortcut">"Tillader et program at fjerne genveje uden brugerindgriben."</string>
+    <string name="permlab_read_settings">"læs indstillinger og genveje for Start"</string>
+    <string name="permdesc_read_settings">"Tillader et program at læse indstillingerne og genvejene i Start."</string>
+    <string name="permlab_write_settings">"skriv indstillinger og genveje for Start"</string>
+    <string name="permdesc_write_settings">"Tillader et program at ændre indstillingerne og genvejene i Start."</string>
+    <string name="search_hint">"Google-søgning"</string>
+    <string name="gadget_error_text">"Der er problemer med at indlæse widget"</string>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 40f3cab..4dcb401 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -16,6 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Startseite"</string>
+    <string name="uid_name">"Android Core Apps"</string>
     <string name="folder_name">"Ordner"</string>
     <string name="chooser_wallpaper">"Hintergrund auswählen"</string>
     <string name="wallpaper_instructions">"Hintergrund festlegen"</string>
@@ -25,32 +26,29 @@
     <string name="rename_folder_title">"Ordner umbenennen"</string>
     <string name="rename_action">"OK"</string>
     <string name="cancel_action">"Abbrechen"</string>
-    <string name="menu_item_add_item">"Zur Startseite hinzufügen"</string>
-    <!-- no translation found for group_applications (4118484163419674240) -->
-    <skip />
-    <!-- no translation found for group_shortcuts (9133529424900391877) -->
-    <skip />
+    <string name="menu_item_add_item">"Zum Startbildschirm hinzufügen"</string>
+    <string name="group_applications">"Anwendungen"</string>
+    <string name="group_shortcuts">"Verknüpfungen"</string>
     <string name="group_search">"Suchen"</string>
-    <!-- no translation found for group_folder (5143593791798929193) -->
-    <skip />
-    <!-- no translation found for group_live_folders (2664945399140647217) -->
-    <skip />
-    <!-- no translation found for group_widgets (6704978494073105844) -->
-    <skip />
-    <!-- no translation found for group_wallpapers (1568191644272224858) -->
-    <skip />
+    <string name="group_folder">"Neuer Ordner"</string>
+    <string name="group_live_folders">"Ordner"</string>
+    <string name="group_widgets">"Widgets"</string>
+    <string name="group_wallpapers">"Hintergrundbilder"</string>
     <string name="add_folder">"Ordner"</string>
     <string name="add_clock">"Uhr"</string>
     <string name="add_photo_frame">"Bildrahmen"</string>
     <string name="add_search">"Suchen"</string>
-    <string name="out_of_space">"Auf der Startseite ist kein Platz mehr vorhanden."</string>
+    <string name="out_of_space">"Auf dem Startbildschirm ist kein Platz mehr vorhanden."</string>
+    <string name="shortcut_installed">"Verknüpfung \"%s\" ist installiert."</string>
+    <string name="shortcut_uninstalled">"Verknüpfung \"%s\" wurde entfernt."</string>
+    <string name="shortcut_duplicate">"Verknüpfung \"%s\" ist bereits vorhanden."</string>
     <string name="title_select_shortcut">"Tastenkürzel auswählen"</string>
-    <!-- no translation found for title_select_live_folder (3753447798805166749) -->
-    <skip />
+    <string name="title_select_live_folder">"Ordner auswählen"</string>
     <string name="menu_add">"Hinzufügen"</string>
     <string name="menu_wallpaper">"Hintergrund"</string>
     <string name="menu_search">"Suchen"</string>
     <string name="menu_notifications">"Benachrichtigungen"</string>
+    <string name="menu_gestures">"Bewegungen"</string>
     <string name="menu_settings">"Einstellungen"</string>
     <string name="permlab_install_shortcut">"Verknüpfungen installieren"</string>
     <string name="permdesc_install_shortcut">"Ermöglicht einer Anwendung das Hinzufügen von Verknüpfungen ohne Eingriff des Benutzers."</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
new file mode 100644
index 0000000..c0516b8
--- /dev/null
+++ b/res/values-el/strings.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Αρχική οθόνη"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
+    <string name="folder_name">"Φάκελος"</string>
+    <string name="chooser_wallpaper">"Επιλογή ταπετσαρίας από"</string>
+    <string name="wallpaper_instructions">"Ορισμός ταπετσαρίας"</string>
+    <string name="pick_wallpaper">"Συλλογή ταπετσαριών"</string>
+    <string name="activity_not_found">"Η εφαρμογή δεν έχει εγκατασταθεί στο τηλέφωνό σας."</string>
+    <string name="rename_folder_label">"Όνομα φακέλου"</string>
+    <string name="rename_folder_title">"Μετονομασία φακέλου"</string>
+    <string name="rename_action">"OK"</string>
+    <string name="cancel_action">"Ακύρωση"</string>
+    <string name="menu_item_add_item">"Προσθήκη στην αρχική οθόνη"</string>
+    <string name="group_applications">"Εφαρμογές"</string>
+    <string name="group_shortcuts">"Συντομεύσεις"</string>
+    <string name="group_search">"Αναζήτηση"</string>
+    <string name="group_folder">"Νέος φάκελος"</string>
+    <string name="group_live_folders">"Φάκελοι"</string>
+    <string name="group_widgets">"Γραφικά στοιχεία"</string>
+    <string name="group_wallpapers">"Ταπετσαρίες"</string>
+    <string name="add_folder">"Φάκελος"</string>
+    <string name="add_clock">"Ρολόι"</string>
+    <string name="add_photo_frame">"Πλαίσιο εικόνας"</string>
+    <string name="add_search">"Αναζήτηση"</string>
+    <string name="out_of_space">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη."</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
+    <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
+    <string name="title_select_shortcut">"Επιλογή συντόμευσης"</string>
+    <string name="title_select_live_folder">"Επιλογή φακέλου"</string>
+    <string name="menu_add">"Προσθήκη"</string>
+    <string name="menu_wallpaper">"Ταπετσαρία"</string>
+    <string name="menu_search">"Αναζήτηση"</string>
+    <string name="menu_notifications">"Ειδοποιήσεις"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
+    <string name="menu_settings">"Ρυθμίσεις"</string>
+    <string name="permlab_install_shortcut">"εγκατάσταση συντομεύσεων"</string>
+    <string name="permdesc_install_shortcut">"Επιτρέπει σε μια εφαρμογή την προσθήκη συντομεύσεων χωρίς την παρέμβαση του χρήστη."</string>
+    <string name="permlab_uninstall_shortcut">"κατάργηση εγκατάστασης συντομεύσεων"</string>
+    <string name="permdesc_uninstall_shortcut">"Επιτρέπει σε μια εφαρμογή την κατάργηση συντομεύσεων χωρίς την παρέμβαση του χρήστη."</string>
+    <string name="permlab_read_settings">"ανάγνωση ρυθμίσεων και συντομεύσεων αρχικής οθόνης"</string>
+    <string name="permdesc_read_settings">"Επιτρέπει σε μια εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη."</string>
+    <string name="permlab_write_settings">"εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης"</string>
+    <string name="permdesc_write_settings">"Επιτρέπει σε μια εφαρμογή την αλλαγή των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη."</string>
+    <string name="search_hint">"Αναζήτηση Google"</string>
+    <string name="gadget_error_text">"Παρουσιάστηκε πρόβλημα στη φόρτωση του γραφικού στοιχείου"</string>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 221ab86..a2f12dc 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -16,6 +16,8 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Página principal"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
     <string name="folder_name">"Carpeta"</string>
     <string name="chooser_wallpaper">"Seleccionar papel tapiz desde"</string>
     <string name="wallpaper_instructions">"Definir papel tapiz"</string>
@@ -26,19 +28,13 @@
     <string name="rename_action">"Aceptar"</string>
     <string name="cancel_action">"Cancelar"</string>
     <string name="menu_item_add_item">"Agregar a la pantalla Página principal"</string>
-    <!-- no translation found for group_applications (4118484163419674240) -->
-    <skip />
-    <!-- no translation found for group_shortcuts (9133529424900391877) -->
-    <skip />
+    <string name="group_applications">"Aplicaciones"</string>
+    <string name="group_shortcuts">"Accesos directos"</string>
     <string name="group_search">"Buscar"</string>
-    <!-- no translation found for group_folder (5143593791798929193) -->
-    <skip />
-    <!-- no translation found for group_live_folders (2664945399140647217) -->
-    <skip />
-    <!-- no translation found for group_widgets (6704978494073105844) -->
-    <skip />
-    <!-- no translation found for group_wallpapers (1568191644272224858) -->
-    <skip />
+    <string name="group_folder">"Carpeta nueva"</string>
+    <string name="group_live_folders">"Carpetas"</string>
+    <string name="group_widgets">"Controles"</string>
+    <string name="group_wallpapers">"Papeles tapiz"</string>
     <string name="add_folder">"Carpeta"</string>
     <string name="add_clock">"Reloj"</string>
     <string name="add_photo_frame">"Marco de imagen"</string>
@@ -51,12 +47,13 @@
     <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
     <skip />
     <string name="title_select_shortcut">"Seleccionar acceso directo"</string>
-    <!-- no translation found for title_select_live_folder (3753447798805166749) -->
-    <skip />
+    <string name="title_select_live_folder">"Seleccionar carpeta"</string>
     <string name="menu_add">"Agregar"</string>
     <string name="menu_wallpaper">"Papel tapiz"</string>
     <string name="menu_search">"Buscar"</string>
     <string name="menu_notifications">"Notificaciones"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
     <string name="menu_settings">"Configuración"</string>
     <string name="permlab_install_shortcut">"instalar accesos directos"</string>
     <string name="permdesc_install_shortcut">"Permite a una aplicación agregar accesos directos sin intervención del usuario."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 2c73c88..5bef440 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -16,6 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Página principal"</string>
+    <string name="uid_name">"Aplicaciones básicas de Android"</string>
     <string name="folder_name">"Carpeta"</string>
     <string name="chooser_wallpaper">"Seleccionar fondo de pantalla de"</string>
     <string name="wallpaper_instructions">"Establecer fondo de pantalla"</string>
@@ -38,12 +39,16 @@
     <string name="add_photo_frame">"Picture frame"</string>
     <string name="add_search">"Búsqueda de Google"</string>
     <string name="out_of_space">"No queda espacio en esta pantalla de página principal."</string>
+    <string name="shortcut_installed">"El acceso directo \"%s\" está instalado."</string>
+    <string name="shortcut_uninstalled">"Se ha eliminado el acceso directo \"%s\"."</string>
+    <string name="shortcut_duplicate">"El acceso directo \"%s\" ya existe."</string>
     <string name="title_select_shortcut">"Seleccionar acceso directo"</string>
     <string name="title_select_live_folder">"Seleccionar carpeta"</string>
     <string name="menu_add">"Añadir"</string>
     <string name="menu_wallpaper">"Fondo de pantalla"</string>
     <string name="menu_search">"Buscar con Google"</string>
     <string name="menu_notifications">"Notificaciones"</string>
+    <string name="menu_gestures">"Gestos"</string>
     <string name="menu_settings">"Ajustes"</string>
     <string name="permlab_install_shortcut">"instalar accesos directos"</string>
     <string name="permdesc_install_shortcut">"Permite que una aplicación añada accesos directos sin intervención del usuario."</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 7558565..91bea49 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -16,6 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Accueil"</string>
+    <string name="uid_name">"Applications de base Android"</string>
     <string name="folder_name">"Dossier"</string>
     <string name="chooser_wallpaper">"Sélectionner à partir de..."</string>
     <string name="wallpaper_instructions">"Sélectionner"</string>
@@ -36,14 +37,18 @@
     <string name="add_folder">"Dossier"</string>
     <string name="add_clock">"Horloge"</string>
     <string name="add_photo_frame">"Cadre d\'image"</string>
-    <string name="add_search">"Rechercher"</string>
+    <string name="add_search">"Recherche"</string>
     <string name="out_of_space">"Plus d\'espace libre sur l\'écran d\'accueil."</string>
+    <string name="shortcut_installed">"Le raccourci \"%s\" est installé."</string>
+    <string name="shortcut_uninstalled">"Le raccourci \"%s\" a été supprimé."</string>
+    <string name="shortcut_duplicate">"Le raccourci \"%s\" existe déjà."</string>
     <string name="title_select_shortcut">"Sélectionner un raccourci"</string>
     <string name="title_select_live_folder">"Sélectionner le dossier"</string>
     <string name="menu_add">"Ajouter"</string>
-    <string name="menu_wallpaper">"Arrière-plan"</string>
+    <string name="menu_wallpaper">"Fond d\'écran"</string>
     <string name="menu_search">"Rechercher"</string>
     <string name="menu_notifications">"Notifications"</string>
+    <string name="menu_gestures">"Gestes"</string>
     <string name="menu_settings">"Paramètres"</string>
     <string name="permlab_install_shortcut">"installer des raccourcis"</string>
     <string name="permdesc_install_shortcut">"Permet à une application d\'ajouter des raccourcis sans l\'intervention de l\'utilisateur."</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 135df4c..404bb3a 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -16,6 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Home"</string>
+    <string name="uid_name">"Android Core Apps"</string>
     <string name="folder_name">"Cartella"</string>
     <string name="chooser_wallpaper">"Seleziona sfondo da"</string>
     <string name="wallpaper_instructions">"Imposta sfondo"</string>
@@ -38,12 +39,16 @@
     <string name="add_photo_frame">"Cornice immagini"</string>
     <string name="add_search">"Ricerca"</string>
     <string name="out_of_space">"Spazio nella schermata Home esaurito."</string>
+    <string name="shortcut_installed">"La scorciatoia \"%s\" è installata."</string>
+    <string name="shortcut_uninstalled">"La scorciatoia \"%s\" è stata rimossa."</string>
+    <string name="shortcut_duplicate">"Scorciatoia \"%s\" già presente."</string>
     <string name="title_select_shortcut">"Seleziona collegamento"</string>
     <string name="title_select_live_folder">"Seleziona cartella"</string>
     <string name="menu_add">"Aggiungi"</string>
     <string name="menu_wallpaper">"Sfondo"</string>
     <string name="menu_search">"Cerca"</string>
     <string name="menu_notifications">"Notifiche"</string>
+    <string name="menu_gestures">"Gesti"</string>
     <string name="menu_settings">"Impostazioni"</string>
     <string name="permlab_install_shortcut">"aggiungere scorciatorie"</string>
     <string name="permdesc_install_shortcut">"Consente a un\'applicazione di aggiungere scorciatoie automaticamente."</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 8c43e52..c2391c0 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -16,6 +16,8 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"ホーム"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
     <string name="folder_name">"フォルダ"</string>
     <string name="chooser_wallpaper">"壁紙を選択"</string>
     <string name="wallpaper_instructions">"壁紙に設定"</string>
@@ -38,12 +40,20 @@
     <string name="add_photo_frame">"写真フレーム"</string>
     <string name="add_search">"検索"</string>
     <string name="out_of_space">"ホーム画面に空きスペースがありません。"</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
+    <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
     <string name="title_select_shortcut">"ショートカットを選択"</string>
     <string name="title_select_live_folder">"フォルダの選択"</string>
     <string name="menu_add">"追加"</string>
     <string name="menu_wallpaper">"壁紙"</string>
     <string name="menu_search">"検索"</string>
     <string name="menu_notifications">"通知"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
     <string name="menu_settings">"設定"</string>
     <string name="permlab_install_shortcut">"ショートカットのインストール"</string>
     <string name="permdesc_install_shortcut">"ユーザー操作なしでショートカットの追加をアプリケーションに許可します。"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 37ba73c..43f27a7 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -16,11 +16,13 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"홈"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
     <string name="folder_name">"폴더"</string>
     <string name="chooser_wallpaper">"배경화면 선택"</string>
     <string name="wallpaper_instructions">"배경화면 설정"</string>
     <string name="pick_wallpaper">"배경화면 갤러리"</string>
-    <string name="activity_not_found">"전화기에 설치되어 있지 않은 응용프로그램입니다."</string>
+    <string name="activity_not_found">"휴대전화에 설치되어 있지 않은 응용프로그램입니다."</string>
     <string name="rename_folder_label">"폴더 이름"</string>
     <string name="rename_folder_title">"폴더 이름 바꾸기"</string>
     <string name="rename_action">"확인"</string>
@@ -38,21 +40,29 @@
     <string name="add_photo_frame">"사진 프레임"</string>
     <string name="add_search">"검색"</string>
     <string name="out_of_space">"홈 화면에 더 이상 공간이 없습니다."</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
+    <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
     <string name="title_select_shortcut">"바로가기 선택"</string>
     <string name="title_select_live_folder">"폴더 선택"</string>
     <string name="menu_add">"추가"</string>
     <string name="menu_wallpaper">"배경화면"</string>
     <string name="menu_search">"검색"</string>
     <string name="menu_notifications">"알림"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
     <string name="menu_settings">"설정"</string>
     <string name="permlab_install_shortcut">"바로가기 설치"</string>
     <string name="permdesc_install_shortcut">"응용프로그램이 사용자의 작업 없이 바로가기를 추가할 수 있도록 합니다."</string>
     <string name="permlab_uninstall_shortcut">"바로가기 제거"</string>
-    <string name="permdesc_uninstall_shortcut">"응용프로그램이 사용자의 작업 없이 바로가기를 제거할 수 있도록 합니다."</string>
+    <string name="permdesc_uninstall_shortcut">"응용프로그램이 사용자의 작업 없이 바로가기를 삭제할 수 있도록 합니다."</string>
     <string name="permlab_read_settings">"홈 설정 및 바로가기 읽기"</string>
-    <string name="permdesc_read_settings">"응용프로그램이 홈에 있는 설정 및 바로가기를 읽을 수 있습니다."</string>
+    <string name="permdesc_read_settings">"응용프로그램이 홈에 있는 설정 및 바로가기를 읽을 수 있도록 합니다."</string>
     <string name="permlab_write_settings">"홈 설정 및 바로가기 쓰기"</string>
-    <string name="permdesc_write_settings">"응용프로그램이 홈에 있는 설정 및 바로가기를 변경할 수 있습니다."</string>
+    <string name="permdesc_write_settings">"응용프로그램이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 합니다."</string>
     <string name="search_hint">"Google 검색"</string>
     <string name="gadget_error_text">"위젯을 로드하는 중 문제가 발생했습니다."</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 954b5d7..8189f09 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -16,6 +16,8 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Hjem"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
     <string name="folder_name">"Mappe"</string>
     <string name="chooser_wallpaper">"Velg bakgrunnsbilde fra"</string>
     <string name="wallpaper_instructions">"Velg bakgrunnsbilde"</string>
@@ -26,31 +28,32 @@
     <string name="rename_action">"OK"</string>
     <string name="cancel_action">"Avbryt"</string>
     <string name="menu_item_add_item">"Legg til skrivebord"</string>
-    <!-- no translation found for group_applications (4118484163419674240) -->
-    <skip />
-    <!-- no translation found for group_shortcuts (9133529424900391877) -->
-    <skip />
+    <string name="group_applications">"Applikasjoner"</string>
+    <string name="group_shortcuts">"Snarveier"</string>
     <string name="group_search">"Søk"</string>
-    <!-- no translation found for group_folder (5143593791798929193) -->
-    <skip />
-    <!-- no translation found for group_live_folders (2664945399140647217) -->
-    <skip />
-    <!-- no translation found for group_widgets (6704978494073105844) -->
-    <skip />
-    <!-- no translation found for group_wallpapers (1568191644272224858) -->
-    <skip />
+    <string name="group_folder">"Ny mappe"</string>
+    <string name="group_live_folders">"Mapper"</string>
+    <string name="group_widgets">"Skrivebordselementer"</string>
+    <string name="group_wallpapers">"Bakgrunner"</string>
     <string name="add_folder">"Mappe"</string>
     <string name="add_clock">"Klokke"</string>
     <string name="add_photo_frame">"Bilderamme"</string>
     <string name="add_search">"Søk"</string>
     <string name="out_of_space">"Ikke nok plass på skrivebordet."</string>
-    <string name="title_select_shortcut">"Velg snarvei"</string>
-    <!-- no translation found for title_select_live_folder (3753447798805166749) -->
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
     <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
+    <string name="title_select_shortcut">"Velg snarvei"</string>
+    <string name="title_select_live_folder">"Velg mappe"</string>
     <string name="menu_add">"Legg til"</string>
     <string name="menu_wallpaper">"Bakgrunnsbilde"</string>
     <string name="menu_search">"Søk"</string>
     <string name="menu_notifications">"Varslinger"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
     <string name="menu_settings">"Innstillinger"</string>
     <string name="permlab_install_shortcut">"installere snarveier"</string>
     <string name="permdesc_install_shortcut">"Lar applikasjonen legge til snarveier uten å involvere brukeren."</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 9a37fed..f3db12e 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -16,6 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Startpagina"</string>
+    <string name="uid_name">"Android-kerntoepassingen"</string>
     <string name="folder_name">"Map"</string>
     <string name="chooser_wallpaper">"Achtergrond selecteren in"</string>
     <string name="wallpaper_instructions">"Achtergrond instellen"</string>
@@ -38,12 +39,16 @@
     <string name="add_photo_frame">"Fotolijstje"</string>
     <string name="add_search">"Zoeken"</string>
     <string name="out_of_space">"Er is geen ruimte meer op dit startscherm."</string>
+    <string name="shortcut_installed">"Snelkoppeling \'%s\' is geïnstalleerd."</string>
+    <string name="shortcut_uninstalled">"Snelkoppeling \'%s\' is verwijderd."</string>
+    <string name="shortcut_duplicate">"Snelkoppeling \'%s\' bestaat al."</string>
     <string name="title_select_shortcut">"Snelkoppeling selecteren"</string>
     <string name="title_select_live_folder">"Map selecteren"</string>
     <string name="menu_add">"Toevoegen"</string>
     <string name="menu_wallpaper">"Achtergrond"</string>
     <string name="menu_search">"Zoeken"</string>
     <string name="menu_notifications">"Meldingen"</string>
+    <string name="menu_gestures">"Gebaren"</string>
     <string name="menu_settings">"Instellingen"</string>
     <string name="permlab_install_shortcut">"snelkoppelingen installeren"</string>
     <string name="permdesc_install_shortcut">"Een toepassing toestaan om snelkoppelingen toe te voegen zonder tussenkomst van de gebruiker."</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index d5b26a9..ac5d9f3 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -16,6 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Sieć"</string>
+    <string name="uid_name">"Aplikacje główne systemu Android"</string>
     <string name="folder_name">"Folder"</string>
     <string name="chooser_wallpaper">"Wybierz tapetę"</string>
     <string name="wallpaper_instructions">"Ustaw tapetę"</string>
@@ -38,12 +39,16 @@
     <string name="add_photo_frame">"Ramka obrazu"</string>
     <string name="add_search">"Wyszukiwarka"</string>
     <string name="out_of_space">"Brak miejsca na tej stronie głównej"</string>
+    <string name="shortcut_installed">"Skrót „%s” został zainstalowany."</string>
+    <string name="shortcut_uninstalled">"Skrót „%s” został usunięty."</string>
+    <string name="shortcut_duplicate">"Skrót „%s” już istnieje."</string>
     <string name="title_select_shortcut">"Wybierz skrót"</string>
     <string name="title_select_live_folder">"Wybierz folder"</string>
     <string name="menu_add">"Dodaj"</string>
     <string name="menu_wallpaper">"Tapeta"</string>
     <string name="menu_search">"Szukaj"</string>
     <string name="menu_notifications">"Powiadomienia"</string>
+    <string name="menu_gestures">"Gesty"</string>
     <string name="menu_settings">"Ustawienia"</string>
     <string name="permlab_install_shortcut">"zainstaluj skróty"</string>
     <string name="permdesc_install_shortcut">"Umożliwia aplikacji dodawanie skrótów bez interwencji użytkownika."</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..04afce3
--- /dev/null
+++ b/res/values-pt-rPT/strings.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Home"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
+    <string name="folder_name">"Pasta"</string>
+    <string name="chooser_wallpaper">"Seleccionar imagem de fundo a partir de"</string>
+    <string name="wallpaper_instructions">"Definir imagem de fundo"</string>
+    <string name="pick_wallpaper">"Galeria de imagens de fundo"</string>
+    <string name="activity_not_found">"A aplicação não está instalada no telefone."</string>
+    <string name="rename_folder_label">"Nome da pasta"</string>
+    <string name="rename_folder_title">"Mudar o nome da pasta"</string>
+    <string name="rename_action">"OK"</string>
+    <string name="cancel_action">"Cancelar"</string>
+    <string name="menu_item_add_item">"Adicionar ao ecrã principal"</string>
+    <string name="group_applications">"Aplicações"</string>
+    <string name="group_shortcuts">"Atalhos"</string>
+    <string name="group_search">"Pesquisar"</string>
+    <string name="group_folder">"Nova pasta"</string>
+    <string name="group_live_folders">"Pastas"</string>
+    <string name="group_widgets">"Widgets"</string>
+    <string name="group_wallpapers">"Imagens de fundo"</string>
+    <string name="add_folder">"Pasta"</string>
+    <string name="add_clock">"Relógio"</string>
+    <string name="add_photo_frame">"Moldura de imagem"</string>
+    <string name="add_search">"Pesquisar"</string>
+    <string name="out_of_space">"Não existe espaço suficiente neste ecrã principal."</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
+    <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
+    <string name="title_select_shortcut">"Seleccione o atalho"</string>
+    <string name="title_select_live_folder">"Seleccione a pasta"</string>
+    <string name="menu_add">"Adicionar"</string>
+    <string name="menu_wallpaper">"Imagem de fundo"</string>
+    <string name="menu_search">"Pesquisar"</string>
+    <string name="menu_notifications">"Notificações"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
+    <string name="menu_settings">"Definições"</string>
+    <string name="permlab_install_shortcut">"instalar atalhos"</string>
+    <string name="permdesc_install_shortcut">"Permite que uma aplicação adicione atalhos sem a intervenção do utilizador."</string>
+    <string name="permlab_uninstall_shortcut">"desinstalar atalhos"</string>
+    <string name="permdesc_uninstall_shortcut">"Permite que uma aplicação remova atalhos sem a intervenção do utilizador."</string>
+    <string name="permlab_read_settings">"ler definições e atalhos do ecrã principal"</string>
+    <string name="permdesc_read_settings">"Permite que uma aplicação leia as definições e os atalhos do ecrã principal."</string>
+    <string name="permlab_write_settings">"escrever definições e atalhos do ecrã principal"</string>
+    <string name="permdesc_write_settings">"Permite que uma aplicação altere as definições e os atalhos do ecrã principal."</string>
+    <string name="search_hint">"Pesquisa do Google"</string>
+    <string name="gadget_error_text">"Erro ao carregar o widget"</string>
+</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 5fe05ce..a2b3b5c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -15,46 +15,39 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="application_name">"Página Inicial do Google"</string>
+    <string name="application_name">"Página inicial"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
     <string name="folder_name">"Pasta"</string>
-    <string name="chooser_wallpaper">"Selecionar papel de parede da"</string>
+    <string name="chooser_wallpaper">"Selecionar papel de parede de"</string>
     <string name="wallpaper_instructions">"Definir papel de parede"</string>
-    <string name="pick_wallpaper">"Galeria de papéis de parede"</string>
+    <string name="pick_wallpaper">"Galeria de papel de parede"</string>
     <string name="activity_not_found">"O aplicativo não está instalado no seu telefone."</string>
     <string name="rename_folder_label">"Nome da pasta"</string>
     <string name="rename_folder_title">"Renomear pasta"</string>
     <string name="rename_action">"OK"</string>
     <string name="cancel_action">"Cancelar"</string>
-    <string name="menu_item_add_item">"Adicionar à tela inicial"</string>
-    <!-- no translation found for group_applications (4118484163419674240) -->
-    <skip />
-    <!-- no translation found for group_shortcuts (9133529424900391877) -->
-    <skip />
-    <!-- no translation found for group_search (5905328940867162196) -->
-    <skip />
-    <!-- no translation found for group_folder (5143593791798929193) -->
-    <skip />
-    <!-- no translation found for group_live_folders (2664945399140647217) -->
-    <skip />
-    <!-- no translation found for group_widgets (6704978494073105844) -->
-    <skip />
-    <!-- no translation found for group_wallpapers (1568191644272224858) -->
-    <skip />
+    <string name="menu_item_add_item">"Adicionar à tela da Página inicial"</string>
+    <string name="group_applications">"Aplicativos"</string>
+    <string name="group_shortcuts">"Atalhos"</string>
+    <string name="group_search">"Pesquisar"</string>
+    <string name="group_folder">"Nova pasta"</string>
+    <string name="group_live_folders">"Pastas"</string>
+    <string name="group_widgets">"Widgets"</string>
+    <string name="group_wallpapers">"Papéis de parede"</string>
     <string name="add_folder">"Pasta"</string>
     <string name="add_clock">"Relógio"</string>
-    <string name="add_photo_frame">"Moldura"</string>
+    <string name="add_photo_frame">"Frame da imagem"</string>
     <string name="add_search">"Pesquisar"</string>
-    <string name="out_of_space">"Não há mais espaço nesta página inicial."</string>
+    <string name="out_of_space">"Não há mais espaço nesta tela da Página inicial."</string>
     <!-- no translation found for shortcut_installed (6623689857689040689) -->
     <skip />
     <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
     <skip />
     <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
     <skip />
-    <!-- no translation found for title_select_shortcut (2858897527672831763) -->
-    <skip />
-    <!-- no translation found for title_select_live_folder (3753447798805166749) -->
-    <skip />
+    <string name="title_select_shortcut">"Selecionar atalho"</string>
+    <string name="title_select_live_folder">"Selecionar pasta"</string>
     <string name="menu_add">"Adicionar"</string>
     <string name="menu_wallpaper">"Papel de parede"</string>
     <string name="menu_search">"Pesquisar"</string>
@@ -63,38 +56,13 @@
     <skip />
     <string name="menu_settings">"Configurações"</string>
     <string name="permlab_install_shortcut">"instalar atalhos"</string>
-    <string name="permdesc_install_shortcut">"Permite que um aplicativo adicione atalhos sem a intervenção do usuário."</string>
+    <string name="permdesc_install_shortcut">"Permite que um aplicativo adicione os atalhos sem a intervenção do usuário."</string>
     <string name="permlab_uninstall_shortcut">"desinstalar atalhos"</string>
-    <string name="permdesc_uninstall_shortcut">"Permite que um aplicativo remova atalhos sem a intervenção do usuário."</string>
-    <string name="permlab_read_settings">"leia as configurações e atalhos da página inicial"</string>
-    <string name="permdesc_read_settings">"Permite que um aplicativo leia as configurações e atalhos na página inicial."</string>
-    <string name="permlab_write_settings">"grave as configurações e atalhos da página inicial"</string>
-    <string name="permdesc_write_settings">"Permite que um aplicativo altere as configurações e atalhos na página inicial."</string>
-    <string name="search_hint">"Google Search"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
-    <!-- no translation found for gestures_instructions (1099425576530504561) -->
-    <skip />
-    <!-- no translation found for gestures_unknown (309008617423088837) -->
-    <skip />
-    <!-- no translation found for gestures_created (8116808500193613741) -->
-    <skip />
-    <!-- no translation found for gestures_failed (5113829215530311557) -->
-    <skip />
-    <!-- no translation found for gestures_loading (6325241735907189384) -->
-    <skip />
-    <!-- no translation found for gestures_empty (8923837437173732411) -->
-    <skip />
-    <!-- no translation found for gestures_activity (3366108186921084558) -->
-    <skip />
-    <!-- no translation found for gestures_rename (713510200890627175) -->
-    <skip />
-    <!-- no translation found for gestures_delete (6962559975386260201) -->
-    <skip />
-    <!-- no translation found for gestures_delete_success (2961655691848002690) -->
-    <skip />
-    <!-- no translation found for gestures_rename_title (7463326669074661915) -->
-    <skip />
-    <!-- no translation found for gestures_rename_label (8790363956270703745) -->
-    <skip />
+    <string name="permdesc_uninstall_shortcut">"Permite que um aplicativo remova os atalhos sem a intervenção do usuário."</string>
+    <string name="permlab_read_settings">"ler configurações e atalhos da Página inicial"</string>
+    <string name="permdesc_read_settings">"Permite que um aplicativo leia as configurações e atalhos na Página inicial."</string>
+    <string name="permlab_write_settings">"gravar configurações e atalhos da Página inicial"</string>
+    <string name="permdesc_write_settings">"Permite que um aplicativo altere as configurações e atalhos na Página inicial."</string>
+    <string name="search_hint">"Pesquisa do Google"</string>
+    <string name="gadget_error_text">"Problema ao carregar o widget"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 317e9ba..dea57b3 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -16,17 +16,19 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Главный экран"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
     <string name="folder_name">"Папка"</string>
-    <string name="chooser_wallpaper">"Выбор фонового рисунка из"</string>
-    <string name="wallpaper_instructions">"Установить фоновый рисунок"</string>
-    <string name="pick_wallpaper">"Галерея фоновых рисунков"</string>
-    <string name="activity_not_found">"Это приложение отсутствует на вашем телефоне."</string>
+    <string name="chooser_wallpaper">"Выбрать обои из:"</string>
+    <string name="wallpaper_instructions">"Установить обои"</string>
+    <string name="pick_wallpaper">"Фотоальбом: обои"</string>
+    <string name="activity_not_found">"Приложение не установлено на телефоне."</string>
     <string name="rename_folder_label">"Название папки"</string>
-    <string name="rename_folder_title">"Переименование папки"</string>
+    <string name="rename_folder_title">"Переименовать папку"</string>
     <string name="rename_action">"ОК"</string>
     <string name="cancel_action">"Отмена"</string>
-    <string name="menu_item_add_item">"Добавление на главный экран"</string>
-    <string name="group_applications">"Программы"</string>
+    <string name="menu_item_add_item">"Добавить на главный экран"</string>
+    <string name="group_applications">"Приложения"</string>
     <string name="group_shortcuts">"Ярлыки"</string>
     <string name="group_search">"Поиск"</string>
     <string name="group_folder">"Новая папка"</string>
@@ -35,23 +37,31 @@
     <string name="group_wallpapers">"Обои"</string>
     <string name="add_folder">"Папка"</string>
     <string name="add_clock">"Часы"</string>
-    <string name="add_photo_frame">"Рамка для картинки"</string>
+    <string name="add_photo_frame">"Рамка фотографии"</string>
     <string name="add_search">"Поиск"</string>
-    <string name="out_of_space">"На главном экране больше нет места."</string>
+    <string name="out_of_space">"На этом главном экране нет свободного места."</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
+    <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
     <string name="title_select_shortcut">"Выберите ярлык"</string>
     <string name="title_select_live_folder">"Выбор папки"</string>
     <string name="menu_add">"Добавить"</string>
-    <string name="menu_wallpaper">"Фоновый рисунок"</string>
-    <string name="menu_search">"Искать"</string>
+    <string name="menu_wallpaper">"Обои"</string>
+    <string name="menu_search">"Поиск"</string>
     <string name="menu_notifications">"Уведомления"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
     <string name="menu_settings">"Настройки"</string>
-    <string name="permlab_install_shortcut">"установить ярлыки"</string>
-    <string name="permdesc_install_shortcut">"Позволяет приложению добавлять ярлыки без участия пользователя."</string>
-    <string name="permlab_uninstall_shortcut">"удалить ярлыки"</string>
-    <string name="permdesc_uninstall_shortcut">"Позволяет приложению удалять ярлыки без участия пользователя."</string>
-    <string name="permlab_read_settings">"считывать ярлыки и настройки главного экрана"</string>
+    <string name="permlab_install_shortcut">"устанавливать ярлыки"</string>
+    <string name="permdesc_install_shortcut">"Позволяет приложению добавлять ярлыки без вмешательства пользователя"</string>
+    <string name="permlab_uninstall_shortcut">"удалять ярлыки"</string>
+    <string name="permdesc_uninstall_shortcut">"Позволяет приложению удалять ярлыки без участия пользователя"</string>
+    <string name="permlab_read_settings">"считывать настройки и ярлыки главного экрана"</string>
     <string name="permdesc_read_settings">"Позволяет приложению считывать настройки и ярлыки на главном экране."</string>
-    <string name="permlab_write_settings">"записывать ярлыки и настройки главного экрана"</string>
+    <string name="permlab_write_settings">"изменять настройки и ярлыки главного экрана"</string>
     <string name="permdesc_write_settings">"Позволяет приложению изменять настройки и ярлыки на главном экране."</string>
     <string name="search_hint">"Поиск Google"</string>
     <string name="gadget_error_text">"Не удалось загрузить виджет"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
new file mode 100644
index 0000000..142ec0c
--- /dev/null
+++ b/res/values-sv/strings.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Start"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
+    <string name="folder_name">"Mapp"</string>
+    <string name="chooser_wallpaper">"Välj bakgrund från"</string>
+    <string name="wallpaper_instructions">"Ange bakgrund"</string>
+    <string name="pick_wallpaper">"Bakgrundsgalleri"</string>
+    <string name="activity_not_found">"Programmet är inte installerat på din telefon."</string>
+    <string name="rename_folder_label">"Mappnamn"</string>
+    <string name="rename_folder_title">"Byt namn på mapp"</string>
+    <string name="rename_action">"OK"</string>
+    <string name="cancel_action">"Avbryt"</string>
+    <string name="menu_item_add_item">"Lägg till på startsidan"</string>
+    <string name="group_applications">"Program"</string>
+    <string name="group_shortcuts">"Genvägar"</string>
+    <string name="group_search">"Sök"</string>
+    <string name="group_folder">"Ny mapp"</string>
+    <string name="group_live_folders">"Mappar"</string>
+    <string name="group_widgets">"Widgetar"</string>
+    <string name="group_wallpapers">"Bakgrundsbilder"</string>
+    <string name="add_folder">"Mapp"</string>
+    <string name="add_clock">"Klocka"</string>
+    <string name="add_photo_frame">"Bildram"</string>
+    <string name="add_search">"Sök"</string>
+    <string name="out_of_space">"Det finns inte plats för mer på den här startsidan."</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
+    <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
+    <string name="title_select_shortcut">"Välj genväg"</string>
+    <string name="title_select_live_folder">"Välj mapp"</string>
+    <string name="menu_add">"Lägg till"</string>
+    <string name="menu_wallpaper">"Bakgrund"</string>
+    <string name="menu_search">"Sök"</string>
+    <string name="menu_notifications">"Aviseringar"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
+    <string name="menu_settings">"Inställningar"</string>
+    <string name="permlab_install_shortcut">"installera genvägar"</string>
+    <string name="permdesc_install_shortcut">"Tillåter att ett program lägger till genvägar utan åtgärd från användaren."</string>
+    <string name="permlab_uninstall_shortcut">"avinstallera genvägar"</string>
+    <string name="permdesc_uninstall_shortcut">"Tillåter att ett program tar bort genvägar utan åtgärd från användaren."</string>
+    <string name="permlab_read_settings">"läsa inställningar och genvägar för startsidan"</string>
+    <string name="permdesc_read_settings">"Tillåter att ett program läser inställningar och genvägar på startsidan."</string>
+    <string name="permlab_write_settings">"skriva inställningar och genvägar för startsidan"</string>
+    <string name="permdesc_write_settings">"Tillåter att ett program ändrar inställningar och genvägar på startsidan."</string>
+    <string name="search_hint">"Google Sökning"</string>
+    <string name="gadget_error_text">"Det gick inte att läsa in widgeten"</string>
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
new file mode 100644
index 0000000..218e50a
--- /dev/null
+++ b/res/values-tr/strings.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Ana Sayfa"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
+    <string name="folder_name">"Klasör"</string>
+    <string name="chooser_wallpaper">"Buradan duvar kağıdını seçin:"</string>
+    <string name="wallpaper_instructions">"Duvar kağıdını ayarla"</string>
+    <string name="pick_wallpaper">"Duvar kağıdı galerisi"</string>
+    <string name="activity_not_found">"Uygulama telefonunuza yüklenmemiş."</string>
+    <string name="rename_folder_label">"Klasör adı"</string>
+    <string name="rename_folder_title">"Klasörü yeniden adlandır"</string>
+    <string name="rename_action">"Tamam"</string>
+    <string name="cancel_action">"İptal"</string>
+    <string name="menu_item_add_item">"Ana ekrana ekle"</string>
+    <string name="group_applications">"Uygulamalar"</string>
+    <string name="group_shortcuts">"Kısayollar"</string>
+    <string name="group_search">"Arama"</string>
+    <string name="group_folder">"Yeni klasör"</string>
+    <string name="group_live_folders">"Klasörler"</string>
+    <string name="group_widgets">"Widget\'lar"</string>
+    <string name="group_wallpapers">"Duvar Kağıtları"</string>
+    <string name="add_folder">"Klasör"</string>
+    <string name="add_clock">"Saat"</string>
+    <string name="add_photo_frame">"Resim çerçevesi"</string>
+    <string name="add_search">"Arama"</string>
+    <string name="out_of_space">"Bu Ana ekranda başka yer yok."</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
+    <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
+    <string name="title_select_shortcut">"Kısayolu seçin"</string>
+    <string name="title_select_live_folder">"Klasörü seçin"</string>
+    <string name="menu_add">"Ekle"</string>
+    <string name="menu_wallpaper">"Duvar Kağıdı"</string>
+    <string name="menu_search">"Ara"</string>
+    <string name="menu_notifications">"Bildirimler"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
+    <string name="menu_settings">"Ayarlar"</string>
+    <string name="permlab_install_shortcut">"kısayolları yükle"</string>
+    <string name="permdesc_install_shortcut">"Bir uygulamaya, kısayolları kullanıcı müdahale etmeden ekleme izni verir."</string>
+    <string name="permlab_uninstall_shortcut">"kısayolları kaldır"</string>
+    <string name="permdesc_uninstall_shortcut">"Bir uygulamaya, kısayolları kullanıcı müdahale etmeden kaldırma izni verir."</string>
+    <string name="permlab_read_settings">"Ana Sayfa ayarlarını ve kısayollarını oku"</string>
+    <string name="permdesc_read_settings">"Bir uygulamaya Ana Sayfadaki ayarları ve kısayolları okuma izni verir."</string>
+    <string name="permlab_write_settings">"Ana Sayfa ayarlarını ve kısayollarını yaz"</string>
+    <string name="permdesc_write_settings">"Bir uygulamaya Ana Sayfadaki ayarları ve kısayolları değiştirme izni verir."</string>
+    <string name="search_hint">"Google Arama"</string>
+    <string name="gadget_error_text">"Widget yüklenirken sorun oluştu"</string>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 7e359d6..fc53e54 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -15,51 +15,54 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="application_name">"主页"</string>
+    <string name="application_name">"主屏幕"</string>
+    <!-- no translation found for uid_name (3371120195364560632) -->
+    <skip />
     <string name="folder_name">"文件夹"</string>
-    <string name="chooser_wallpaper">"选择壁纸"</string>
+    <string name="chooser_wallpaper">"选择壁纸来源"</string>
     <string name="wallpaper_instructions">"设置壁纸"</string>
     <string name="pick_wallpaper">"壁纸图库"</string>
-    <string name="activity_not_found">"您的手机上没有安装应用程序。"</string>
-    <string name="rename_folder_label">"文件夹名"</string>
+    <string name="activity_not_found">"您的手机上未安装应用程序。"</string>
+    <string name="rename_folder_label">"文件夹名称"</string>
     <string name="rename_folder_title">"重命名文件夹"</string>
     <string name="rename_action">"确定"</string>
     <string name="cancel_action">"取消"</string>
-    <string name="menu_item_add_item">"添加到“主页”屏幕"</string>
-    <!-- no translation found for group_applications (4118484163419674240) -->
-    <skip />
-    <!-- no translation found for group_shortcuts (9133529424900391877) -->
-    <skip />
+    <string name="menu_item_add_item">"添加到主屏幕"</string>
+    <string name="group_applications">"应用程序"</string>
+    <string name="group_shortcuts">"快捷方式"</string>
     <string name="group_search">"搜索"</string>
-    <!-- no translation found for group_folder (5143593791798929193) -->
-    <skip />
-    <!-- no translation found for group_live_folders (2664945399140647217) -->
-    <skip />
-    <!-- no translation found for group_widgets (6704978494073105844) -->
-    <skip />
-    <!-- no translation found for group_wallpapers (1568191644272224858) -->
-    <skip />
+    <string name="group_folder">"新建文件夹"</string>
+    <string name="group_live_folders">"文件夹"</string>
+    <string name="group_widgets">"窗口小部件"</string>
+    <string name="group_wallpapers">"壁纸"</string>
     <string name="add_folder">"文件夹"</string>
     <string name="add_clock">"时钟"</string>
     <string name="add_photo_frame">"相框"</string>
     <string name="add_search">"搜索"</string>
-    <string name="out_of_space">"该“主页”屏幕上没有多余空间。"</string>
-    <string name="title_select_shortcut">"选择快捷键"</string>
-    <!-- no translation found for title_select_live_folder (3753447798805166749) -->
+    <string name="out_of_space">"此主屏幕上已没有更多空间。"</string>
+    <!-- no translation found for shortcut_installed (6623689857689040689) -->
     <skip />
+    <!-- no translation found for shortcut_uninstalled (2758997515869993129) -->
+    <skip />
+    <!-- no translation found for shortcut_duplicate (4887186782641532074) -->
+    <skip />
+    <string name="title_select_shortcut">"选择快捷方式"</string>
+    <string name="title_select_live_folder">"选择文件夹"</string>
     <string name="menu_add">"添加"</string>
     <string name="menu_wallpaper">"壁纸"</string>
     <string name="menu_search">"搜索"</string>
     <string name="menu_notifications">"通知"</string>
+    <!-- no translation found for menu_gestures (514678675575912237) -->
+    <skip />
     <string name="menu_settings">"设置"</string>
-    <string name="permlab_install_shortcut">"安装快捷键"</string>
-    <string name="permdesc_install_shortcut">"允许应用程序在没有用户介入的情况下添加快捷键。"</string>
-    <string name="permlab_uninstall_shortcut">"卸载快捷键"</string>
-    <string name="permdesc_uninstall_shortcut">"允许应用程序在没有用户介入的情况下删除快捷键。"</string>
-    <string name="permlab_read_settings">"读取“主页”设置和快捷键"</string>
-    <string name="permdesc_read_settings">"允许应用程序读取“主页”中的设置和快捷键。"</string>
-    <string name="permlab_write_settings">"写入“主页”设置和快捷键"</string>
-    <string name="permdesc_write_settings">"允许应用程序更改“主页”中的设置和快捷键。"</string>
+    <string name="permlab_install_shortcut">"安装快捷方式"</string>
+    <string name="permdesc_install_shortcut">"允许应用程序在无用户操作的情况下添加快捷方式。"</string>
+    <string name="permlab_uninstall_shortcut">"卸载快捷方式"</string>
+    <string name="permdesc_uninstall_shortcut">"允许应用程序在无用户操作的情况下删除快捷方式。"</string>
+    <string name="permlab_read_settings">"读取主屏幕设置和快捷方式"</string>
+    <string name="permdesc_read_settings">"允许应用程序读取主屏幕上的设置和快捷方式。"</string>
+    <string name="permlab_write_settings">"写入主屏幕设置和快捷方式"</string>
+    <string name="permdesc_write_settings">"允许应用程序更改主屏幕上的设置和快捷方式。"</string>
     <string name="search_hint">"Google 搜索"</string>
     <string name="gadget_error_text">"载入窗口小部件时出现问题"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 3da3b5b..18eb31d 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -16,6 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"首頁"</string>
+    <string name="uid_name">"Android 核心應用程式"</string>
     <string name="folder_name">"資料夾"</string>
     <string name="chooser_wallpaper">"從…選取桌布"</string>
     <string name="wallpaper_instructions">"設定桌布"</string>
@@ -38,12 +39,16 @@
     <string name="add_photo_frame">"相框"</string>
     <string name="add_search">"搜尋"</string>
     <string name="out_of_space">"首頁已無空間"</string>
+    <string name="shortcut_installed">"已安裝「%s」捷徑。"</string>
+    <string name="shortcut_uninstalled">"已移除「%s」捷徑"</string>
+    <string name="shortcut_duplicate">"已有「%s」捷徑。"</string>
     <string name="title_select_shortcut">"選取捷徑"</string>
     <string name="title_select_live_folder">"選取資料夾"</string>
     <string name="menu_add">"新增"</string>
     <string name="menu_wallpaper">"桌布"</string>
     <string name="menu_search">"搜尋"</string>
     <string name="menu_notifications">"通知"</string>
+    <string name="menu_gestures">"觸控動作"</string>
     <string name="menu_settings">"設定"</string>
     <string name="permlab_install_shortcut">"安裝捷徑"</string>
     <string name="permdesc_install_shortcut">"允許應用程式自動新增快速鍵。"</string>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index e1b4843..9b9700f 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -26,5 +26,6 @@
     <color name="appwidget_error_color">#FCCC</color>
     <color name="snag_callout_color">#F444</color>
 
-    <color name="gesture_color">#FFFFFF00</color>
+    <color name="gesture_color">#ff0563c1</color>
+    <color name="uncertain_gesture_color">#ff848484</color>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e43459d..2796171 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -75,7 +75,7 @@
     <!-- Error message when user has filled a home screen, possibly not used -->
     <string name="out_of_space">No more room on this Home screen.</string>
     <!-- Message displayed when a shortcut is created by an external application -->
-    <string name="shortcut_installed">Shortcut \"%s\" is installed.</string>
+    <string name="shortcut_installed">Shortcut \"%s\" created.</string>
     <!-- Message displayed when a shortcut is uninstalled by an external application -->
     <string name="shortcut_uninstalled">Shortcut \"%s\" was removed.</string>
     <!-- Message displayed when an external application attemps to create a shortcut that already exists -->
@@ -126,44 +126,4 @@
 
     <!-- Text to show user in place of a gadget when we can't display it properly -->
     <string name="gadget_error_text">Problem loading widget</string>
-
-    <!-- Gestures: -->
-    <skip />
-
-    <!-- Message displayed when the user enters gestures mode and is asked to draw a gesture -->
-    <string name="gestures_instructions">Draw a gesture</string>
-    <!-- Label of the button that the user clicks to create a new gesture-based shortcut -->
-    <string name="gestures_add">Add shortcut</string>
-    <!-- Label of the button that the user clicks to see the list of gesture-based shortcuts -->
-    <string name="gestures_show">Show shortcut</string>
-    <!-- Message displayed when the gesture entered by the user cannot be recognized -->
-    <string name="gestures_unknown">Unrecognized</string>
-    <!-- Message displayed when the user has successfully created a new gesture -->
-    <string name="gestures_created">Added gesture "%s"</string>
-    <!-- Message displayed when the user could not create a new gesture -->
-    <string name="gestures_failed">Gesture could not be created</string>
-    <!-- Message displayed when the user opens the gestures settings screen -->
-    <string name="gestures_loading">Loading gestures...</string>
-    <!-- Message displayed when the user has no gestures -->
-    <string name="gestures_empty">No gestures</string>
-    <!-- Title of the screen used to view/manage gestures -->
-    <string name="gestures_activity">Gestures</string>
-    <!-- Noun, menu item used to rename a gesture -->
-    <string name="gestures_rename">Rename</string>
-    <!-- Noun, menu item used to remove a gesture -->
-    <string name="gestures_delete">Delete</string>
-    <!-- Message displayed when a gesture is successfully deleted -->
-    <string name="gestures_delete_success">Gesture deleted</string>
-    <!-- Title of dialog box -->
-    <string name="gestures_rename_title">Rename gesture</string>
-    <!-- Label of gesture name field in Rename gesture dialog box -->
-    <string name="gestures_rename_label">Gesture name</string>
-    <!-- Title of the preferences group showing the user's gestures -->
-    <string name="gestures_group_gestures">Gestures</string>
-    <!-- Title of the preferences group showing the gestures settings -->
-    <string name="gestures_group_settings">Settings</string>
-    <!-- Label of the setting used to enable/disable the home key to draw gestures -->
-    <string name="gestures_preference_hotkey_title">Use home to launch</string>
-    <!-- Summary of the setting used to enable/disable the home key to draw gestures -->
-    <string name="gestures_preference_hotkey_summary">Press home key to draw gestures</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 5319bb0..6f4365f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -61,9 +61,4 @@
         <item name="android:paddingRight">10dip</item>
     </style>
 
-    <style name="PlusButton">
-        <item name="android:background">@drawable/btn_circle</item>
-        <item name="android:src">@drawable/ic_btn_round_plus</item>
-    </style>
-
 </resources>
diff --git a/res/xml/default_workspace.xml b/res/xml/default_workspace.xml
index 9197c30..60bfe82 100644
--- a/res/xml/default_workspace.xml
+++ b/res/xml/default_workspace.xml
@@ -42,12 +42,14 @@
         launcher:x="2"
         launcher:y="3" />
 
+<!--
     <favorite
         launcher:packageName="com.google.android.apps.maps"
         launcher:className="com.google.android.maps.MapsActivity"
         launcher:screen="1"
         launcher:x="3"
         launcher:y="3" />
+-->
 
     <favorite
         launcher:packageName="com.android.mms"
diff --git a/src/com/android/launcher/GesturesActivity.java b/src/com/android/launcher/GesturesActivity.java
deleted file mode 100644
index 3ea49e2..0000000
--- a/src/com/android/launcher/GesturesActivity.java
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * Copyright (C) 2009 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.
- */
-
-package com.android.launcher;
-
-import android.app.ListActivity;
-import android.app.Dialog;
-import android.app.AlertDialog;
-import android.os.Bundle;
-import android.os.AsyncTask;
-import android.widget.ArrayAdapter;
-import android.widget.TextView;
-import android.widget.AdapterView;
-import android.widget.Toast;
-import android.widget.EditText;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.res.Resources;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.LayoutInflater;
-import android.view.ContextMenu;
-import android.view.MenuItem;
-import android.gesture.GestureLibrary;
-import android.gesture.Gesture;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.BitmapDrawable;
-import android.text.TextUtils;
-
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Collections;
-import java.util.Map;
-
-public class GesturesActivity extends ListActivity {
-    private static final int MENU_ID_RENAME = 1;
-    private static final int MENU_ID_REMOVE = 2;
-
-    private static final int DIALOG_RENAME_GESTURE = 1;
-
-    // Type: long (id)
-    private static final String GESTURES_INFO_ID = "gestures.info_id";
-
-    private final Comparator<ApplicationInfo> mSorter =
-            new LauncherModel.ApplicationInfoComparator();
-
-    private GesturesAdapter mAdapter;
-    private GestureLibrary mStore;
-    private GesturesLoadTask mTask;
-    private TextView mEmpty;
-
-    private Dialog mRenameDialog;
-    private EditText mInput;
-    private ApplicationInfo mCurrentRenameInfo;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.gestures_settings);
-
-        mAdapter = new GesturesAdapter(this);
-        setListAdapter(mAdapter);
-
-        mStore = Launcher.getGestureLibrary();
-        mEmpty = (TextView) findViewById(android.R.id.empty);
-        mTask = (GesturesLoadTask) new GesturesLoadTask().execute();
-
-        registerForContextMenu(getListView());
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-
-        if (mTask != null && mTask.getStatus() != GesturesLoadTask.Status.FINISHED) {
-            mTask.cancel(true);
-            mTask = null;
-        }
-
-        cleanupRenameDialog();
-    }
-
-    private void checkForEmpty() {
-        if (mAdapter.getCount() == 0) {
-            mEmpty.setText(R.string.gestures_empty);
-        }
-    }
-
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-
-        if (mCurrentRenameInfo != null) {
-            outState.putLong(GESTURES_INFO_ID, mCurrentRenameInfo.id);
-        }
-    }
-
-    @Override
-    protected void onRestoreInstanceState(Bundle state) {
-        super.onRestoreInstanceState(state);
-
-        long id = state.getLong(GESTURES_INFO_ID, -1);
-        if (id != -1) {
-            mCurrentRenameInfo = Launcher.getModel().queryGesture(this, String.valueOf(id));
-        }
-    }
-
-    @Override
-    public void onCreateContextMenu(ContextMenu menu, View v,
-            ContextMenu.ContextMenuInfo menuInfo) {
-
-        super.onCreateContextMenu(menu, v, menuInfo);
-
-        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
-        menu.setHeaderTitle(((TextView) info.targetView).getText());
-
-        menu.add(0, MENU_ID_RENAME, 0, R.string.gestures_rename);
-        menu.add(0, MENU_ID_REMOVE, 0, R.string.gestures_delete);
-    }
-
-    @Override
-    public boolean onContextItemSelected(MenuItem item) {
-        final AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)
-                item.getMenuInfo();
-        final ApplicationInfo info = (ApplicationInfo) menuInfo.targetView.getTag();
-
-        switch (item.getItemId()) {
-            case MENU_ID_RENAME:
-                renameGesture(info);
-                return true;
-            case MENU_ID_REMOVE:
-                deleteGesture(info);
-                return true;
-        }
-
-        return super.onContextItemSelected(item);
-    }
-
-    private void renameGesture(ApplicationInfo info) {
-        mCurrentRenameInfo = info;
-        showDialog(DIALOG_RENAME_GESTURE);
-    }
-
-    @Override
-    protected Dialog onCreateDialog(int id) {
-        if (id == DIALOG_RENAME_GESTURE) {
-            return createRenameDialog();
-        }
-        return super.onCreateDialog(id);
-    }
-
-    @Override
-    protected void onPrepareDialog(int id, Dialog dialog) {
-        super.onPrepareDialog(id, dialog);
-        if (id == DIALOG_RENAME_GESTURE) {
-            mInput.setText(mCurrentRenameInfo.title);
-        }
-    }
-
-    private Dialog createRenameDialog() {
-        final View layout = View.inflate(this, R.layout.rename_folder, null);
-        mInput = (EditText) layout.findViewById(R.id.folder_name);
-        ((TextView) layout.findViewById(R.id.label)).setText(R.string.gestures_rename_label);
-
-        AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setIcon(0);
-        builder.setTitle(getString(R.string.gestures_rename_title));
-        builder.setCancelable(true);
-        builder.setOnCancelListener(new Dialog.OnCancelListener() {
-            public void onCancel(DialogInterface dialog) {
-                cleanupRenameDialog();
-            }
-        });
-        builder.setNegativeButton(getString(R.string.cancel_action),
-            new Dialog.OnClickListener() {
-                public void onClick(DialogInterface dialog, int which) {
-                    cleanupRenameDialog();
-                }
-            }
-        );
-        builder.setPositiveButton(getString(R.string.rename_action),
-            new Dialog.OnClickListener() {
-                public void onClick(DialogInterface dialog, int which) {
-                    changeGestureName();
-                }
-            }
-        );
-        builder.setView(layout);
-        return builder.create();
-    }
-
-    private void changeGestureName() {
-        final String name = mInput.getText().toString();
-        if (!TextUtils.isEmpty(name)) {
-            final ApplicationInfo renameInfo = mCurrentRenameInfo;
-            final GesturesActivity.GesturesAdapter adapter = mAdapter;
-            final int count = adapter.getCount();
-
-            // Simple linear search, there should not be enough items to warrant
-            // a more sophisticated search
-            for (int i = 0; i < count; i++) {
-                final ApplicationInfo info = adapter.getItem(i);
-                if (info.id == renameInfo.id) {
-                    info.title = mInput.getText();
-                    LauncherModel.updateGestureInDatabase(this, info);
-                    break;
-                }
-            }
-
-            adapter.notifyDataSetChanged();
-        }
-        mCurrentRenameInfo = null;
-    }
-
-    private void cleanupRenameDialog() {
-        if (mRenameDialog != null) {
-            mRenameDialog.dismiss();
-            mRenameDialog = null;
-        }
-        mCurrentRenameInfo = null;
-    }
-
-    private void deleteGesture(ApplicationInfo info) {
-        mStore.removeEntry(String.valueOf(info.id));
-        // TODO: On a thread?
-        mStore.save();
-
-        final GesturesActivity.GesturesAdapter adapter = mAdapter;
-        adapter.setNotifyOnChange(false);
-        adapter.remove(info);
-        adapter.sort(mSorter);
-        checkForEmpty();
-        adapter.notifyDataSetChanged();
-
-        LauncherModel.deleteGestureFromDatabase(this, info);
-
-        Toast.makeText(this, R.string.gestures_delete_success, Toast.LENGTH_SHORT).show();
-    }
-
-    private class GesturesLoadTask extends AsyncTask<Void, ApplicationInfo, Boolean> {
-        private int mThumbnailSize;
-        private int mThumbnailInset;
-        private int mPathColor;
-
-        @Override
-        protected void onPreExecute() {
-            super.onPreExecute();
-
-            final Resources resources = getResources();
-            mPathColor = resources.getColor(R.color.gesture_color);
-            mThumbnailInset = (int) resources.getDimension(R.dimen.gesture_thumbnail_inset);
-            mThumbnailSize = (int) resources.getDimension(R.dimen.gesture_thumbnail_size);
-        }
-
-        protected Boolean doInBackground(Void... params) {
-            if (isCancelled()) return Boolean.FALSE;
-
-            final GestureLibrary store = mStore;
-
-            if (store.load()) {
-                final LauncherModel model = Launcher.getModel();
-
-                for (String name : store.getGestureEntries()) {
-                    if (isCancelled()) break;
-
-                    final Gesture gesture = store.getGestures(name).get(0);
-                    final Bitmap bitmap = gesture.toBitmap(mThumbnailSize, mThumbnailSize,
-                            mThumbnailInset, mPathColor);
-                    final ApplicationInfo info = model.queryGesture(GesturesActivity.this, name);
-
-                    mAdapter.addBitmap(info.id, bitmap);
-                    publishProgress(info);
-                }
-
-                return Boolean.TRUE;
-            }
-
-            return Boolean.FALSE;
-        }
-
-        @Override
-        protected void onProgressUpdate(ApplicationInfo... values) {
-            super.onProgressUpdate(values);
-
-            final GesturesActivity.GesturesAdapter adapter = mAdapter;
-            adapter.setNotifyOnChange(false);
-
-            for (ApplicationInfo info : values) {
-                adapter.add(info);
-            }
-
-            adapter.sort(mSorter);
-            adapter.notifyDataSetChanged();
-        }
-
-        @Override
-        protected void onPostExecute(Boolean aBoolean) {
-            super.onPostExecute(aBoolean);
-            checkForEmpty();
-        }
-    }
-
-    private class GesturesAdapter extends ArrayAdapter<ApplicationInfo> {
-        private final LayoutInflater mInflater;
-        private final Map<Long, Drawable> mThumbnails = Collections.synchronizedMap(
-                new HashMap<Long, Drawable>());
-
-        public GesturesAdapter(Context context) {
-            super(context, 0);
-            mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        }
-
-        void addBitmap(Long id, Bitmap bitmap) {
-            mThumbnails.put(id, new BitmapDrawable(bitmap));
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = mInflater.inflate(R.layout.gestures_settings_item, parent, false);
-            }
-
-            final ApplicationInfo info = getItem(position);
-            final TextView label = (TextView) convertView;
-
-            label.setTag(info);
-            label.setText(info.title);
-            label.setCompoundDrawablesWithIntrinsicBounds(info.icon, null,
-                    mThumbnails.get(info.id), null);
-
-            return convertView;
-        }
-    }
-}
diff --git a/src/com/android/launcher/GesturesConstants.java b/src/com/android/launcher/GesturesConstants.java
deleted file mode 100644
index 3151ea3..0000000
--- a/src/com/android/launcher/GesturesConstants.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2009 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.
- */
-
-package com.android.launcher;
-
-interface GesturesConstants {
-    final double PREDICTION_THRESHOLD = 1.0;
-    final String STORE_NAME = "gestures";
-    final long MATCH_DELAY = 370;
-    final float LENGTH_THRESHOLD = 120.0f;
-    int PATH_SAMPLE_COUNT = 10;
-}
diff --git a/src/com/android/launcher/GesturesPanel.java b/src/com/android/launcher/GesturesPanel.java
deleted file mode 100644
index 33dc102..0000000
--- a/src/com/android/launcher/GesturesPanel.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2009 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.
- */
-
-package com.android.launcher;
-
-import android.widget.RelativeLayout;
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.KeyEvent;
-
-public class GesturesPanel extends RelativeLayout {
-    public GesturesPanel(Context context) {
-        super(context);
-    }
-
-    public GesturesPanel(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    public boolean isOpaque() {
-        return true;
-    }
-
-    @Override
-    public boolean dispatchKeyEvent(KeyEvent event) {
-        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK &&
-                event.getAction() == KeyEvent.ACTION_DOWN) {
-
-            ((Launcher) mContext).hideGesturesPanel();
-
-            return true;
-        }
-
-        return super.dispatchKeyEvent(event);
-    }
-}
diff --git a/src/com/android/launcher/Launcher.java b/src/com/android/launcher/Launcher.java
index 8863bd9..f1af0b1 100644
--- a/src/com/android/launcher/Launcher.java
+++ b/src/com/android/launcher/Launcher.java
@@ -41,8 +41,6 @@
 import android.database.ContentObserver;
 import android.graphics.Bitmap;
 import android.graphics.Rect;
-import android.graphics.PorterDuffXfermode;
-import android.graphics.PorterDuff;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.TransitionDrawable;
@@ -68,8 +66,6 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.MotionEvent;
-import android.view.Gravity;
 import android.view.View.OnLongClickListener;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
@@ -77,16 +73,8 @@
 import android.widget.SlidingDrawer;
 import android.widget.TextView;
 import android.widget.Toast;
-import android.widget.ImageView;
-import android.widget.PopupWindow;
-import android.widget.ViewSwitcher;
 import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetProviderInfo;
-import android.gesture.GestureOverlayView;
-import android.gesture.GestureLibraries;
-import android.gesture.GestureLibrary;
-import android.gesture.Gesture;
-import android.gesture.Prediction;
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
@@ -107,9 +95,6 @@
     private static final boolean PROFILE_DRAWER = false;
     private static final boolean PROFILE_ROTATE = false;
     private static final boolean DEBUG_USER_INTERFACE = false;
-    private static final boolean DEBUG_GESTURES = false;
-
-    private static final boolean CONFIG_GESTURES_IMMEDIATE_MODE = true;
 
     private static final int WALLPAPER_SCREENS_SPAN = 2;
 
@@ -118,8 +103,7 @@
     private static final int MENU_WALLPAPER_SETTINGS = MENU_ADD + 1;
     private static final int MENU_SEARCH = MENU_WALLPAPER_SETTINGS + 1;
     private static final int MENU_NOTIFICATIONS = MENU_SEARCH + 1;
-    private static final int MENU_GESTURES = MENU_NOTIFICATIONS + 1;
-    private static final int MENU_SETTINGS = MENU_GESTURES + 1;
+    private static final int MENU_SETTINGS = MENU_NOTIFICATIONS + 1;
 
     private static final int REQUEST_CREATE_SHORTCUT = 1;
     private static final int REQUEST_CREATE_LIVE_FOLDER = 4;
@@ -128,9 +112,6 @@
     private static final int REQUEST_PICK_SHORTCUT = 7;
     private static final int REQUEST_PICK_LIVE_FOLDER = 8;
     private static final int REQUEST_PICK_APPWIDGET = 9;
-    private static final int REQUEST_PICK_GESTURE_ACTION = 10;
-    private static final int REQUEST_CREATE_GESTURE_ACTION = 11;
-    private static final int REQUEST_CREATE_GESTURE_APPLICATION_ACTION = 12;
 
     static final String EXTRA_SHORTCUT_DUPLICATE = "duplicate";
 
@@ -173,12 +154,6 @@
     private static final String RUNTIME_STATE_PENDING_FOLDER_RENAME = "launcher.rename_folder";
     // Type: long
     private static final String RUNTIME_STATE_PENDING_FOLDER_RENAME_ID = "launcher.rename_folder_id";
-    // Type: Gesture (Parcelable)
-    private static final String RUNTIME_STATE_PENDING_GESTURE = "launcher.gesture";
-    // Type: boolean
-    private static final String RUNTIME_STATE_GESTURES_PANEL = "launcher.gesture_panel_showing";
-    // Type: Gesture (Parcelable)
-    private static final String RUNTIME_STATE_GESTURES_PANEL_GESTURE = "launcher.gesture_panel_gesture";
 
     private static final LauncherModel sModel = new LauncherModel();
 
@@ -189,8 +164,6 @@
 
     private static WallpaperIntentReceiver sWallpaperReceiver;
 
-    private static GestureLibrary sLibrary;
-
     private final BroadcastReceiver mApplicationsReceiver = new ApplicationsIntentReceiver();
     private final ContentObserver mObserver = new FavoritesChangeObserver();
 
@@ -227,31 +200,18 @@
     private boolean mWaitingForResult;
     private boolean mLocaleChanged;
 
+    private boolean mHomeDown;
+    private boolean mBackDown;
+    
     private Bundle mSavedInstanceState;
 
     private DesktopBinder mBinder;
 
-    private View mGesturesPanel;
-    private GestureOverlayView mGesturesOverlay;
-    private ViewSwitcher mGesturesPrompt;
-    private ImageView mGesturesAdd;
-    private PopupWindow mGesturesWindow;
-    private Launcher.GesturesProcessor mGesturesProcessor;
-    private Gesture mCurrentGesture;
-    private GesturesAction mGesturesAction;
-    private boolean mHideGesturesPanel;
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mInflater = getLayoutInflater();
 
-        if (sLibrary == null) {
-            // The context is not kept by the library so it's safe to do this
-            sLibrary = GestureLibraries.fromPrivateFile(Launcher.this,
-                    GesturesConstants.STORE_NAME);
-        }
-
         mAppWidgetManager = AppWidgetManager.getInstance(this);
 
         mAppWidgetHost = new LauncherAppWidgetHost(this, APPWIDGET_HOST_ID);
@@ -409,11 +369,7 @@
         // For example, the user would PICK_SHORTCUT for "Music playlist", and we
         // launch over to the Music app to actually CREATE_SHORTCUT.
 
-        if (resultCode == RESULT_OK && (mAddItemCellInfo != null ||
-                ((requestCode == REQUEST_PICK_GESTURE_ACTION ||
-                requestCode == REQUEST_CREATE_GESTURE_ACTION ||
-                requestCode == REQUEST_CREATE_GESTURE_APPLICATION_ACTION) && mCurrentGesture != null))) {
-
+        if (resultCode == RESULT_OK && mAddItemCellInfo != null) {
             switch (requestCode) {
                 case REQUEST_PICK_APPLICATION:
                     completeAddApplication(this, data, mAddItemCellInfo, !mDesktopLocked);
@@ -436,16 +392,6 @@
                 case REQUEST_CREATE_APPWIDGET:
                     completeAddAppWidget(data, mAddItemCellInfo, !mDesktopLocked);
                     break;
-                case REQUEST_PICK_GESTURE_ACTION:
-                    processShortcut(data, REQUEST_CREATE_GESTURE_APPLICATION_ACTION,
-                            REQUEST_CREATE_GESTURE_ACTION);
-                    break;
-                case REQUEST_CREATE_GESTURE_ACTION:
-                    completeCreateGesture(data, true);
-                    break;
-                case REQUEST_CREATE_GESTURE_APPLICATION_ACTION:
-                    completeCreateGesture(data, false);
-                    break;
             }
         } else if (requestCode == REQUEST_PICK_APPWIDGET &&
                 resultCode == RESULT_CANCELED && data != null) {
@@ -490,23 +436,10 @@
     @Override
     protected void onPause() {
         super.onPause();
-        if (mGesturesWindow != null) {
-            mGesturesWindow.setAnimationStyle(0);
-            mGesturesWindow.update();
-        }
         closeDrawer(false);
     }
 
     @Override
-    protected void onStop() {
-        super.onStop();
-        if (mHideGesturesPanel) {
-            mHideGesturesPanel = false;
-            hideGesturesPanel();
-        }
-    }
-
-    @Override
     public Object onRetainNonConfigurationInstance() {
         // Flag any binder to stop early before switching
         if (mBinder != null) {
@@ -593,29 +526,6 @@
             mFolderInfo = sModel.getFolderById(this, id);
             mRestoring = true;
         }
-
-        mCurrentGesture = (Gesture) savedState.get(RUNTIME_STATE_PENDING_GESTURE);
-
-        boolean gesturesShowing = savedState.getBoolean(RUNTIME_STATE_GESTURES_PANEL, false);
-        if (gesturesShowing) {
-            if (mCurrentGesture == null) {
-                mCurrentGesture = (Gesture) savedState.get(RUNTIME_STATE_GESTURES_PANEL_GESTURE);
-            }
-            final Gesture gesture = mCurrentGesture;
-            mWorkspace.post(new Runnable() {
-                public void run() {
-                    showGesturesPanel(false);
-                    mGesturesProcessor.matchGesture(gesture, false);
-                    mWorkspace.post(new Runnable() {
-                        public void run() {
-                            if (gesture != null) {
-                                mGesturesOverlay.setGesture(gesture);
-                            }
-                        }
-                    });
-                }
-            });
-        }
     }
 
     /**
@@ -663,69 +573,6 @@
         dragLayer.setIgnoredDropTarget(grid);
         dragLayer.setDragScoller(workspace);
         dragLayer.setDragListener(deleteZone);
-
-        mGesturesPanel = mInflater.inflate(R.layout.gestures, mDragLayer, false);
-        final View gesturesPanel = mGesturesPanel;
-
-        mGesturesPrompt = (ViewSwitcher) gesturesPanel.findViewById(R.id.gestures_actions);
-        mGesturesAction = new GesturesAction();
-
-        mGesturesPrompt.getChildAt(0).setOnClickListener(mGesturesAction);
-        mGesturesPrompt.getChildAt(1).setOnClickListener(mGesturesAction);
-
-        mGesturesAdd = (ImageView) gesturesPanel.findViewById(R.id.gestures_add);
-        final ImageView gesturesAdd = mGesturesAdd;
-        gesturesAdd.setAlpha(128);
-        gesturesAdd.setEnabled(false);
-        gesturesAdd.setOnClickListener(new View.OnClickListener() {
-            public void onClick(View v) {
-                createGesture();
-            }
-        });
-
-        mGesturesOverlay = (GestureOverlayView) gesturesPanel.findViewById(R.id.gestures_overlay);
-        mGesturesProcessor = new GesturesProcessor();
-
-        final GestureOverlayView overlay = mGesturesOverlay;
-        overlay.addOnGestureListener(mGesturesProcessor);
-        overlay.getGesturePaint().setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));
-    }
-
-    private void createGesture() {
-        if (!mWaitingForResult) {
-            mCurrentGesture = mGesturesOverlay.getGesture();
-            mWaitingForResult = true;
-            pickShortcut(REQUEST_PICK_GESTURE_ACTION, R.string.title_select_shortcut);
-        }
-    }
-
-    private void completeCreateGesture(Intent data, boolean isShortcut) {
-        ApplicationInfo info;
-
-        if (isShortcut) {
-            info = infoFromShortcutIntent(this, data);
-        } else {
-            info = infoFromApplicationIntent(this, data);
-        }
-
-        boolean success = false;
-        if (info != null) {
-            info.isGesture = true;
-
-            if (LauncherModel.addGestureToDatabase(this, info, false)) {
-                mGesturesProcessor.addGesture(String.valueOf(info.id), mCurrentGesture);
-                mGesturesProcessor.update(info, mCurrentGesture);
-                Toast.makeText(this, getString(R.string.gestures_created, info.title),
-                        Toast.LENGTH_SHORT).show();
-                success = true;
-            }
-        }
-
-        if (!success) {
-            Toast.makeText(this, getString(R.string.gestures_failed), Toast.LENGTH_SHORT).show();
-        }
-
-        mCurrentGesture = null;
     }
 
     /**
@@ -976,17 +823,10 @@
             if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) !=
                     Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) {
 
-                if (mGesturesPanel != null && mDragLayer.getWindowVisibility() == View.VISIBLE &&
-                        (mDragLayer.hasWindowFocus() ||
-                                (mGesturesWindow != null && mGesturesWindow.isShowing()))) {
-
-                    SearchManager searchManager =
-                            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
-
-                    if (!searchManager.isVisible()) {
-                        onHomeKeyPressed();
-                    }
+                if (!mWorkspace.isDefaultScreenShowing()) {
+                    mWorkspace.moveToDefaultScreen();
                 }
+
                 closeDrawer();
 
                 final View v = getWindow().peekDecorView();
@@ -1001,91 +841,6 @@
         }
     }
 
-    private void onHomeKeyPressed() {
-        if (mGesturesWindow == null || !mGesturesWindow.isShowing()) {
-            showGesturesPanel();
-        } else {
-            hideGesturesPanel();
-        }
-    }
-
-    private void showGesturesPanel() {
-        showGesturesPanel(true);
-    }
-
-    private void showGesturesPanel(boolean animate) {
-        resetGesturesPrompt();
-
-        mGesturesAdd.setEnabled(false);
-        mGesturesAdd.setAlpha(128);
-
-        mGesturesOverlay.clear(false);
-
-        PopupWindow window;
-        if (mGesturesWindow == null) {
-            mGesturesWindow = new PopupWindow(this);
-            window = mGesturesWindow;
-            window.setFocusable(true);
-            window.setTouchable(true);
-            window.setBackgroundDrawable(null);
-            window.setContentView(mGesturesPanel);
-        } else {
-            window = mGesturesWindow;
-        }
-        window.setAnimationStyle(animate ? com.android.internal.R.style.Animation_SlidingCard : 0);
-
-        final int[] xy = new int[2];
-        final DragLayer dragLayer = mDragLayer;
-        dragLayer.getLocationOnScreen(xy);
-
-        window.setWidth(dragLayer.getWidth());
-        window.setHeight(dragLayer.getHeight() - 1);
-        window.showAtLocation(dragLayer, Gravity.TOP | Gravity.LEFT, xy[0], xy[1] + 1);
-    }
-
-    private void resetGesturesPrompt() {
-        mGesturesAction.intent = null;
-        final TextView prompt = (TextView) mGesturesPrompt.getCurrentView();
-        prompt.setText(R.string.gestures_instructions);
-        prompt.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
-        prompt.setClickable(false);
-    }
-
-    private void resetGesturesNextPrompt() {
-        mGesturesAction.intent = null;
-        setGesturesNextPrompt(null, getString(R.string.gestures_instructions));
-        mGesturesPrompt.getNextView().setClickable(false);
-    }
-
-    private void setGesturesNextPrompt(Drawable icon, CharSequence title) {
-        final TextView prompt = (TextView) mGesturesPrompt.getNextView();
-        prompt.setText(title);
-        prompt.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
-        prompt.setClickable(true);
-        mGesturesPrompt.showNext();
-    }
-
-    private void setGesturesPrompt(Drawable icon, CharSequence title) {
-        final TextView prompt = (TextView) mGesturesPrompt.getCurrentView();
-        prompt.setText(title);
-        prompt.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
-        prompt.setClickable(true);
-    }
-
-    void hideGesturesPanel() {
-        hideGesturesPanel(true);
-    }
-
-    void hideGesturesPanel(boolean animate) {
-        if (mGesturesWindow != null) {
-            final PopupWindow popupWindow = mGesturesWindow;
-            popupWindow.setAnimationStyle(animate ?
-                    com.android.internal.R.style.Animation_SlidingCard : 0);
-            popupWindow.update();
-            popupWindow.dismiss();
-        }
-    }
-
     @Override
     protected void onRestoreInstanceState(Bundle savedInstanceState) {
         // Do not call super here
@@ -1136,21 +891,6 @@
             outState.putBoolean(RUNTIME_STATE_PENDING_FOLDER_RENAME, true);
             outState.putLong(RUNTIME_STATE_PENDING_FOLDER_RENAME_ID, mFolderInfo.id);
         }
-
-        if (mCurrentGesture != null && mWaitingForResult) {
-            outState.putParcelable(RUNTIME_STATE_PENDING_GESTURE, mCurrentGesture);
-        }
-
-        if (mGesturesWindow != null && mGesturesWindow.isShowing()) {
-            outState.putBoolean(RUNTIME_STATE_GESTURES_PANEL, true);
-
-            if (mCurrentGesture == null || !mWaitingForResult) {
-                final Gesture gesture = mGesturesOverlay.getGesture();
-                if (gesture != null) {
-                    outState.putParcelable(RUNTIME_STATE_GESTURES_PANEL_GESTURE, gesture);
-                }
-            }
-        }
     }
 
     @Override
@@ -1167,7 +907,6 @@
 
         TextKeyListener.getInstance().release();
 
-        hideGesturesPanel(false);
         mAllAppsGrid.clearTextFilter();
         mAllAppsGrid.setAdapter(null);
         sModel.unbind();
@@ -1270,11 +1009,6 @@
                 .setIcon(com.android.internal.R.drawable.ic_menu_notifications)
                 .setAlphabeticShortcut('N');
 
-        final Intent gestures = new Intent(this, GesturesActivity.class);
-        menu.add(0, MENU_GESTURES, 0, R.string.menu_gestures)
-                .setIcon(com.android.internal.R.drawable.ic_menu_compose).setAlphabeticShortcut('G')
-                .setIntent(gestures);
-
         final Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);
         settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
                 Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
@@ -1574,18 +1308,39 @@
     }
 
     @Override
+    public void onWindowFocusChanged(boolean hasFocus) {
+        super.onWindowFocusChanged(hasFocus);
+        if (!hasFocus) {
+            mBackDown = mHomeDown = false;
+        }
+    }
+
+    @Override
     public boolean dispatchKeyEvent(KeyEvent event) {
         if (event.getAction() == KeyEvent.ACTION_DOWN) {
             switch (event.getKeyCode()) {
                 case KeyEvent.KEYCODE_BACK:
-                    mWorkspace.dispatchKeyEvent(event);
-                    if (mDrawer.isOpened()) {
-                        closeDrawer();
-                    } else {
-                        closeFolder();
-                    }
+                    mBackDown = true;
                     return true;
                 case KeyEvent.KEYCODE_HOME:
+                    mHomeDown = true;
+                    return true;
+            }
+        } else if (event.getAction() == KeyEvent.ACTION_UP) {
+            switch (event.getKeyCode()) {
+                case KeyEvent.KEYCODE_BACK:
+                    if (!event.isCanceled()) {
+                        mWorkspace.dispatchKeyEvent(event);
+                        if (mDrawer.isOpened()) {
+                            closeDrawer();
+                        } else {
+                            closeFolder();
+                        }
+                    }
+                    mBackDown = false;
+                    return true;
+                case KeyEvent.KEYCODE_HOME:
+                    mHomeDown = false;
                     return true;
             }
         }
@@ -1839,7 +1594,6 @@
     }
 
     void startActivitySafely(Intent intent) {
-        mHideGesturesPanel = true;
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         try {
             startActivity(intent);
@@ -1966,10 +1720,6 @@
         return sModel;
     }
 
-    static GestureLibrary getGestureLibrary() {
-        return sLibrary;
-    }
-
     void closeAllApplications() {
         mDrawer.close();
     }
@@ -2014,14 +1764,14 @@
     protected void onPrepareDialog(int id, Dialog dialog) {
         switch (id) {
             case DIALOG_CREATE_SHORTCUT:
-                mWorkspace.lock();
                 break;
             case DIALOG_RENAME_FOLDER:
-                mWorkspace.lock();
-                EditText input = (EditText) dialog.findViewById(R.id.folder_name);
-                final CharSequence text = mFolderInfo.title;
-                input.setText(text);
-                input.setSelection(0, text.length());
+                if (mFolderInfo != null) {
+                    EditText input = (EditText) dialog.findViewById(R.id.folder_name);
+                    final CharSequence text = mFolderInfo.title;
+                    input.setText(text);
+                    input.setSelection(0, text.length());
+                }
                 break;
         }
     }
@@ -2090,7 +1840,15 @@
                 }
             );
             builder.setView(layout);
-            return builder.create();
+
+            final AlertDialog dialog = builder.create();
+            dialog.setOnShowListener(new DialogInterface.OnShowListener() {
+                public void onShow(DialogInterface dialog) {
+                    mWorkspace.lock();
+                }
+            });
+
+            return dialog;
         }
 
         private void changeFolderName() {
@@ -2133,7 +1891,9 @@
      * appropriate activity.
      */
     private class CreateShortcut implements DialogInterface.OnClickListener,
-            DialogInterface.OnCancelListener, DialogInterface.OnDismissListener {
+            DialogInterface.OnCancelListener, DialogInterface.OnDismissListener,
+            DialogInterface.OnShowListener {
+
         private AddAdapter mAdapter;
 
         Dialog createDialog() {
@@ -2150,6 +1910,7 @@
             AlertDialog dialog = builder.create();
             dialog.setOnCancelListener(this);
             dialog.setOnDismissListener(this);
+            dialog.setOnShowListener(this);
 
             return dialog;
         }
@@ -2239,6 +2000,10 @@
                 }
             }
         }
+
+        public void onShow(DialogInterface dialog) {
+            mWorkspace.lock();
+        }
     }
 
     /**
@@ -2479,160 +2244,4 @@
             }
         }
     }
-
-    private class GesturesProcessor implements GestureOverlayView.OnGestureListener,
-            GestureOverlayView.OnGesturePerformedListener {
-
-        private final GestureMatcher mMatcher = new GestureMatcher();
-
-        GesturesProcessor() {
-            // TODO: Maybe the load should happen on a background thread?
-            sLibrary.load();
-        }
-
-        public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
-            //noinspection PointlessBooleanExpression,ConstantConditions
-            if (!CONFIG_GESTURES_IMMEDIATE_MODE) {
-                overlay.removeCallbacks(mMatcher);
-                resetGesturesNextPrompt();
-            }
-
-            mGesturesAdd.setAlpha(128);
-            mGesturesAdd.setEnabled(false);
-        }
-
-        public void onGesture(GestureOverlayView overlay, MotionEvent event) {
-        }
-
-        public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
-        }
-
-        public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
-            if (CONFIG_GESTURES_IMMEDIATE_MODE) {
-                mMatcher.gesture = overlay.getGesture();
-                if (mMatcher.gesture.getLength() < GesturesConstants.LENGTH_THRESHOLD) {
-                    overlay.clear(false);
-                    if (mGesturesAction.intent != null) {
-                        mGesturesAction.intent = null;
-                        setGesturesNextPrompt(null, getString(R.string.gestures_unknown));
-                    }
-                } else {
-                    mMatcher.run();
-                }
-            } else {
-                overlay.removeCallbacks(mMatcher);
-
-                mMatcher.gesture = overlay.getGesture();
-                if (mMatcher.gesture.getLength() < GesturesConstants.LENGTH_THRESHOLD) {
-                    overlay.clear(false);
-                    if (mGesturesAction.intent != null) {
-                        mGesturesAction.intent = null;
-                        setGesturesNextPrompt(null, getString(R.string.gestures_unknown));
-                    }
-                } else {
-                    overlay.postDelayed(mMatcher, GesturesConstants.MATCH_DELAY);
-                }
-            }
-        }
-
-        void matchGesture(Gesture gesture) {
-            matchGesture(gesture, true);
-        }
-
-        void matchGesture(Gesture gesture, boolean animate) {
-            mGesturesAdd.setAlpha(255);
-            mGesturesAdd.setEnabled(true);
-
-            if (gesture != null) {
-                final ArrayList<Prediction> predictions = sLibrary.recognize(gesture);
-
-                if (DEBUG_GESTURES) {
-                    for (Prediction p : predictions) {
-                        d(LOG_TAG, String.format("name=%s, score=%f", p.name, p.score));
-                    }
-                }
-
-                boolean match = false;
-                if (predictions.size() > 0) {
-                    final Prediction prediction = predictions.get(0);
-                    if (prediction.score > GesturesConstants.PREDICTION_THRESHOLD) {
-                        match = true;
-
-                        ApplicationInfo info = sModel.queryGesture(Launcher.this, prediction.name);
-                        if (info != null) {
-                            updatePrompt(info, animate);
-                        }
-                    }
-                }
-
-                if (!match){
-                    mGesturesAction.intent = null;
-                    if (animate) {
-                        setGesturesNextPrompt(null, getString(R.string.gestures_unknown));
-                    } else {
-                        setGesturesPrompt(null, getString(R.string.gestures_unknown));
-                    }
-                }
-            }
-        }
-
-        private void updatePrompt(ApplicationInfo info) {
-            updatePrompt(info, true);
-        }
-
-        private void updatePrompt(ApplicationInfo info, boolean animate) {
-            if (mGesturesAction.intent != null &&
-                    info.intent.toUri(0).equals(mGesturesAction.intent.toUri(0)) &&
-                    info.title.equals(((TextView) mGesturesPrompt.getCurrentView()).getText())) {
-                return;
-            }
-
-            if (animate) {
-                setGesturesNextPrompt(info.icon, info.title);
-            } else {
-                setGesturesPrompt(info.icon, info.title);
-            }
-
-            mGesturesAction.intent = info.intent;
-        }
-
-        public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
-            //noinspection PointlessBooleanExpression,ConstantConditions
-            if (!CONFIG_GESTURES_IMMEDIATE_MODE) {
-                overlay.removeCallbacks(mMatcher);
-            }
-        }
-
-        void addGesture(String name, Gesture gesture) {
-            sLibrary.addGesture(name, gesture);
-            // TODO: On a background thread?
-            sLibrary.save();
-        }
-
-        void update(ApplicationInfo info, Gesture gesture) {
-            mGesturesOverlay.setGesture(gesture);
-            updatePrompt(info);
-        }
-
-        class GestureMatcher implements Runnable {
-            Gesture gesture;
-
-            public void run() {
-                if (gesture != null) {
-                    matchGesture(gesture);
-                }
-            }
-        }
-    }
-
-    private class GesturesAction implements View.OnClickListener {
-        Intent intent;
-
-        public void onClick(View v) {
-            if (intent != null) {
-                startActivitySafely(intent);
-            }
-        }
-    }
 }
-
diff --git a/src/com/android/launcher/Search.java b/src/com/android/launcher/Search.java
index 96c0022..a0402a9 100644
--- a/src/com/android/launcher/Search.java
+++ b/src/com/android/launcher/Search.java
@@ -16,13 +16,20 @@
 
 package com.android.launcher;
 
+import android.app.SearchManager;
 import android.content.ActivityNotFoundException;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.server.search.SearchableInfo;
+import android.server.search.Searchables;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -68,6 +75,10 @@
 
     // For voice searching
     private Intent mVoiceSearchIntent;
+    
+    private Drawable mGooglePlaceholder;
+    
+    private SearchManager mSearchManager;
 
     /**
      * Used to inflate the Workspace from XML.
@@ -129,6 +140,8 @@
         mVoiceSearchIntent = new Intent(android.speech.RecognizerIntent.ACTION_WEB_SEARCH);
         mVoiceSearchIntent.putExtra(android.speech.RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                 android.speech.RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
+        
+        mSearchManager = (SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE);
     }
 
     /**
@@ -293,6 +306,10 @@
 
         mSearchText = (TextView) findViewById(R.id.search_src_text);
         mVoiceButton = (ImageButton) findViewById(R.id.search_voice_btn);
+        
+        mGooglePlaceholder = getContext().getResources().getDrawable(R.drawable.placeholder_google);
+        mContext.registerReceiver(mBroadcastReceiver,
+                new IntentFilter(SearchManager.INTENT_ACTION_SEARCH_SETTINGS_CHANGED));
 
         mSearchText.setOnKeyListener(this);
 
@@ -304,6 +321,13 @@
         mVoiceButton.setOnLongClickListener(this);
 
         configureVoiceSearchButton();
+        setUpTextField();
+    }
+    
+    @Override
+    public void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        if (mBroadcastReceiver != null) getContext().unregisterReceiver(mBroadcastReceiver);
     }
 
     /**
@@ -323,6 +347,28 @@
         // finally, set visible state of voice search button, as appropriate
         mVoiceButton.setVisibility(voiceSearchVisible ? View.VISIBLE : View.GONE);
     }
+    
+    /**
+     * Sets up the look of the text field. If Google is the chosen search provider, includes
+     * a Google logo as placeholder.
+     */
+    private void setUpTextField() {
+        boolean showGooglePlaceholder = false;
+        SearchableInfo webSearchSearchable = mSearchManager.getDefaultSearchableForWebSearch();
+        if (webSearchSearchable != null) {
+            ComponentName webSearchComponent = webSearchSearchable.getSearchActivity();
+            if (webSearchComponent != null) {
+                String componentString = webSearchComponent.flattenToShortString();
+                if (Searchables.ENHANCED_GOOGLE_SEARCH_COMPONENT_NAME.equals(componentString) ||
+                        Searchables.GOOGLE_SEARCH_COMPONENT_NAME.equals(componentString)) {
+                    showGooglePlaceholder = true;
+                }
+            }
+        }
+        
+        mSearchText.setCompoundDrawablesWithIntrinsicBounds(
+                showGooglePlaceholder ? mGooglePlaceholder : null, null, null, null);
+    }
 
     /**
      * Sets the {@link Launcher} that this gadget will call on to display the search dialog. 
@@ -330,6 +376,17 @@
     public void setLauncher(Launcher launcher) {
         mLauncher = launcher;
     }
+        
+    // Broadcast receiver for web search provider change notifications
+    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (SearchManager.INTENT_ACTION_SEARCH_SETTINGS_CHANGED.equals(action)) {
+                setUpTextField();
+            }
+        }
+    };
 
     /** 
      * Moves the view to the top left corner of its parent.
diff --git a/src/com/android/launcher/Utilities.java b/src/com/android/launcher/Utilities.java
index 33b084b..4a22cba 100644
--- a/src/com/android/launcher/Utilities.java
+++ b/src/com/android/launcher/Utilities.java
@@ -25,6 +25,7 @@
 import android.graphics.PaintFlagsDrawFilter;
 import android.graphics.Paint;
 import android.graphics.Rect;
+import android.util.DisplayMetrics;
 import android.content.res.Resources;
 import android.content.Context;
 
@@ -54,6 +55,7 @@
 
             Bitmap centered = Bitmap.createBitmap(bitmapWidth < width ? width : bitmapWidth,
                     bitmapHeight < height ? height : bitmapHeight, Bitmap.Config.RGB_565);
+            centered.setDensity(bitmap.getDensity());
             Canvas canvas = new Canvas(centered);
             canvas.drawColor(color);
             canvas.drawBitmap(bitmap, (width - bitmapWidth) / 2.0f, (height - bitmapHeight) / 2.0f,
@@ -93,16 +95,11 @@
             painter.setIntrinsicWidth(width);
             painter.setIntrinsicHeight(height);
         } else if (icon instanceof BitmapDrawable) {
-            float displayDensity = context.getResources().getDisplayMetrics().density;
+            // Ensure the bitmap has a density.
             BitmapDrawable bitmapDrawable = (BitmapDrawable) icon;
             Bitmap bitmap = bitmapDrawable.getBitmap();
-            float iconDensity = bitmap.getDensityScale();
-            scale = displayDensity / iconDensity;
-
-            // Scale the bitmap to the screen density size if it's not loaded at the same density.
-            if (scale != 1.0f) {
-                icon = bitmapDrawable = new BitmapDrawable(bitmap);
-                bitmapDrawable.setDensityScale(scale);
+            if (bitmap.getDensity() == Bitmap.DENSITY_NONE) {
+                bitmapDrawable.setTargetDensity(context.getResources().getDisplayMetrics());
             }
         }
         int iconWidth = icon.getIntrinsicWidth();
