diff --git a/res/drawable-hdpi/ic_home_arrows_1_focus.png b/res/drawable-hdpi/ic_home_arrows_1_focus.png
deleted file mode 100644
index fd95862..0000000
--- a/res/drawable-hdpi/ic_home_arrows_1_focus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_1_focus_right.png b/res/drawable-hdpi/ic_home_arrows_1_focus_right.png
deleted file mode 100644
index 2a7059f..0000000
--- a/res/drawable-hdpi/ic_home_arrows_1_focus_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_1_normal.png b/res/drawable-hdpi/ic_home_arrows_1_normal.png
deleted file mode 100644
index c72a4bf..0000000
--- a/res/drawable-hdpi/ic_home_arrows_1_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_1_normal_right.png b/res/drawable-hdpi/ic_home_arrows_1_normal_right.png
deleted file mode 100644
index 90819e6..0000000
--- a/res/drawable-hdpi/ic_home_arrows_1_normal_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_1_press.png b/res/drawable-hdpi/ic_home_arrows_1_press.png
deleted file mode 100644
index 70011d7..0000000
--- a/res/drawable-hdpi/ic_home_arrows_1_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_1_press_right.png b/res/drawable-hdpi/ic_home_arrows_1_press_right.png
deleted file mode 100644
index 45ea6f8..0000000
--- a/res/drawable-hdpi/ic_home_arrows_1_press_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_2_focus.png b/res/drawable-hdpi/ic_home_arrows_2_focus.png
deleted file mode 100644
index 1f1164a..0000000
--- a/res/drawable-hdpi/ic_home_arrows_2_focus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_2_focus_right.png b/res/drawable-hdpi/ic_home_arrows_2_focus_right.png
deleted file mode 100644
index 330ee39..0000000
--- a/res/drawable-hdpi/ic_home_arrows_2_focus_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_2_normal.png b/res/drawable-hdpi/ic_home_arrows_2_normal.png
deleted file mode 100644
index dc01737..0000000
--- a/res/drawable-hdpi/ic_home_arrows_2_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_2_normal_right.png b/res/drawable-hdpi/ic_home_arrows_2_normal_right.png
deleted file mode 100644
index dc843c6..0000000
--- a/res/drawable-hdpi/ic_home_arrows_2_normal_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_2_press.png b/res/drawable-hdpi/ic_home_arrows_2_press.png
deleted file mode 100644
index 294b331..0000000
--- a/res/drawable-hdpi/ic_home_arrows_2_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_2_press_right.png b/res/drawable-hdpi/ic_home_arrows_2_press_right.png
deleted file mode 100644
index 4fc9d0f..0000000
--- a/res/drawable-hdpi/ic_home_arrows_2_press_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_3_focus.png b/res/drawable-hdpi/ic_home_arrows_3_focus.png
deleted file mode 100644
index 7ada5ca..0000000
--- a/res/drawable-hdpi/ic_home_arrows_3_focus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_3_focus_right.png b/res/drawable-hdpi/ic_home_arrows_3_focus_right.png
deleted file mode 100644
index 98d76ef..0000000
--- a/res/drawable-hdpi/ic_home_arrows_3_focus_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_3_normal.png b/res/drawable-hdpi/ic_home_arrows_3_normal.png
deleted file mode 100644
index 1ee2372..0000000
--- a/res/drawable-hdpi/ic_home_arrows_3_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_3_normal_right.png b/res/drawable-hdpi/ic_home_arrows_3_normal_right.png
deleted file mode 100644
index 90a93fa..0000000
--- a/res/drawable-hdpi/ic_home_arrows_3_normal_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_3_press.png b/res/drawable-hdpi/ic_home_arrows_3_press.png
deleted file mode 100644
index 7c98a29..0000000
--- a/res/drawable-hdpi/ic_home_arrows_3_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_3_press_right.png b/res/drawable-hdpi/ic_home_arrows_3_press_right.png
deleted file mode 100644
index 5cfd28c..0000000
--- a/res/drawable-hdpi/ic_home_arrows_3_press_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_4_focus.png b/res/drawable-hdpi/ic_home_arrows_4_focus.png
deleted file mode 100644
index 84f3a7b..0000000
--- a/res/drawable-hdpi/ic_home_arrows_4_focus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_4_focus_right.png b/res/drawable-hdpi/ic_home_arrows_4_focus_right.png
deleted file mode 100644
index 813f863..0000000
--- a/res/drawable-hdpi/ic_home_arrows_4_focus_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_4_normal.png b/res/drawable-hdpi/ic_home_arrows_4_normal.png
deleted file mode 100644
index 477f725..0000000
--- a/res/drawable-hdpi/ic_home_arrows_4_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_4_normal_right.png b/res/drawable-hdpi/ic_home_arrows_4_normal_right.png
deleted file mode 100644
index f8a8612..0000000
--- a/res/drawable-hdpi/ic_home_arrows_4_normal_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_4_press.png b/res/drawable-hdpi/ic_home_arrows_4_press.png
deleted file mode 100644
index 7b8f207..0000000
--- a/res/drawable-hdpi/ic_home_arrows_4_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_home_arrows_4_press_right.png b/res/drawable-hdpi/ic_home_arrows_4_press_right.png
deleted file mode 100644
index 4d9c2ca..0000000
--- a/res/drawable-hdpi/ic_home_arrows_4_press_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_1_focus.png b/res/drawable-mdpi/ic_home_arrows_1_focus.png
deleted file mode 100644
index c0c2720..0000000
--- a/res/drawable-mdpi/ic_home_arrows_1_focus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_1_focus_right.png b/res/drawable-mdpi/ic_home_arrows_1_focus_right.png
deleted file mode 100644
index 89eb552..0000000
--- a/res/drawable-mdpi/ic_home_arrows_1_focus_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_1_normal.png b/res/drawable-mdpi/ic_home_arrows_1_normal.png
deleted file mode 100644
index c3b6e1d..0000000
--- a/res/drawable-mdpi/ic_home_arrows_1_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_1_normal_right.png b/res/drawable-mdpi/ic_home_arrows_1_normal_right.png
deleted file mode 100644
index 705cf0f..0000000
--- a/res/drawable-mdpi/ic_home_arrows_1_normal_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_1_press.png b/res/drawable-mdpi/ic_home_arrows_1_press.png
deleted file mode 100644
index b5d6e3e..0000000
--- a/res/drawable-mdpi/ic_home_arrows_1_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_1_press_right.png b/res/drawable-mdpi/ic_home_arrows_1_press_right.png
deleted file mode 100644
index 694db41..0000000
--- a/res/drawable-mdpi/ic_home_arrows_1_press_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_2_focus.png b/res/drawable-mdpi/ic_home_arrows_2_focus.png
deleted file mode 100644
index fc64540..0000000
--- a/res/drawable-mdpi/ic_home_arrows_2_focus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_2_focus_right.png b/res/drawable-mdpi/ic_home_arrows_2_focus_right.png
deleted file mode 100644
index 0e25d39..0000000
--- a/res/drawable-mdpi/ic_home_arrows_2_focus_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_2_normal.png b/res/drawable-mdpi/ic_home_arrows_2_normal.png
deleted file mode 100644
index 712c57d..0000000
--- a/res/drawable-mdpi/ic_home_arrows_2_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_2_normal_right.png b/res/drawable-mdpi/ic_home_arrows_2_normal_right.png
deleted file mode 100644
index 5a4a26c..0000000
--- a/res/drawable-mdpi/ic_home_arrows_2_normal_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_2_press.png b/res/drawable-mdpi/ic_home_arrows_2_press.png
deleted file mode 100644
index db8422d..0000000
--- a/res/drawable-mdpi/ic_home_arrows_2_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_2_press_right.png b/res/drawable-mdpi/ic_home_arrows_2_press_right.png
deleted file mode 100644
index d55ea40..0000000
--- a/res/drawable-mdpi/ic_home_arrows_2_press_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_3_focus.png b/res/drawable-mdpi/ic_home_arrows_3_focus.png
deleted file mode 100644
index 51f317c..0000000
--- a/res/drawable-mdpi/ic_home_arrows_3_focus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_3_focus_right.png b/res/drawable-mdpi/ic_home_arrows_3_focus_right.png
deleted file mode 100644
index b61cf1c..0000000
--- a/res/drawable-mdpi/ic_home_arrows_3_focus_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_3_normal.png b/res/drawable-mdpi/ic_home_arrows_3_normal.png
deleted file mode 100644
index 24f0c82..0000000
--- a/res/drawable-mdpi/ic_home_arrows_3_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_3_normal_right.png b/res/drawable-mdpi/ic_home_arrows_3_normal_right.png
deleted file mode 100644
index 8b41770..0000000
--- a/res/drawable-mdpi/ic_home_arrows_3_normal_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_3_press.png b/res/drawable-mdpi/ic_home_arrows_3_press.png
deleted file mode 100644
index 7ba3951..0000000
--- a/res/drawable-mdpi/ic_home_arrows_3_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_3_press_right.png b/res/drawable-mdpi/ic_home_arrows_3_press_right.png
deleted file mode 100644
index b5ceff4..0000000
--- a/res/drawable-mdpi/ic_home_arrows_3_press_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_4_focus.png b/res/drawable-mdpi/ic_home_arrows_4_focus.png
deleted file mode 100644
index 0265c6b..0000000
--- a/res/drawable-mdpi/ic_home_arrows_4_focus.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_4_focus_right.png b/res/drawable-mdpi/ic_home_arrows_4_focus_right.png
deleted file mode 100644
index e65ed85..0000000
--- a/res/drawable-mdpi/ic_home_arrows_4_focus_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_4_normal.png b/res/drawable-mdpi/ic_home_arrows_4_normal.png
deleted file mode 100644
index f3a19a7..0000000
--- a/res/drawable-mdpi/ic_home_arrows_4_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_4_normal_right.png b/res/drawable-mdpi/ic_home_arrows_4_normal_right.png
deleted file mode 100644
index 24ec6e7..0000000
--- a/res/drawable-mdpi/ic_home_arrows_4_normal_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_4_press.png b/res/drawable-mdpi/ic_home_arrows_4_press.png
deleted file mode 100644
index 9623df4..0000000
--- a/res/drawable-mdpi/ic_home_arrows_4_press.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_home_arrows_4_press_right.png b/res/drawable-mdpi/ic_home_arrows_4_press_right.png
deleted file mode 100644
index 8a577fa..0000000
--- a/res/drawable-mdpi/ic_home_arrows_4_press_right.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/home_arrows_left.xml b/res/drawable/home_arrows_left.xml
deleted file mode 100644
index 82df258..0000000
--- a/res/drawable/home_arrows_left.xml
+++ /dev/null
@@ -1,23 +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.
--->
-
-<level-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:maxLevel="0" android:drawable="@android:color/transparent" />
-    <item android:maxLevel="1" android:drawable="@drawable/home_arrows_left_1" />
-    <item android:maxLevel="2" android:drawable="@drawable/home_arrows_left_2" />
-    <item android:maxLevel="3" android:drawable="@drawable/home_arrows_left_3" />
-    <item android:maxLevel="4" android:drawable="@drawable/home_arrows_left_4" />
-</level-list>
diff --git a/res/drawable/home_arrows_left_1.xml b/res/drawable/home_arrows_left_1.xml
deleted file mode 100644
index f61f39e..0000000
--- a/res/drawable/home_arrows_left_1.xml
+++ /dev/null
@@ -1,22 +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_pressed="true" android:drawable="@drawable/ic_home_arrows_1_press" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_home_arrows_1_focus" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/ic_home_arrows_1_normal" />
-    <item android:drawable="@drawable/ic_home_arrows_1_normal" />
-</selector>
diff --git a/res/drawable/home_arrows_left_2.xml b/res/drawable/home_arrows_left_2.xml
deleted file mode 100644
index 888a258..0000000
--- a/res/drawable/home_arrows_left_2.xml
+++ /dev/null
@@ -1,22 +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_pressed="true" android:drawable="@drawable/ic_home_arrows_2_press" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_home_arrows_2_focus" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/ic_home_arrows_2_normal" />
-    <item android:drawable="@drawable/ic_home_arrows_2_normal" />
-</selector>
diff --git a/res/drawable/home_arrows_left_3.xml b/res/drawable/home_arrows_left_3.xml
deleted file mode 100644
index 4dbdf15..0000000
--- a/res/drawable/home_arrows_left_3.xml
+++ /dev/null
@@ -1,22 +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_pressed="true" android:drawable="@drawable/ic_home_arrows_3_press" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_home_arrows_3_focus" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/ic_home_arrows_3_normal" />
-    <item android:drawable="@drawable/ic_home_arrows_3_normal" />
-</selector>
diff --git a/res/drawable/home_arrows_left_4.xml b/res/drawable/home_arrows_left_4.xml
deleted file mode 100644
index 31b381d..0000000
--- a/res/drawable/home_arrows_left_4.xml
+++ /dev/null
@@ -1,22 +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_pressed="true" android:drawable="@drawable/ic_home_arrows_4_press" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_home_arrows_4_focus" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/ic_home_arrows_4_normal" />
-    <item android:drawable="@drawable/ic_home_arrows_4_normal" />
-</selector>
diff --git a/res/drawable/home_arrows_right.xml b/res/drawable/home_arrows_right.xml
deleted file mode 100644
index 8ab0dec..0000000
--- a/res/drawable/home_arrows_right.xml
+++ /dev/null
@@ -1,23 +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.
--->
-
-<level-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:maxLevel="0" android:drawable="@drawable/home_arrows_right_4" />
-    <item android:maxLevel="1" android:drawable="@drawable/home_arrows_right_3" />
-    <item android:maxLevel="2" android:drawable="@drawable/home_arrows_right_2" />
-    <item android:maxLevel="3" android:drawable="@drawable/home_arrows_right_1" />
-    <item android:maxLevel="4" android:drawable="@android:color/transparent" />
-</level-list>
diff --git a/res/drawable/home_arrows_right_1.xml b/res/drawable/home_arrows_right_1.xml
deleted file mode 100644
index f49b760..0000000
--- a/res/drawable/home_arrows_right_1.xml
+++ /dev/null
@@ -1,22 +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_pressed="true" android:drawable="@drawable/ic_home_arrows_1_press_right" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_home_arrows_1_focus_right" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/ic_home_arrows_1_normal_right" />
-    <item android:drawable="@drawable/ic_home_arrows_1_normal_right" />
-</selector>
diff --git a/res/drawable/home_arrows_right_2.xml b/res/drawable/home_arrows_right_2.xml
deleted file mode 100644
index 17318a3..0000000
--- a/res/drawable/home_arrows_right_2.xml
+++ /dev/null
@@ -1,22 +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_pressed="true" android:drawable="@drawable/ic_home_arrows_2_press_right" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_home_arrows_2_focus_right" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/ic_home_arrows_2_normal_right" />
-    <item android:drawable="@drawable/ic_home_arrows_2_normal_right" />
-</selector>
diff --git a/res/drawable/home_arrows_right_3.xml b/res/drawable/home_arrows_right_3.xml
deleted file mode 100644
index 375f8e3..0000000
--- a/res/drawable/home_arrows_right_3.xml
+++ /dev/null
@@ -1,22 +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_pressed="true" android:drawable="@drawable/ic_home_arrows_3_press_right" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_home_arrows_3_focus_right" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/ic_home_arrows_3_normal_right" />
-    <item android:drawable="@drawable/ic_home_arrows_3_normal_right" />
-</selector>
diff --git a/res/drawable/home_arrows_right_4.xml b/res/drawable/home_arrows_right_4.xml
deleted file mode 100644
index 06627c6..0000000
--- a/res/drawable/home_arrows_right_4.xml
+++ /dev/null
@@ -1,22 +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_pressed="true" android:drawable="@drawable/ic_home_arrows_4_press_right" />
-    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_home_arrows_4_focus_right" />
-    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@drawable/ic_home_arrows_4_normal_right" />
-    <item android:drawable="@drawable/ic_home_arrows_4_normal_right" />
-</selector>
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 3e557af..3c5e0df 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -61,40 +61,6 @@
         android:layout_height="match_parent"
         android:visibility="invisible" />
 
-    <com.android.launcher2.ClippedImageView
-        android:id="@+id/previous_screen"
-        android:layout_width="93dip"
-        android:layout_height="@dimen/button_bar_height"
-        android:layout_gravity="bottom|left"
-        android:layout_marginLeft="6dip"
-
-        android:scaleType="center"
-        android:src="@drawable/home_arrows_left"
-        
-        android:onClick="previousScreen"
-
-        launcher:ignoreZone="56dip"
-
-        android:focusable="true"
-        android:clickable="true" />
-
-    <com.android.launcher2.ClippedImageView
-        android:id="@+id/next_screen"
-        android:layout_width="93dip"
-        android:layout_height="@dimen/button_bar_height"
-        android:layout_gravity="bottom|right"
-        android:layout_marginRight="6dip"
-
-        android:scaleType="center"
-        android:src="@drawable/home_arrows_right"
-        
-        android:onClick="nextScreen"
-        
-        launcher:ignoreZone="-56dip"
-        
-        android:focusable="true"
-        android:clickable="true" />
-
     <RelativeLayout
         android:id="@+id/all_apps_button_cluster"
         android:layout_height="fill_parent"
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 3233506..d2b9275 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -60,36 +60,6 @@
         android:layout_height="match_parent"
         android:visibility="invisible" />
 
-    <ImageView
-        android:id="@+id/previous_screen"
-        android:layout_width="93dip"
-        android:layout_height="@dimen/button_bar_height"
-        android:layout_gravity="bottom|left"
-        android:layout_marginLeft="6dip"
-
-        android:scaleType="center"
-        android:src="@drawable/home_arrows_left"
-        
-        android:onClick="previousScreen"
-
-        android:focusable="true"
-        android:clickable="true" />
-
-    <ImageView
-        android:id="@+id/next_screen"
-        android:layout_width="93dip"
-        android:layout_height="@dimen/button_bar_height"
-        android:layout_gravity="bottom|right"
-        android:layout_marginRight="6dip"
-
-        android:scaleType="center"
-        android:src="@drawable/home_arrows_right"
-
-        android:onClick="nextScreen"
-
-        android:focusable="true"
-        android:clickable="true" />
-
     <RelativeLayout
         android:id="@+id/all_apps_button_cluster"
         android:layout_width="fill_parent"
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 284f574..ec35ca5 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -152,8 +152,4 @@
         <attr name="title" format="reference" />
         <attr name="uri" format="string" />
     </declare-styleable>
-
-    <declare-styleable name="ClippedImageView">
-        <attr name="ignoreZone" format="dimension" />
-    </declare-styleable>
 </resources>
diff --git a/src/com/android/launcher2/ClippedImageView.java b/src/com/android/launcher2/ClippedImageView.java
deleted file mode 100644
index 2c4380d..0000000
--- a/src/com/android/launcher2/ClippedImageView.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2010 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.launcher2;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.widget.ImageView;
-import com.android.launcher.R;
-
-public class ClippedImageView extends ImageView {
-    private final int mZone;
-
-    public ClippedImageView(Context context, AttributeSet attrs) {
-        this(context, attrs, 0);
-    }
-
-    public ClippedImageView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        
-        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ClippedImageView, defStyle, 0);
-
-        mZone = a.getDimensionPixelSize(R.styleable.ClippedImageView_ignoreZone, 0);
-
-        a.recycle();
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-        final int zone = mZone;
-        return !(zone != 0 && (zone > 0 && event.getX() >= zone) ||
-                (zone < 0 && event.getX() < getWidth() + zone)) && super.onTouchEvent(event);
-
-    }
-}
diff --git a/src/com/android/launcher2/FocusHelper.java b/src/com/android/launcher2/FocusHelper.java
index 25d941b..d45c9ac 100644
--- a/src/com/android/launcher2/FocusHelper.java
+++ b/src/com/android/launcher2/FocusHelper.java
@@ -41,16 +41,6 @@
 }
 
 /**
- * A keyboard listener we set on the indicator buttons.
- */
-class IndicatorKeyEventListener implements View.OnKeyListener {
-    @Override
-    public boolean onKey(View v, int keyCode, KeyEvent event) {
-        return FocusHelper.handleIndicatorButtonKeyEvent(v, keyCode, event);
-    }
-}
-
-/**
  * A keyboard listener we set on all the dock buttons.
  */
 class DockKeyEventListener implements View.OnKeyListener {
@@ -545,73 +535,6 @@
     }
 
     /**
-     * Handles key events in the prev/next indicators.
-     */
-    static boolean handleIndicatorButtonKeyEvent(View v, int keyCode, KeyEvent e) {
-        final ViewGroup launcher = (ViewGroup) v.getParent();
-        final Workspace workspace = (Workspace) launcher.findViewById(R.id.workspace);
-        final ViewGroup hotseat = (ViewGroup) launcher.findViewById(R.id.all_apps_button_cluster);
-        final View previousIndicator = launcher.findViewById(R.id.previous_screen);
-        final View nextIndicator = launcher.findViewById(R.id.next_screen);
-        final int pageIndex = workspace.getCurrentPage();
-        final int pageCount = workspace.getChildCount();
-
-        final int action = e.getAction();
-        final boolean handleKeyEvent = (action != KeyEvent.ACTION_UP);
-        boolean wasHandled = false;
-        switch (keyCode) {
-            case KeyEvent.KEYCODE_DPAD_LEFT:
-                if (handleKeyEvent) {
-                    if (v == previousIndicator) {
-                        if (pageIndex > 0) {
-                            // Snap to previous page and clear focus
-                            workspace.snapToPage(pageIndex - 1);
-                        }
-                    } else if (v == nextIndicator) {
-                        // Select the last button in the hot seat
-                        hotseat.getChildAt(hotseat.getChildCount() - 1).requestFocus();
-                    }
-                }
-                wasHandled = true;
-                break;
-            case KeyEvent.KEYCODE_DPAD_RIGHT:
-                if (handleKeyEvent) {
-                    if (v == previousIndicator) {
-                        // Select the first button in the hot seat
-                        hotseat.getChildAt(0).requestFocus();
-                    } else if (v == nextIndicator) {
-                        if (pageIndex < (pageCount - 1)) {
-                            // Snap to next page and clear focus
-                            workspace.snapToPage(pageIndex + 1);
-                        }
-                    }
-                }
-                wasHandled = true;
-                break;
-            case KeyEvent.KEYCODE_DPAD_UP:
-                if (handleKeyEvent) {
-                    // Select the first bubble text view in the current page of the workspace
-                    final CellLayout layout = (CellLayout) workspace.getChildAt(pageIndex);
-                    final CellLayoutChildren children = layout.getChildrenLayout();
-                    final View newIcon = getBubbleTextViewInDirection(layout, children, -1, 1);
-                    if (newIcon != null) {
-                        newIcon.requestFocus();
-                    } else {
-                        workspace.requestFocus();
-                    }
-                }
-                wasHandled = true;
-                break;
-            case KeyEvent.KEYCODE_DPAD_DOWN:
-                // Do nothing
-                wasHandled = true;
-                break;
-            default: break;
-        }
-        return wasHandled;
-    }
-
-    /**
      * Handles key events in the workspace dock (bottom of the screen).
      */
     static boolean handleDockButtonKeyEvent(View v, int keyCode, KeyEvent e, int orientation) {
@@ -622,8 +545,6 @@
         final int buttonCount = parent.getChildCount();
         final int pageIndex = workspace.getCurrentPage();
         final int pageCount = workspace.getChildCount();
-        final View previousIndicator = launcher.findViewById(R.id.previous_screen);
-        final View nextIndicator = launcher.findViewById(R.id.next_screen);
 
         // NOTE: currently we don't special case for the phone UI in different
         // orientations, even though the dock is on the side in landscape mode.  This
@@ -635,23 +556,22 @@
         switch (keyCode) {
             case KeyEvent.KEYCODE_DPAD_LEFT:
                 if (handleKeyEvent) {
-
-                    // Select the previous button, otherwise select the previous page indicator
+                    // Select the previous button, otherwise snap to the previous page
                     if (buttonIndex > 0) {
                         parent.getChildAt(buttonIndex - 1).requestFocus();
                     } else {
-                        previousIndicator.requestFocus();
+                        workspace.snapToPage(pageIndex - 1);
                     }
                 }
                 wasHandled = true;
                 break;
             case KeyEvent.KEYCODE_DPAD_RIGHT:
                 if (handleKeyEvent) {
-                    // Select the next button, otherwise select the next page indicator
+                    // Select the next button, otherwise snap to the next page
                     if (buttonIndex < (buttonCount - 1)) {
                         parent.getChildAt(buttonIndex + 1).requestFocus();
                     } else {
-                        nextIndicator.requestFocus();
+                        workspace.snapToPage(pageIndex + 1);
                     }
                 }
                 wasHandled = true;
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 2dfce62..b1752a7 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -226,10 +226,6 @@
 
     private static HashMap<Long, FolderInfo> sFolders = new HashMap<Long, FolderInfo>();
 
-    // The "signpost" images along the bottom of the screen (only in some layouts)
-    private ImageView mPreviousView;
-    private ImageView mNextView;
-
     // Hotseats (quick-launch icons next to AllApps)
     private String[] mHotseatConfig = null;
     private Intent[] mHotseats = null;
@@ -675,13 +671,6 @@
     @Override
     protected void onPause() {
         super.onPause();
-        // Some launcher layouts don't have a previous and next view
-        if (mPreviousView != null) {
-            dismissPreview(mPreviousView);
-        }
-        if (mNextView != null) {
-            dismissPreview(mNextView);
-        }
         mPaused = true;
         mDragController.cancelDrag();
     }
@@ -878,21 +867,6 @@
             ImageView hotseatRight = (ImageView) findViewById(R.id.hotseat_right);
             hotseatRight.setContentDescription(mHotseatLabels[1]);
             hotseatRight.setImageDrawable(mHotseatIcons[1]);
-
-            View.OnKeyListener listener = new IndicatorKeyEventListener();
-            mPreviousView = (ImageView) mDragLayer.findViewById(R.id.previous_screen);
-            mPreviousView.setOnKeyListener(listener);
-            mNextView = (ImageView) mDragLayer.findViewById(R.id.next_screen);
-            mNextView.setOnKeyListener(listener);
-
-            Drawable previous = mPreviousView.getDrawable();
-            Drawable next = mNextView.getDrawable();
-            mWorkspace.setIndicators(previous, next);
-
-            mPreviousView.setHapticFeedbackEnabled(false);
-            mPreviousView.setOnLongClickListener(this);
-            mNextView.setHapticFeedbackEnabled(false);
-            mNextView.setOnLongClickListener(this);
         }
 
         if (!LauncherApplication.isScreenLarge()) {
@@ -1383,15 +1357,6 @@
         unbindDesktopItems();
 
         getContentResolver().unregisterContentObserver(mWidgetObserver);
-
-        // Some launcher layouts don't have a previous and next view
-        if (mPreviousView != null) {
-            dismissPreview(mPreviousView);
-        }
-        if (mNextView != null) {
-            dismissPreview(mNextView);
-        }
-
         unregisterReceiver(mCloseSystemDialogsReceiver);
 
         ((ViewGroup) mWorkspace.getParent()).removeAllViews();
@@ -1518,12 +1483,6 @@
         return mWorkspaceLoading || mWaitingForResult;
     }
 
-    // Is the workspace preview (brought up by long-pressing on a signpost icon) visible?
-    private boolean isPreviewVisible() {
-        return (mPreviousView != null && mPreviousView.getTag() != null) ||
-                (mNextView != null && mNextView.getTag() != null);
-    }
-
     private void addItems() {
         showWorkspace(true);
         showAddDialog(-1, -1);
@@ -1734,9 +1693,6 @@
             } else {
                 closeFolder();
             }
-        } else if (isPreviewVisible()) {
-            dismissPreview(mPreviousView);
-            dismissPreview(mNextView);
         } else {
             mWorkspace.exitWidgetResizeMode();
 
@@ -2001,20 +1957,6 @@
         }
 
         switch (v.getId()) {
-            case R.id.previous_screen:
-                if (mState != State.APPS_CUSTOMIZE) {
-                    mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
-                            HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
-                    showPreviews(v);
-                }
-                return true;
-            case R.id.next_screen:
-                if (mState != State.APPS_CUSTOMIZE) {
-                    mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
-                            HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
-                    showPreviews(v);
-                }
-                return true;
             case R.id.all_apps_button:
                 if (mState != State.APPS_CUSTOMIZE) {
                     mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
@@ -2602,12 +2544,8 @@
             if (animated) {
                 int duration = mSearchDeleteBar.getTransitionInDuration();
                 mButtonCluster.animate().alpha(1f).setDuration(duration);
-                mPreviousView.animate().alpha(1f).setDuration(duration);
-                mNextView.animate().alpha(1f).setDuration(duration);
             } else {
                 mButtonCluster.setAlpha(1f);
-                mPreviousView.setAlpha(1f);
-                mNextView.setAlpha(1f);
             }
         }
     }
@@ -2620,12 +2558,8 @@
             if (animated) {
                 int duration = mSearchDeleteBar.getTransitionOutDuration();
                 mButtonCluster.animate().alpha(0f).setDuration(duration);
-                mPreviousView.animate().alpha(0f).setDuration(duration);
-                mNextView.animate().alpha(0f).setDuration(duration);
             } else {
                 mButtonCluster.setAlpha(0f);
-                mPreviousView.setAlpha(0f);
-                mNextView.setAlpha(0f);
             }
         }
     }
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 005bd27..c0439dd 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -158,9 +158,6 @@
     private static final int DEFAULT_CELL_COUNT_X = 4;
     private static final int DEFAULT_CELL_COUNT_Y = 4;
 
-    private Drawable mPreviousIndicator;
-    private Drawable mNextIndicator;
-
     // State variable that indicates whether the pages are small (ie when you're
     // in all apps or customize mode)
     private boolean mIsSmall = false;
@@ -681,17 +678,6 @@
     @Override
     protected void notifyPageSwitchListener() {
         super.notifyPageSwitchListener();
-
-        if (mPreviousIndicator != null) {
-            // if we know the next page, we show the indication for it right away; it looks
-            // weird if the indicators are lagging
-            int page = mNextPage;
-            if (page == INVALID_PAGE) {
-                page = mCurrentPage;
-            }
-            mPreviousIndicator.setLevel(page);
-            mNextIndicator.setLevel(page);
-        }
         Launcher.setScreen(mCurrentPage);
     };
 
@@ -3523,13 +3509,6 @@
         getChildAt(mDefaultPage).requestFocus();
     }
 
-    void setIndicators(Drawable previous, Drawable next) {
-        mPreviousIndicator = previous;
-        mNextIndicator = next;
-        previous.setLevel(mCurrentPage);
-        next.setLevel(mCurrentPage);
-    }
-
     @Override
     public void syncPages() {
     }
