diff --git a/res/drawable-finger/bg_chicklit.xml b/res/drawable-finger/bg_chicklit.xml
deleted file mode 100644
index 57d5275..0000000
--- a/res/drawable-finger/bg_chicklit.xml
+++ /dev/null
@@ -1,26 +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:drawable="@drawable/bg_chicklit_normal" />
-    <item android:state_pressed="true"
-        android:drawable="@drawable/bg_chicklit_pressed" />
-    <item android:state_focused="true"
-        android:drawable="@drawable/bg_chicklit_focused" />
-    <item
-         android:drawable="@drawable/bg_chicklit_normal" />
-</selector>
diff --git a/res/drawable-finger/bg_chicklit_focused.9.png b/res/drawable-finger/bg_chicklit_focused.9.png
deleted file mode 100644
index f6b4240..0000000
--- a/res/drawable-finger/bg_chicklit_focused.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/bg_chicklit_normal.9.png b/res/drawable-finger/bg_chicklit_normal.9.png
deleted file mode 100644
index 35f9bdd..0000000
--- a/res/drawable-finger/bg_chicklit_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/bg_chicklit_pressed.9.png b/res/drawable-finger/bg_chicklit_pressed.9.png
deleted file mode 100644
index 2faaee1..0000000
--- a/res/drawable-finger/bg_chicklit_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/bg_track_glow.9.png b/res/drawable-finger/bg_track_glow.9.png
deleted file mode 100644
index 12ecebb..0000000
--- a/res/drawable-finger/bg_track_glow.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/facebook.png b/res/drawable-finger/facebook.png
new file mode 100644
index 0000000..8281223
--- /dev/null
+++ b/res/drawable-finger/facebook.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_down.png b/res/drawable-finger/fasttrack_arrow_down.png
new file mode 100644
index 0000000..3ba6c8c
--- /dev/null
+++ b/res/drawable-finger/fasttrack_arrow_down.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_large_up.png b/res/drawable-finger/fasttrack_arrow_large_up.png
deleted file mode 100644
index c567e48..0000000
--- a/res/drawable-finger/fasttrack_arrow_large_up.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_lrg.png b/res/drawable-finger/fasttrack_arrow_lrg.png
deleted file mode 100644
index 3c70eec..0000000
--- a/res/drawable-finger/fasttrack_arrow_lrg.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_sm.png b/res/drawable-finger/fasttrack_arrow_sm.png
deleted file mode 100644
index 0ac8a7e..0000000
--- a/res/drawable-finger/fasttrack_arrow_sm.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_up.png b/res/drawable-finger/fasttrack_arrow_up.png
new file mode 100644
index 0000000..1a6fa2e
--- /dev/null
+++ b/res/drawable-finger/fasttrack_arrow_up.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_bottom_frame.9.png b/res/drawable-finger/fasttrack_bottom_frame.9.png
new file mode 100644
index 0000000..6f84306
--- /dev/null
+++ b/res/drawable-finger/fasttrack_bottom_frame.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig.9.png b/res/drawable-finger/fasttrack_disambig.9.png
deleted file mode 100644
index 4a71567..0000000
--- a/res/drawable-finger/fasttrack_disambig.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_bottom_bg.9.png b/res/drawable-finger/fasttrack_disambig_bottom_bg.9.png
new file mode 100644
index 0000000..bbc2075
--- /dev/null
+++ b/res/drawable-finger/fasttrack_disambig_bottom_bg.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_background_dither.xml b/res/drawable-finger/fasttrack_disambig_checkbox.xml
similarity index 68%
rename from res/drawable-finger/fasttrack_slider_background_dither.xml
rename to res/drawable-finger/fasttrack_disambig_checkbox.xml
index 4872f7a..0bd2030 100644
--- a/res/drawable-finger/fasttrack_slider_background_dither.xml
+++ b/res/drawable-finger/fasttrack_disambig_checkbox.xml
@@ -14,6 +14,12 @@
      limitations under the License.
 -->
 
-<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/fasttrack_slider_background"
-    android:dither="true" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:dither="true">
+
+    <item android:state_checked="true"
+        android:drawable="@drawable/fasttrack_disambig_checkbox_on" />
+    <item
+        android:drawable="@drawable/fasttrack_disambig_checkbox_off" />
+
+</selector>
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox_off.png b/res/drawable-finger/fasttrack_disambig_checkbox_off.png
new file mode 100644
index 0000000..7e51863
--- /dev/null
+++ b/res/drawable-finger/fasttrack_disambig_checkbox_off.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox_on.png b/res/drawable-finger/fasttrack_disambig_checkbox_on.png
new file mode 100644
index 0000000..93c06aa
--- /dev/null
+++ b/res/drawable-finger/fasttrack_disambig_checkbox_on.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_divider.9.png b/res/drawable-finger/fasttrack_disambig_divider.9.png
new file mode 100644
index 0000000..8c35e8c
--- /dev/null
+++ b/res/drawable-finger/fasttrack_disambig_divider.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_drop_shadow.9.png b/res/drawable-finger/fasttrack_drop_shadow.9.png
index 1e003a0..efbb1da 100644
--- a/res/drawable-finger/fasttrack_drop_shadow.9.png
+++ b/res/drawable-finger/fasttrack_drop_shadow.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_frame_divider_med.png b/res/drawable-finger/fasttrack_frame_divider_med.png
index f24b06b..3b24f95 100644
--- a/res/drawable-finger/fasttrack_frame_divider_med.png
+++ b/res/drawable-finger/fasttrack_frame_divider_med.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_frame_lrg.9.png b/res/drawable-finger/fasttrack_frame_lrg.9.png
deleted file mode 100644
index 52ca22d..0000000
--- a/res/drawable-finger/fasttrack_frame_lrg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_frame_med.9.png b/res/drawable-finger/fasttrack_frame_med.9.png
deleted file mode 100644
index 904c605..0000000
--- a/res/drawable-finger/fasttrack_frame_med.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_frame_sm.9.png b/res/drawable-finger/fasttrack_frame_sm.9.png
deleted file mode 100644
index 69fdc4b..0000000
--- a/res/drawable-finger/fasttrack_frame_sm.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_background.9.png b/res/drawable-finger/fasttrack_slider_background.9.png
index 0acca6d..dc28aa7 100644
--- a/res/drawable-finger/fasttrack_slider_background.9.png
+++ b/res/drawable-finger/fasttrack_slider_background.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn.xml b/res/drawable-finger/fasttrack_slider_btn.xml
index a44ed18..b89a543 100644
--- a/res/drawable-finger/fasttrack_slider_btn.xml
+++ b/res/drawable-finger/fasttrack_slider_btn.xml
@@ -14,7 +14,11 @@
      limitations under the License.
 -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:dither="true">
+
+    <item android:state_checked="true"
+        android:drawable="@drawable/fasttrack_slider_btn_on" />
     <item android:state_window_focused="false"
         android:drawable="@drawable/fasttrack_slider_btn_normal" />
     <item android:state_pressed="true"
@@ -22,5 +26,6 @@
     <item android:state_focused="true"
         android:drawable="@drawable/fasttrack_slider_btn_selected" />
     <item
-         android:drawable="@drawable/fasttrack_slider_btn_normal" />
+        android:drawable="@drawable/fasttrack_slider_btn_normal" />
+
 </selector>
diff --git a/res/drawable-finger/fasttrack_slider_btn_normal.png b/res/drawable-finger/fasttrack_slider_btn_normal.png
index 3de0fb7..0c45399 100644
--- a/res/drawable-finger/fasttrack_slider_btn_normal.png
+++ b/res/drawable-finger/fasttrack_slider_btn_normal.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_normal_dither.xml b/res/drawable-finger/fasttrack_slider_btn_normal_dither.xml
deleted file mode 100644
index 206d505..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_normal_dither.xml
+++ /dev/null
@@ -1,20 +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.
--->
-
-<bitmap
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/fasttrack_slider_btn_normal"
-    android:dither="true" />
diff --git a/res/drawable-finger/fasttrack_slider_btn_on.png b/res/drawable-finger/fasttrack_slider_btn_on.png
new file mode 100644
index 0000000..4107d82
--- /dev/null
+++ b/res/drawable-finger/fasttrack_slider_btn_on.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_pressed.png b/res/drawable-finger/fasttrack_slider_btn_pressed.png
index fb863f5..ba04e06 100644
--- a/res/drawable-finger/fasttrack_slider_btn_pressed.png
+++ b/res/drawable-finger/fasttrack_slider_btn_pressed.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_selected.png b/res/drawable-finger/fasttrack_slider_btn_selected.png
index c0211f4..126b1ed 100644
--- a/res/drawable-finger/fasttrack_slider_btn_selected.png
+++ b/res/drawable-finger/fasttrack_slider_btn_selected.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_grip_left.png b/res/drawable-finger/fasttrack_slider_grip_left.png
index 4ddb8dc..337b2fc 100644
--- a/res/drawable-finger/fasttrack_slider_grip_left.png
+++ b/res/drawable-finger/fasttrack_slider_grip_left.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_grip_right.png b/res/drawable-finger/fasttrack_slider_grip_right.png
index 6e503a2..1e222c3 100644
--- a/res/drawable-finger/fasttrack_slider_grip_right.png
+++ b/res/drawable-finger/fasttrack_slider_grip_right.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_active.png b/res/drawable-finger/fasttrack_slider_presence_active.png
index b0ed52d..2d57813 100644
--- a/res/drawable-finger/fasttrack_slider_presence_active.png
+++ b/res/drawable-finger/fasttrack_slider_presence_active.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_away.png b/res/drawable-finger/fasttrack_slider_presence_away.png
index f3f6502..22d014b 100644
--- a/res/drawable-finger/fasttrack_slider_presence_away.png
+++ b/res/drawable-finger/fasttrack_slider_presence_away.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_busy.png b/res/drawable-finger/fasttrack_slider_presence_busy.png
index db1170b..5734e00 100644
--- a/res/drawable-finger/fasttrack_slider_presence_busy.png
+++ b/res/drawable-finger/fasttrack_slider_presence_busy.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_inactive.png b/res/drawable-finger/fasttrack_slider_presence_inactive.png
index de46747..81731a8 100644
--- a/res/drawable-finger/fasttrack_slider_presence_inactive.png
+++ b/res/drawable-finger/fasttrack_slider_presence_inactive.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_top_frame.9.png b/res/drawable-finger/fasttrack_top_frame.9.png
new file mode 100644
index 0000000..6d43305
--- /dev/null
+++ b/res/drawable-finger/fasttrack_top_frame.9.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_account_list.png b/res/drawable-finger/ic_menu_account_list.png
new file mode 100644
index 0000000..f0945b2
--- /dev/null
+++ b/res/drawable-finger/ic_menu_account_list.png
Binary files differ
diff --git a/res/layout-finger/fasttrack.xml b/res/layout-finger/fasttrack.xml
index 8a81533..8a56e02 100644
--- a/res/layout-finger/fasttrack.xml
+++ b/res/layout-finger/fasttrack.xml
@@ -24,7 +24,7 @@
         android:id="@+id/header"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
-        android:layout_marginTop="18dip">
+        android:layout_marginTop="11dip">
 
         <ViewStub
             android:id="@+id/header_small"
@@ -62,6 +62,8 @@
             android:id="@+id/fasttrack"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:paddingTop="4dip"
+            android:paddingBottom="4dip"
             android:orientation="horizontal">
 
             <ImageView
@@ -78,31 +80,57 @@
 
     </HorizontalScrollView>
 
-    <ListView
-        android:id="@android:id/list"
+    <FrameLayout
+        android:id="@+id/footer"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_below="@id/scroll"
-        android:background="@drawable/fasttrack_disambig"
-        android:layout_marginLeft="10dip"
-        android:layout_marginRight="10dip"
-        android:visibility="gone"
-        android:cacheColorHint="@null"
-        android:divider="#fddd" />
+        android:background="@drawable/fasttrack_bottom_frame" />
 
-    <!-- Callout arrows are placed at end so they appear on top -->
+    <LinearLayout
+        android:id="@+id/footer_disambig"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/scroll"
+        android:background="@drawable/fasttrack_disambig_bottom_bg"
+        android:orientation="vertical"
+        android:visibility="gone">
+
+        <ListView
+            android:id="@android:id/list"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/fasttrack_disambig"
+            android:divider="@drawable/fasttrack_disambig_divider"
+            android:cacheColorHint="@null" />
+
+        <CheckBox
+            android:id="@android:id/checkbox"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="19dip"
+            android:layout_marginRight="19dip"
+            android:minHeight="60dip"
+            android:textColor="#f000"
+            android:textStyle="bold"
+            android:text="@string/fasttrack_remember_choice"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:button="@drawable/fasttrack_disambig_checkbox" />
+
+    </LinearLayout>
+
     <ImageView
         android:id="@+id/arrow_up"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:src="@drawable/fasttrack_arrow_lrg" />
+        android:src="@drawable/fasttrack_arrow_up" />
 
     <ImageView
         android:id="@+id/arrow_down"
-        android:layout_below="@id/scroll"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginTop="-10dip"
-        android:src="@drawable/fasttrack_arrow_large_up" />
+        android:layout_marginTop="-1dip"
+        android:layout_below="@id/footer"
+        android:src="@drawable/fasttrack_arrow_down" />
 
 </RelativeLayout>
diff --git a/res/layout-finger/fasttrack_header_large.xml b/res/layout-finger/fasttrack_header_large.xml
index 347ab3d..f950349 100644
--- a/res/layout-finger/fasttrack_header_large.xml
+++ b/res/layout-finger/fasttrack_header_large.xml
@@ -19,7 +19,8 @@
     android:id="@+id/header_large"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:background="@drawable/fasttrack_frame_lrg"
+    android:minHeight="87dip"
+    android:background="@drawable/fasttrack_top_frame"
     android:gravity="center_vertical"
     android:orientation="horizontal">
 
diff --git a/res/layout-finger/fasttrack_header_med.xml b/res/layout-finger/fasttrack_header_med.xml
index b3cf574..bbfcc06 100644
--- a/res/layout-finger/fasttrack_header_med.xml
+++ b/res/layout-finger/fasttrack_header_med.xml
@@ -19,7 +19,8 @@
     android:id="@+id/header_medium"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:background="@drawable/fasttrack_frame_med"
+    android:minHeight="45dip"
+    android:background="@drawable/fasttrack_top_frame"
     android:gravity="center_vertical"
     android:orientation="horizontal">
 
@@ -33,15 +34,30 @@
         android:singleLine="true"
         android:ellipsize="end"
         android:textColor="#f000"
-        android:textStyle="bold"
         android:textSize="15dip" />
 
     <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="1dip"
+        android:src="@drawable/fasttrack_frame_divider_med" />
+
+    <ImageView
+        android:id="@+id/source"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="13dip"
+        android:layout_marginRight="16dip"
+        android:src="@drawable/facebook" />
+
+    <!--
+    <ImageView
         android:id="@+id/presence"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginRight="15dip"
         android:src="@drawable/fasttrack_slider_presence_active"
         android:scaleType="centerInside" />
+    -->
 
 </LinearLayout>
diff --git a/res/layout-finger/fasttrack_header_small.xml b/res/layout-finger/fasttrack_header_small.xml
index 6e7be3f..feb49f2 100644
--- a/res/layout-finger/fasttrack_header_small.xml
+++ b/res/layout-finger/fasttrack_header_small.xml
@@ -19,5 +19,5 @@
     android:id="@+id/header_small"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:background="@drawable/fasttrack_frame_sm"
+    android:background="@drawable/fasttrack_top_frame"
     android:orientation="horizontal" />
diff --git a/res/layout-finger/fasttrack_item.xml b/res/layout-finger/fasttrack_item.xml
index 968eef2..e4d130e 100644
--- a/res/layout-finger/fasttrack_item.xml
+++ b/res/layout-finger/fasttrack_item.xml
@@ -16,9 +16,11 @@
 
 <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="59dip"
-    android:layout_height="62dip"
-    android:layout_marginTop="0dip"
-    android:layout_marginBottom="0dip"
+    android:layout_height="52dip"
+    android:paddingLeft="12dip"
+    android:paddingRight="12dip"
+    android:paddingTop="8dip"
+    android:paddingBottom="9dip"
     android:scaleType="centerInside"
     android:focusable="true"
     android:clickable="true"
diff --git a/res/layout-finger/fasttrack_resolve_item.xml b/res/layout-finger/fasttrack_resolve_item.xml
index 9cff3c5..9156a59 100755
--- a/res/layout-finger/fasttrack_resolve_item.xml
+++ b/res/layout-finger/fasttrack_resolve_item.xml
@@ -17,49 +17,24 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:orientation="horizontal"
+    android:orientation="vertical"
     android:paddingLeft="30dip"
     android:paddingRight="30dip"
+    android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical">
 
-    <ImageView
-        android:id="@android:id/icon1"
+    <TextView
+        android:id="@android:id/text1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginRight="5dip"
-        android:gravity="center"
-        android:scaleType="centerInside" />
+        android:textStyle="bold"
+        android:textAppearance="?android:attr/textAppearanceMediumInverse" />
 
-    <LinearLayout
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:layout_marginLeft="5dip"
-        android:paddingTop="5dip"
-        android:paddingBottom="7dip"
-        android:orientation="vertical"
-        android:gravity="center_vertical">
-
-        <TextView
-            android:id="@android:id/text1"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMediumInverse" />
-
-        <TextView
-            android:id="@android:id/text2"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceSmallInverse" />
-
-    </LinearLayout>
-
-    <ImageView
-        android:id="@android:id/icon2"
+    <TextView
+        android:id="@android:id/text2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="5dip"
-        android:gravity="center"
-        android:scaleType="centerInside" />
+        android:layout_marginTop="-4dip"
+        android:textAppearance="?android:attr/textAppearanceSmallInverse" />
 
 </LinearLayout>
diff --git a/res/menu/list.xml b/res/menu/list.xml
index 12cd28a..fbcdd47 100644
--- a/res/menu/list.xml
+++ b/res/menu/list.xml
@@ -33,6 +33,7 @@
 
     <item
         android:id="@+id/menu_accounts"
+        android:icon="@drawable/ic_menu_account_list"
         android:title="@string/menu_accounts" />
 
     <item
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 7d85a40..12630c0 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -18,4 +18,6 @@
     <color name="textColorIconOverlay">#fff</color>
     <color name="textColorIconOverlayShadow">#000</color>
     <color name="sect_secondary">#4fff</color>
+    <color name="fasttrack_disambig">#f2f2f2</color>
+    <color name="fasttrack_disambig_divider">#afafaf</color>
 </resources>
diff --git a/res/drawable-finger/fasttrack_disambig_dither.xml b/res/values/dimens.xml
similarity index 81%
rename from res/drawable-finger/fasttrack_disambig_dither.xml
rename to res/values/dimens.xml
index da43c5d..3c2c2bc 100644
--- a/res/drawable-finger/fasttrack_disambig_dither.xml
+++ b/res/values/dimens.xml
@@ -14,6 +14,6 @@
      limitations under the License.
 -->
 
-<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/fasttrack_disambig"
-    android:dither="true" />
+<resources>
+    <dimen name="fasttrack_shadow">37dip</dimen>
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 033d3b9..ab01fe9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -821,6 +821,11 @@
          was found that could perform the selected action -->
     <string name="fasttrack_missing_app">No application found to handle this action</string>
 
+    <!-- Shown as the checkbox label that, when checked, will store remember the
+         selected choice and shortcut to it in the future.  For example, this would
+         make a selected phone number the default. -->
+    <string name="fasttrack_remember_choice">Remember this choice</string>
+
     <!-- Shown as the header name for a person when the name is missing or unknown. -->
     <string name="fasttrack_missing_name">Unknown</string>
 
diff --git a/src/com/android/contacts/ShowOrCreateActivity.java b/src/com/android/contacts/ShowOrCreateActivity.java
index e0d95ff..c11240e 100755
--- a/src/com/android/contacts/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/ShowOrCreateActivity.java
@@ -35,19 +35,19 @@
 import android.provider.ContactsContract.PhoneLookup;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.util.Log;
 
 /**
  * Handle several edge cases around showing or possibly creating contacts in
  * connected with a specific E-mail address or phone number. Will search based
  * on incoming {@link Intent#getData()} as described by
- * {@link android.provider.Contacts.Intents#SHOW_OR_CREATE_CONTACT}.
- *
+ * {@link Intents#SHOW_OR_CREATE_CONTACT}.
  * <ul>
  * <li>If no matching contacts found, will prompt user with dialog to add to a
  * contact, then will use {@link Intent#ACTION_INSERT_OR_EDIT} to let create new
  * contact or edit new data into an existing one.
- * <li>If one matching contact found, directly show {@link Intent#ACTION_VIEW}
- * that specific contact.
+ * <li>If one matching contact found, show the {@link FastTrackWindow}
+ * associated with the found contact. Will show translucent over the caller.
  * <li>If more than one matching found, show list of matching contacts using
  * {@link Intent#ACTION_SEARCH}.
  * </ul>
@@ -162,6 +162,7 @@
             targetRect = (Rect)extras.getParcelable(Intents.EXTRA_TARGET_RECT);
         } else {
             // TODO: this default rect matches gmail messages, and should move over there
+            Log.w(TAG, "Using default TARGET_RECT");
             targetRect = new Rect(15, 110, 15+18, 110+18);
         }
 
diff --git a/src/com/android/contacts/model/ContactsSource.java b/src/com/android/contacts/model/ContactsSource.java
index b9bd4ae..a74309c 100644
--- a/src/com/android/contacts/model/ContactsSource.java
+++ b/src/com/android/contacts/model/ContactsSource.java
@@ -89,7 +89,7 @@
      * {@link Account} or for matching against {@link Data#RES_PACKAGE}.
      */
     public String resPackageName;
-
+    
     public int titleRes;
     public int iconRes;
 
@@ -127,13 +127,13 @@
         // Handle some well-known sources with hard-coded constraints
         // TODO: move these into adapter-specific XML once schema finalized
         if (HardCodedSources.ACCOUNT_TYPE_GOOGLE.equals(accountType)) {
-            HardCodedSources.buildGoogle(this);
+            HardCodedSources.buildGoogle(context, this);
             return;
         } else if(HardCodedSources.ACCOUNT_TYPE_EXCHANGE.equals(accountType)) {
-            HardCodedSources.buildExchange(this);
+            HardCodedSources.buildExchange(context, this);
             return;
         } else if(HardCodedSources.ACCOUNT_TYPE_FACEBOOK.equals(accountType)) {
-            HardCodedSources.buildFacebook(this);
+            HardCodedSources.buildFacebook(context, this);
             return;
         }
 
diff --git a/src/com/android/contacts/model/HardCodedSources.java b/src/com/android/contacts/model/HardCodedSources.java
index 8e7aadc..7a8c30c 100644
--- a/src/com/android/contacts/model/HardCodedSources.java
+++ b/src/com/android/contacts/model/HardCodedSources.java
@@ -74,7 +74,7 @@
     /**
      * Hard-coded instance of {@link ContactsSource} for Google Contacts.
      */
-    static void buildGoogle(ContactsSource list) {
+    static void buildGoogle(Context context, ContactsSource list) {
         {
             // GOOGLE: STRUCTUREDNAME
             DataKind kind = new DataKind(StructuredName.CONTENT_ITEM_TYPE,
@@ -305,7 +305,7 @@
     /**
      * Hard-coded instance of {@link ContactsSource} for Exchange.
      */
-    static void buildExchange(ContactsSource list) {
+    static void buildExchange(Context context, ContactsSource list) {
         {
             // EXCHANGE: STRUCTUREDNAME
             DataKind kind = new DataKind(StructuredName.CONTENT_ITEM_TYPE,
@@ -450,7 +450,7 @@
     /**
      * Hard-coded instance of {@link ContactsSource} for Facebook.
      */
-    static void buildFacebook(ContactsSource list) {
+    static void buildFacebook(Context context, ContactsSource list) {
         list.accountType = ACCOUNT_TYPE_FACEBOOK;
         list.readOnly = true;
 
@@ -517,9 +517,8 @@
 
         public CharSequence inflateUsing(Context context, Cursor cursor) {
             final EditType type = EntityModifier.getCurrentType(cursor, mKind);
-            final boolean validString = (type != null && type.actionRes > 0);
-            return validString ? context.getPackageManager().getText(mPackageName, type.actionRes,
-                    null) : null;
+            final boolean validString = (type != null && type.actionRes != 0);
+            return validString ? context.getText(type.actionRes) : null;
         }
     }
 
@@ -534,9 +533,8 @@
 
         public CharSequence inflateUsing(Context context, Cursor cursor) {
             final EditType type = EntityModifier.getCurrentType(cursor, mKind);
-            final boolean validString = (type != null && type.actionAltRes > 0);
-            return validString ? context.getPackageManager().getText(mPackageName,
-                    type.actionAltRes, null) : null;
+            final boolean validString = (type != null && type.actionAltRes != 0);
+            return validString ? context.getText(type.actionAltRes) : null;
         }
     }
 }
diff --git a/src/com/android/contacts/ui/EditContactActivity.java b/src/com/android/contacts/ui/EditContactActivity.java
index 0946e39..d96a958 100644
--- a/src/com/android/contacts/ui/EditContactActivity.java
+++ b/src/com/android/contacts/ui/EditContactActivity.java
@@ -24,17 +24,14 @@
 import com.android.contacts.model.ContactsSource;
 import com.android.contacts.model.EntityDelta;
 import com.android.contacts.model.EntityModifier;
-import com.android.contacts.model.HardCodedSources;
 import com.android.contacts.model.Sources;
 import com.android.contacts.model.EntityDelta.ValuesDelta;
 import com.android.contacts.ui.widget.ContactEditorView;
 import com.android.contacts.util.EmptyService;
-import com.android.contacts.util.NotifyingAsyncQueryHandler;
 import com.android.contacts.util.WeakAsyncTask;
 import com.android.internal.widget.ContactHeaderWidget;
 
 import android.accounts.Account;
-import android.accounts.AccountManager;
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
@@ -49,21 +46,16 @@
 import android.content.EntityIterator;
 import android.content.Intent;
 import android.content.OperationApplicationException;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.RemoteException;
-import android.provider.Contacts;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.CommonDataKinds.StructuredName;
 import android.provider.ContactsContract.Contacts.Data;
 import android.util.Log;
-import android.util.SparseArray;
 import android.view.ContextThemeWrapper;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -73,14 +65,11 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
-import android.widget.ImageView;
 import android.widget.ListAdapter;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import java.lang.ref.WeakReference;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -226,7 +215,7 @@
                 target.mContactId = ContactsUtils.queryForContactId(target.getContentResolver(),
                         rawContactId);
                 selection = RawContacts.CONTACT_ID + "=" + target.mContactId;
-            } else if (Contacts.AUTHORITY.equals(authority)) {
+            } else if (android.provider.Contacts.AUTHORITY.equals(authority)) {
                 final long rawContactId = ContentUris.parseId(data);
                 target.mSelectedRawContactId = rawContactId;
                 selection = RawContacts._ID + "=" + rawContactId;
@@ -315,7 +304,7 @@
 
 
     /**
-     * Rebuild tabs to match our underlying {@link #mEntities} object, usually
+     * Rebuild tabs to match our underlying {@link #mState} object, usually
      * called once we've parsed {@link Entity} data or have inserted a new
      * {@link RawContacts}.
      */
diff --git a/src/com/android/contacts/ui/FastTrackWindow.java b/src/com/android/contacts/ui/FastTrackWindow.java
index 5cfbf52..63577d6 100644
--- a/src/com/android/contacts/ui/FastTrackWindow.java
+++ b/src/com/android/contacts/ui/FastTrackWindow.java
@@ -23,11 +23,14 @@
 import com.android.internal.policy.PolicyManager;
 
 import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
 import android.content.ContentUris;
 import android.content.Context;
 import android.content.EntityIterator;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
 import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -36,7 +39,6 @@
 import android.net.Uri;
 import android.provider.ContactsContract;
 import android.provider.SocialContract;
-import android.provider.Contacts.Phones;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Intents;
@@ -74,9 +76,11 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
+import java.lang.ref.SoftReference;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -107,10 +111,13 @@
 
     private NotifyingAsyncQueryHandler mHandler;
     private OnDismissListener mDismissListener;
+    private ResolveCache mResolveCache;
 
     private long mAggId;
     private Rect mAnchor;
 
+    private int mShadowHeight;
+
     private boolean mHasSummary = false;
     private boolean mHasSocial = false;
     private boolean mHasActions = false;
@@ -122,6 +129,9 @@
     private HorizontalScrollView mTrackScroll;
     private ViewGroup mTrack;
     private Animation mTrackAnim;
+
+    private View mFooter;
+    private View mFooterDisambig;
     private ListView mResolveList;
 
     /**
@@ -150,7 +160,7 @@
      * Other mime-types not appearing in this list follow in alphabetic order.
      */
     private static final String[] ORDERED_MIMETYPES = new String[] {
-        Phones.CONTENT_ITEM_TYPE,
+        Phone.CONTENT_ITEM_TYPE,
         Contacts.CONTENT_ITEM_TYPE,
         MIME_SMS_ADDRESS,
         Email.CONTENT_ITEM_TYPE,
@@ -177,8 +187,16 @@
         mArrowUp = (ImageView)mWindow.findViewById(R.id.arrow_up);
         mArrowDown = (ImageView)mWindow.findViewById(R.id.arrow_down);
 
+        mResolveCache = new ResolveCache(mContext);
+
+        final Resources res = mContext.getResources();
+        mShadowHeight = res.getDimensionPixelSize(R.dimen.fasttrack_shadow);
+
         mTrack = (ViewGroup)mWindow.findViewById(R.id.fasttrack);
         mTrackScroll = (HorizontalScrollView)mWindow.findViewById(R.id.scroll);
+
+        mFooter = mWindow.findViewById(R.id.footer);
+        mFooterDisambig = mWindow.findViewById(R.id.footer_disambig);
         mResolveList = (ListView)mWindow.findViewById(android.R.id.list);
 
         // Prepare track entrance animation
@@ -296,7 +314,6 @@
         mDecor.measure(l.width, l.height);
 
         final int blockHeight = mDecor.getMeasuredHeight();
-        final int arrowHeight = mArrowUp.getDrawable().getIntrinsicHeight();
 
         l.gravity = Gravity.TOP | Gravity.LEFT;
         l.x = 0;
@@ -305,13 +322,13 @@
             // Show downwards callout when enough room, aligning bottom block
             // edge with top of anchor area, and adjusting to inset arrow.
             showArrow(R.id.arrow_down, mAnchor.centerX());
-            l.y = mAnchor.top - blockHeight + arrowHeight;
+            l.y = mAnchor.top - blockHeight + mShadowHeight;
 
         } else {
             // Otherwise show upwards callout, aligning block top with bottom of
             // anchor area, and adjusting to inset arrow.
             showArrow(R.id.arrow_up, mAnchor.centerX());
-            l.y = mAnchor.bottom - arrowHeight;
+            l.y = mAnchor.bottom - mShadowHeight;
 
         }
 
@@ -345,12 +362,13 @@
         mHandler.cancelOperation(TOKEN_DATA);
 
         // Clear track actions and scroll to hard left
+        mResolveCache.clear();
         mActions.clear();
         mTrack.removeViews(1, mTrack.getChildCount() - 2);
         mTrackScroll.fullScroll(View.FOCUS_LEFT);
         mWasDownArrow = false;
 
-        showResolveList(View.GONE);
+        setResolveVisible(false);
 
         mQuerying = false;
         mHasSummary = false;
@@ -551,8 +569,9 @@
     private interface Action {
         public CharSequence getHeader();
         public CharSequence getBody();
-        public Drawable getIcon();
-        public boolean isValid();
+
+        public String getMimeType();
+        public Drawable getFallbackIcon();
 
         /**
          * Build an {@link Intent} that will perform this action.
@@ -568,13 +587,13 @@
         private final Context mContext;
         private final ContactsSource mSource;
         private final DataKind mKind;
+        private final String mMimeType;
 
         private CharSequence mHeader;
         private CharSequence mBody;
         private Intent mIntent;
 
         private boolean mAlternate;
-        private boolean mValidAction;
 
         /**
          * Create an action from common {@link Data} elements.
@@ -584,6 +603,7 @@
             mContext = context;
             mSource = source;
             mKind = kind;
+            mMimeType = mimeType;
 
             // Inflate strings from cursor
             mAlternate = MIME_SMS_ADDRESS.equals(mimeType);
@@ -625,10 +645,6 @@
                 final Uri dataUri = ContentUris.withAppendedId(Data.CONTENT_URI, dataId);
                 mIntent = new Intent(Intent.ACTION_VIEW, dataUri);
             }
-
-            // TODO: resolve our created intent to pull correct icon
-            final PackageManager pm = context.getPackageManager();
-            mValidAction = pm.queryIntentActivities(mIntent, 0).size() > 0;
         }
 
         /** {@inheritDoc} */
@@ -642,12 +658,15 @@
         }
 
         /** {@inheritDoc} */
-        public Drawable getIcon() {
+        public String getMimeType() {
+            return mMimeType;
+        }
+
+        /** {@inheritDoc} */
+        public Drawable getFallbackIcon() {
             // Bail early if no valid resources
             if (mSource.resPackageName == null) return null;
 
-            // TODO: switch to using ResolveInfo icon instead
-
             final PackageManager pm = mContext.getPackageManager();
             if (mAlternate && mKind.iconAltRes > 0) {
                 return pm.getDrawable(mSource.resPackageName, mKind.iconAltRes, null);
@@ -659,16 +678,14 @@
         }
 
         /** {@inheritDoc} */
-        public boolean isValid() {
-            return mValidAction;
-        }
-
-        /** {@inheritDoc} */
         public Intent getIntent() {
             return mIntent;
         }
     }
 
+    /**
+     * Specific action that launches the profile card.
+     */
     private static class ProfileAction implements Action {
         private final Context mContext;
         private final long mId;
@@ -689,13 +706,13 @@
         }
 
         /** {@inheritDoc} */
-        public Drawable getIcon() {
-            return mContext.getResources().getDrawable(R.drawable.ic_contacts_details);
+        public String getMimeType() {
+            return Contacts.CONTENT_ITEM_TYPE;
         }
 
         /** {@inheritDoc} */
-        public boolean isValid() {
-            return true;
+        public Drawable getFallbackIcon() {
+            return mContext.getResources().getDrawable(R.drawable.ic_contacts_details);
         }
 
         /** {@inheritDoc} */
@@ -706,6 +723,96 @@
     }
 
     /**
+     * Internally hold a cache of scaled icons based on {@link PackageManager}
+     * queries, keyed internally on MIME-type.
+     */
+    private static class ResolveCache {
+        private Context mContext;
+        private PackageManager mPackageManager;
+
+        /**
+         * Cached entry holding the best {@link ResolveInfo} for a specific
+         * MIME-type, along with a {@link SoftReference} to its icon.
+         */
+        private static class Entry {
+            public ResolveInfo bestResolve;
+            public SoftReference<Drawable> icon;
+        }
+
+        private HashMap<String, Entry> mCache = new HashMap<String, Entry>();
+
+        public ResolveCache(Context context) {
+            mContext = context;
+            mPackageManager = context.getPackageManager();
+        }
+
+        /**
+         * Get the {@link Entry} best associated with the given {@link Action},
+         * or create and populate a new one if it doesn't exist.
+         */
+        protected Entry getEntry(Action action) {
+            final String mimeType = action.getMimeType();
+            Entry entry = mCache.get(mimeType);
+            if (entry == null) {
+                entry = new Entry();
+
+                final Intent intent = action.getIntent();
+                final List<ResolveInfo> matches = mPackageManager.queryIntentActivities(intent,
+                        PackageManager.MATCH_DEFAULT_ONLY);
+
+                if (matches.size() > 0) {
+                    final ResolveInfo bestResolve = matches.get(0);
+                    final Drawable icon = bestResolve.loadIcon(mPackageManager);
+
+                    entry.bestResolve = bestResolve;
+                    entry.icon = new SoftReference<Drawable>(icon);
+                }
+
+                mCache.put(mimeType, entry);
+            }
+            return entry;
+        }
+
+        /**
+         * Check {@link PackageManager} to see if any apps offer to handle the
+         * given {@link Action}.
+         */
+        public boolean hasResolve(Action action) {
+            return getEntry(action).bestResolve != null;
+        }
+
+        /**
+         * Find the best description for the given {@link Action}, usually used
+         * for accessibility purposes.
+         */
+        public CharSequence getDescription(Action action) {
+            final CharSequence actionHeader = action.getHeader();
+            final ResolveInfo info = getEntry(action).bestResolve;
+            if (!TextUtils.isEmpty(actionHeader)) {
+                return actionHeader;
+            } else if (info != null) {
+                return info.loadLabel(mPackageManager);
+            } else {
+                return null;
+            }
+        }
+
+        /**
+         * Return the best icon for the given {@link Action}, which is usually
+         * based on the {@link ResolveInfo} found through a
+         * {@link PackageManager} query.
+         */
+        public Drawable getIcon(Action action) {
+            final SoftReference<Drawable> iconRef = getEntry(action).icon;
+            return (iconRef == null) ? null : iconRef.get();
+        }
+
+        public void clear() {
+            mCache.clear();
+        }
+    }
+
+    /**
      * Provide a strongly-typed {@link LinkedList} that holds a list of
      * {@link Action} objects.
      */
@@ -793,7 +900,7 @@
             }
 
             // If phone number, also insert as text message action
-            if (Phones.CONTENT_ITEM_TYPE.equals(mimeType)) {
+            if (Phone.CONTENT_ITEM_TYPE.equals(mimeType) && kind != null) {
                 final Action action = new DataAction(mContext, source, MIME_SMS_ADDRESS, kind,
                         cursor);
                 considerAdd(action, MIME_SMS_ADDRESS);
@@ -825,7 +932,7 @@
      * {@link Action#getIntent()}.
      */
     private void considerAdd(Action action, String mimeType) {
-        if (action.isValid()) {
+        if (mResolveCache.hasResolve(action)) {
             mActions.collect(mimeType, action);
         }
     }
@@ -847,7 +954,10 @@
         }
 
         // Set icon and listen for clicks
-        view.setImageDrawable(firstInfo.getIcon());
+        final CharSequence descrip = mResolveCache.getDescription(firstInfo);
+        final Drawable icon = mResolveCache.getIcon(firstInfo);
+        view.setContentDescription(descrip);
+        view.setImageDrawable(icon);
         view.setOnClickListener(this);
         return view;
     }
@@ -860,22 +970,26 @@
 
     /**
      * Flag indicating if {@link #mArrowDown} was visible during the last call
-     * to {@link #showResolveList(int)}. Used to decide during a later call if
-     * the arrow should be restored.
+     * to {@link #setResolveVisible(boolean)}. Used to decide during a later
+     * call if the arrow should be restored.
      */
     private boolean mWasDownArrow = false;
 
     /**
-     * Helper for showing and hiding {@link #mResolveList}, which will correctly
-     * manage {@link #mArrowDown} as needed.
+     * Helper for showing and hiding {@link #mFooterDisambig}, which will
+     * correctly manage {@link #mArrowDown} as needed.
      */
-    private void showResolveList(int visibility) {
+    private void setResolveVisible(boolean visible) {
         // Show or hide the resolve list if needed
-        if (mResolveList.getVisibility() != visibility) {
-            mResolveList.setVisibility(visibility);
-        }
+        boolean visibleNow = mFooterDisambig.getVisibility() == View.VISIBLE;
 
-        if (visibility == View.VISIBLE) {
+        // Bail early if already in desired state
+        if (visible == visibleNow) return;
+
+        mFooter.setVisibility(visible ? View.GONE : View.VISIBLE);
+        mFooterDisambig.setVisibility(visible ? View.VISIBLE : View.GONE);
+
+        if (visible) {
             // If showing list, then hide and save state of down arrow
             mWasDownArrow = mWasDownArrow || (mArrowDown.getVisibility() == View.VISIBLE);
             mArrowDown.setVisibility(View.INVISIBLE);
@@ -890,14 +1004,8 @@
         final Object tag = v.getTag();
         if (tag instanceof Intent) {
             // Hide the resolution list, if present
-            showResolveList(View.GONE);
-
-            // Dismiss track entirely if switching to dialer
-            final Intent intent = (Intent)tag;
-            final String action = intent.getAction();
-            if (Intent.ACTION_DIAL.equals(action)) {
-                this.dismiss();
-            }
+            setResolveVisible(false);
+            this.dismiss();
 
             try {
                 // Incoming tag is concrete intent, so try launching
@@ -910,7 +1018,7 @@
             final ActionList children = (ActionList)tag;
 
             // Show resolution list and set adapter
-            showResolveList(View.VISIBLE);
+            setResolveVisible(true);
 
             mResolveList.setOnItemClickListener(this);
             mResolveList.setAdapter(new BaseAdapter() {
@@ -933,12 +1041,11 @@
 
                     // Set action title based on summary value
                     final Action action = (Action)getItem(position);
+                    final Drawable icon = mResolveCache.getIcon(action);
 
-                    ImageView icon1 = (ImageView)convertView.findViewById(android.R.id.icon1);
                     TextView text1 = (TextView)convertView.findViewById(android.R.id.text1);
                     TextView text2 = (TextView)convertView.findViewById(android.R.id.text2);
 
-                    icon1.setImageDrawable(action.getIcon());
                     text1.setText(action.getHeader());
                     text2.setText(action.getBody());
 
@@ -959,8 +1066,8 @@
                 && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
             // Back key will first dismiss any expanded resolve list, otherwise
             // it will close the entire dialog.
-            if (mResolveList.getVisibility() == View.VISIBLE) {
-                showResolveList(View.GONE);
+            if (mFooterDisambig.getVisibility() == View.VISIBLE) {
+                setResolveVisible(false);
             } else {
                 dismiss();
             }
