am 2b641738: (-s ours) Import translations. DO NOT MERGE

* commit '2b64173828f860898f0f35a03f70e06c6dcc9060':
  Import translations. DO NOT MERGE
diff --git a/res/drawable-hdpi/ic_attachment_holo_light.png b/res/drawable-hdpi/ic_attachment_holo_light.png
index 8598cb2..dbde178 100644
--- a/res/drawable-hdpi/ic_attachment_holo_light.png
+++ b/res/drawable-hdpi/ic_attachment_holo_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_expander_maximized_holo_light.png b/res/drawable-hdpi/ic_menu_expander_maximized_holo_light.png
deleted file mode 100644
index 924e8bb..0000000
--- a/res/drawable-hdpi/ic_menu_expander_maximized_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_expander_minimized_holo_light.png b/res/drawable-hdpi/ic_menu_expander_minimized_holo_light.png
deleted file mode 100644
index de78288..0000000
--- a/res/drawable-hdpi/ic_menu_expander_minimized_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_attachment_holo_light.png b/res/drawable-mdpi/ic_attachment_holo_light.png
index 3669539..62585d9 100644
--- a/res/drawable-mdpi/ic_attachment_holo_light.png
+++ b/res/drawable-mdpi/ic_attachment_holo_light.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_expander_maximized_holo_light.png b/res/drawable-mdpi/ic_menu_expander_maximized_holo_light.png
deleted file mode 100644
index e2a2dfd..0000000
--- a/res/drawable-mdpi/ic_menu_expander_maximized_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_expander_minimized_holo_light.png b/res/drawable-mdpi/ic_menu_expander_minimized_holo_light.png
deleted file mode 100644
index 7eed231..0000000
--- a/res/drawable-mdpi/ic_menu_expander_minimized_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_attachment_holo_light.png b/res/drawable-xhdpi/ic_attachment_holo_light.png
index ff0d9dd..3024ed2 100644
--- a/res/drawable-xhdpi/ic_attachment_holo_light.png
+++ b/res/drawable-xhdpi/ic_attachment_holo_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_expander_maximized_holo_light.png b/res/drawable-xhdpi/ic_menu_expander_maximized_holo_light.png
deleted file mode 100644
index b174cf8..0000000
--- a/res/drawable-xhdpi/ic_menu_expander_maximized_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_expander_minimized_holo_light.png b/res/drawable-xhdpi/ic_menu_expander_minimized_holo_light.png
deleted file mode 100644
index fab561e..0000000
--- a/res/drawable-xhdpi/ic_menu_expander_minimized_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_attachment_holo_light.png b/res/drawable-xxhdpi/ic_attachment_holo_light.png
index c018930..d355e72 100644
--- a/res/drawable-xxhdpi/ic_attachment_holo_light.png
+++ b/res/drawable-xxhdpi/ic_attachment_holo_light.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_expander_maximized_holo_light.png b/res/drawable-xxhdpi/ic_menu_expander_maximized_holo_light.png
deleted file mode 100644
index a42aec2..0000000
--- a/res/drawable-xxhdpi/ic_menu_expander_maximized_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_expander_minimized_holo_light.png b/res/drawable-xxhdpi/ic_menu_expander_minimized_holo_light.png
deleted file mode 100644
index 1ca2e46..0000000
--- a/res/drawable-xxhdpi/ic_menu_expander_minimized_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/attachment.xml b/res/layout/compose_attachment_bar.xml
similarity index 83%
rename from res/layout/attachment.xml
rename to res/layout/compose_attachment_bar.xml
index c82b998..9c3aed6 100644
--- a/res/layout/attachment.xml
+++ b/res/layout/compose_attachment_bar.xml
@@ -22,18 +22,18 @@
 
     <ImageView
         android:id="@+id/thumbnail"
-        android:src="@drawable/ic_attachment_holo_light"
-        android:layout_gravity="center_vertical"
-        style="@style/AttachmentThumbnail"/>
+        android:layout_width="48dp"
+        android:layout_height="match_parent"
+        android:scaleType="center"
+        android:src="@drawable/ic_attachment_holo_light" />
 
     <!-- Attachment name and size -->
     <LinearLayout
         android:orientation="vertical"
-        android:layout_width="0dip"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_weight="1"
-        android:layout_gravity="center_vertical"
-        style="@style/AttachmentTextContainer" >
+        android:layout_gravity="center_vertical" >
 
         <TextView android:id="@+id/attachment_name"
             style="@style/AttachmentName" />
@@ -46,7 +46,7 @@
     <!-- Remove button -->
     <ImageButton android:id="@+id/remove_attachment"
         android:src="@drawable/ic_cancel_holo_light"
-        android:layout_width="48dip"
+        android:layout_width="48dp"
         android:layout_height="match_parent"
         android:clickable="true"
         android:gravity="center"
diff --git a/res/layout/conversation_item_view_normal.xml b/res/layout/conversation_item_view_normal.xml
index f1f24ae..4f42e9c 100644
--- a/res/layout/conversation_item_view_normal.xml
+++ b/res/layout/conversation_item_view_normal.xml
@@ -107,20 +107,18 @@
                     android:id="@+id/date"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginTop="12dp"
+                    android:layout_marginTop="15dp"
                     android:textSize="12sp"
                     android:lines="1"
                     android:includeFontPadding="false"
                     android:text="@string/long_string"
                     style="@style/ConversationListDateStyle" />
 
-                <!-- top margin should be 12dp, but the asset has 8dp built-in padding -->
-                <!-- left padding should be 8dp, but the asset has 2dp built-in padding -->
                 <ImageView
                     android:id="@+id/paperclip"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginTop="4dp"
+                    android:layout_marginTop="16dp"
                     android:src="@drawable/ic_attachment_holo_light"
                     style="@style/ConversationListPaperclipStyle" />
 
diff --git a/res/layout/conversation_item_view_normal_spacious.xml b/res/layout/conversation_item_view_normal_spacious.xml
index c93d41d..a83cfc8 100644
--- a/res/layout/conversation_item_view_normal_spacious.xml
+++ b/res/layout/conversation_item_view_normal_spacious.xml
@@ -113,13 +113,11 @@
                     android:text="@string/long_string"
                     style="@style/ConversationListDateStyle" />
 
-                <!-- top margin should be 16dp, but the asset has 8dp built-in padding -->
-                <!-- left padding should be 8dp, but the asset has 2dp built-in padding -->
                 <ImageView
                     android:id="@+id/paperclip"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginTop="8dp"
+                    android:layout_marginTop="17dp"
                     android:src="@drawable/ic_attachment_holo_light"
                     style="@style/ConversationListPaperclipStyle" />
 
diff --git a/res/layout/conversation_item_view_wide.xml b/res/layout/conversation_item_view_wide.xml
index adc6f4c..6922634 100644
--- a/res/layout/conversation_item_view_wide.xml
+++ b/res/layout/conversation_item_view_wide.xml
@@ -118,13 +118,11 @@
                     android:includeFontPadding="false"
                     android:text="@string/long_string" />
 
-                <!-- cancel out the asset's 8dp built-in top padding -->
-                <!-- left padding should be 8dp, but the asset has 2dp built-in padding -->
                 <ImageView
                     android:id="@+id/paperclip"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginTop="-8dp"
+                    android:layout_marginTop="1dp"
                     android:src="@drawable/ic_attachment_holo_light"
                     style="@style/ConversationListWidePaperclipStyle" />
 
diff --git a/res/layout/conversation_message_details_header.xml b/res/layout/conversation_message_details_header.xml
index 0a4fad8..209e9cd 100644
--- a/res/layout/conversation_message_details_header.xml
+++ b/res/layout/conversation_message_details_header.xml
@@ -15,23 +15,27 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/details_collapsed_content"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:layout_marginTop="@dimen/message_details_header_margin_top"
+    android:paddingBottom="@dimen/message_details_header_padding_bottom"
     android:background="?android:attr/selectableItemBackground"
-    android:paddingBottom="@dimen/message_details_header_vertical_padding"
+    android:orientation="vertical"
     style="@style/MessageDetailsHeaderStyle" >
     <TextView
-        android:id="@+id/recipients_summary"
-        android:layout_width="0dp"
-        android:layout_gravity="fill_horizontal"
-        android:singleLine="true"
-        android:bufferType="spannable"
-        style="@style/RecipientSummaryStyle" />
-    <ImageView
-        android:layout_width="wrap_content"
+        android:id="@+id/recipients_summary_collapsed"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:contentDescription="@string/expand_recipient_details"
-        android:src="@drawable/ic_menu_expander_minimized_holo_light" />
-</GridLayout>
+        android:singleLine="true"
+        style="@style/MessageHeaderSmallStyle" />
+    <TextView
+        android:id="@+id/details_text"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:text="@string/details"
+        android:textColor="@color/conv_header_text_link_blue"
+        style="@style/MessageHeaderSmallStyle" />
+</LinearLayout>
diff --git a/res/layout/conversation_message_details_header_expanded.xml b/res/layout/conversation_message_details_header_expanded.xml
index 94bc9dc..8585b3d 100644
--- a/res/layout/conversation_message_details_header_expanded.xml
+++ b/res/layout/conversation_message_details_header_expanded.xml
@@ -20,17 +20,40 @@
     android:id="@+id/details_expanded_content"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:layout_marginTop="@dimen/message_details_header_margin_top"
+    app:columnCount="2"
+    app:rowCount="8"
     android:background="?android:attr/selectableItemBackground"
-    app:columnCount="3"
-    app:rowCount="6"
     style="@style/MessageDetailsHeaderStyle" >
 
     <TextView
+        android:id="@+id/recipients_summary_expanded"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:focusable="true"
+        app:layout_column="0"
+        app:layout_row="0"
+        app:layout_columnSpan="2"
+        android:singleLine="true"
+        style="@style/MessageHeaderSmallStyle" />
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:focusable="true"
+        app:layout_column="0"
+        app:layout_row="1"
+        app:layout_columnSpan="2"
+        android:text="@string/hide_details"
+        android:textColor="@color/conv_header_text_link_blue"
+        style="@style/MessageHeaderSmallStyle" />
+    <TextView
         android:id="@+id/from_heading"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_column="0"
-        app:layout_row="0"
+        app:layout_row="2"
         android:text="@string/from_heading"
         android:visibility="gone"
         style="@style/MessageHeaderDetailsHeadingStyle" />
@@ -38,27 +61,20 @@
         android:id="@+id/from_details"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_gravity="fill_horizontal"
         android:layout_marginBottom="4dp"
         app:layout_column="1"
-        app:layout_row="0"
+        app:layout_row="2"
         android:visibility="gone"
         style="@style/MessageDetailsValueStyle" />
-    <ImageView
-        android:id="@+id/details_expander"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        app:layout_column="2"
-        app:layout_row="0"
-        android:contentDescription="@string/collapse_recipient_details"
-        android:src="@drawable/ic_menu_expander_maximized_holo_light"
-        style="@style/DetailsExpanderStyle" />
     <TextView
         android:id="@+id/replyto_heading"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_column="0"
-        app:layout_row="1"
+        app:layout_row="3"
         android:text="@string/replyto_heading"
         android:visibility="gone"
         style="@style/MessageHeaderDetailsHeadingStyle" />
@@ -66,18 +82,20 @@
         android:id="@+id/replyto_details"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_gravity="fill_horizontal"
         android:layout_marginBottom="4dp"
         app:layout_column="1"
-        app:layout_row="1"
+        app:layout_row="3"
         android:visibility="gone"
         style="@style/MessageDetailsValueStyle" />
     <TextView
         android:id="@+id/to_heading"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_column="0"
-        app:layout_row="2"
+        app:layout_row="4"
         android:text="@string/to_heading"
         android:visibility="gone"
         style="@style/MessageHeaderDetailsHeadingStyle" />
@@ -85,18 +103,20 @@
         android:id="@+id/to_details"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_gravity="fill_horizontal"
         android:layout_marginBottom="4dp"
         app:layout_column="1"
-        app:layout_row="2"
+        app:layout_row="4"
         android:visibility="gone"
         style="@style/MessageDetailsValueStyle" />
     <TextView
         android:id="@+id/cc_heading"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_column="0"
-        app:layout_row="3"
+        app:layout_row="5"
         android:text="@string/cc_heading"
         android:visibility="gone"
         style="@style/MessageHeaderDetailsHeadingStyle" />
@@ -104,18 +124,20 @@
         android:id="@+id/cc_details"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_gravity="fill_horizontal"
         android:layout_marginBottom="4dp"
         app:layout_column="1"
-        app:layout_row="3"
+        app:layout_row="5"
         android:visibility="gone"
         style="@style/MessageDetailsValueStyle" />
     <TextView
         android:id="@+id/bcc_heading"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_column="0"
-        app:layout_row="4"
+        app:layout_row="6"
         android:text="@string/bcc_heading"
         android:visibility="gone"
         style="@style/MessageHeaderDetailsHeadingStyle" />
@@ -123,18 +145,20 @@
         android:id="@+id/bcc_details"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_gravity="fill_horizontal"
         android:layout_marginBottom="4dp"
         app:layout_column="1"
-        app:layout_row="4"
+        app:layout_row="6"
         android:visibility="gone"
         style="@style/MessageDetailsValueStyle" />
     <TextView
         android:id="@+id/date_heading"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_column="0"
-        app:layout_row="5"
+        app:layout_row="7"
         android:text="@string/date_heading"
         android:visibility="gone"
         style="@style/MessageHeaderDetailsHeadingStyle" />
@@ -142,10 +166,11 @@
         android:id="@+id/date_details"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
+        android:focusable="true"
         app:layout_gravity="fill_horizontal"
         android:layout_marginBottom="4dp"
         app:layout_column="1"
-        app:layout_row="5"
+        app:layout_row="7"
         android:visibility="gone"
         style="@style/MessageDetailsValueStyle" />
 
diff --git a/res/layout/conversation_message_upper_header.xml b/res/layout/conversation_message_upper_header.xml
index 0a493c6..880560c 100644
--- a/res/layout/conversation_message_upper_header.xml
+++ b/res/layout/conversation_message_upper_header.xml
@@ -25,7 +25,6 @@
         android:id="@+id/photo"
         android:layout_width="@dimen/message_header_contact_photo_width"
         android:layout_height="@dimen/message_header_contact_photo_height"
-        android:layout_gravity="center_vertical"
         android:layout_marginTop="12dp"
         android:layout_marginBottom="12dp"
         android:scaleType="centerCrop"
@@ -36,14 +35,25 @@
         android:id="@+id/draft"
         android:layout_width="@dimen/message_header_contact_photo_width"
         android:layout_height="@dimen/message_header_contact_photo_height"
-        android:layout_gravity="center_vertical"
         android:layout_marginTop="12dp"
         android:layout_marginBottom="12dp"
         android:visibility="gone"
         android:scaleType="center"
         android:src="@drawable/ic_draft"
         style="@style/MessageHeaderContactImageStyle" />
-    <include layout="@layout/conversation_message_upper_header_text" />
-    <include layout="@layout/conversation_message_upper_header_actions" />
+    <LinearLayout
+        android:id="@+id/actions_and_details"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+            <include layout="@layout/conversation_message_upper_header_text" />
+            <include layout="@layout/conversation_message_upper_header_actions" />
+        </LinearLayout>
+    </LinearLayout>
 
 </LinearLayout>
diff --git a/res/layout/conversation_message_upper_header_text.xml b/res/layout/conversation_message_upper_header_text.xml
index 849a058..dcab4ed 100644
--- a/res/layout/conversation_message_upper_header_text.xml
+++ b/res/layout/conversation_message_upper_header_text.xml
@@ -19,52 +19,48 @@
 <!-- NOTE: Be careful when setting title_container's marginEnd.
      The value is updated in code. See uses of
      MessageHeaderView.mCollapsedTitleContainerMarginEnd -->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/title_container"
-    android:layout_width="0dip"
+    android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:layout_weight="1"
-    android:layout_marginTop="12dp"
+    android:layout_marginTop="8dp"
+    android:orientation="vertical"
     style="@style/MessageUpperHeaderTextStyle" >
 
-    <TextView
-        android:id="@+id/upper_date"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:visibility="gone"
-        android:lines="1"
-        style="@style/MessageHeaderUpperDateStyle" />
-    <ImageView
-        android:id="@+id/attachment"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toStartOf="@id/upper_date"
-        android:layout_toLeftOf="@id/upper_date"
-        android:src="@drawable/ic_attachment_holo_light"
-        style="@style/AttachmentIconStyle" />
-    <TextView
-        android:id="@+id/sender_name"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toStartOf="@id/attachment"
-        android:layout_toLeftOf="@id/attachment"
-        style="@style/MessageSenderNameStyle" />
-    <TextView
-        android:id="@+id/sender_email"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/sender_name"
-        style="@style/MessageHeaderSubtitleStyle" />
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        <TextView
+            android:id="@+id/sender_name"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            style="@style/MessageSenderNameStyle" />
+        <ImageView
+            android:id="@+id/attachment"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:paddingLeft="@dimen/attachment_icon_padding"
+            android:paddingRight="@dimen/attachment_icon_padding"
+            android:src="@drawable/ic_attachment_holo_light"/>
+        <TextView
+            android:id="@+id/upper_date"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_marginTop="@dimen/upper_date_margin"
+            android:singleLine="true"
+            style="@style/MessageHeaderSmallStyle" />
+    </LinearLayout>
     <TextView
         android:id="@+id/send_date"
-        android:layout_width="wrap_content"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_below="@id/sender_email"
         style="@style/MessageHeaderSubtitleStyle" />
     <TextView
         android:id="@+id/email_snippet"
-        android:layout_width="wrap_content"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_below="@id/sender_name"
         style="@style/MessageHeaderSnippetStyle" />
-</RelativeLayout>
+</LinearLayout>
diff --git a/res/layout/widget_conversation_list_item.xml b/res/layout/widget_conversation_list_item.xml
index 891db59..ff736af 100644
--- a/res/layout/widget_conversation_list_item.xml
+++ b/res/layout/widget_conversation_list_item.xml
@@ -55,8 +55,9 @@
                 android:layout_weight="1"
                 android:singleLine="true"
                 android:ellipsize="end"
+                android:textAlignment="viewStart"
+                android:textColor="@color/dark_gray_text_color"
                 android:textSize="@dimen/senders_font_size"
-                android:textColor="#58585b"
                 android:includeFontPadding="false"
                 style="@style/WidgetSendersStyle" />
             <!-- Use negative margins to align attachment icon with text -->
@@ -64,12 +65,17 @@
                 android:id="@+id/widget_attachment"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="-4sp"/>
+                android:layout_marginTop="4dp"
+                android:layout_marginLeft="4dp"
+                android:layout_marginRight="4dp"
+                android:src="@drawable/ic_attachment_holo_light" />
             <TextView
                 android:id="@+id/widget_date"
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
-                android:gravity="top" />
+                android:gravity="top"
+                android:textColor="@color/date_text_color"
+                android:textSize="@dimen/widget_date_font_size" />
         </LinearLayout>
 
         <TextView
@@ -79,7 +85,10 @@
             android:layout_marginLeft="16dip"
             android:layout_marginRight="16dip"
             android:maxLines="2"
-            android:includeFontPadding="false" />
+            android:includeFontPadding="false"
+            android:textAlignment="viewStart"
+            android:textColor="@color/dark_gray_text_color"
+            android:textSize="@dimen/widget_subject_font_size" />
         <LinearLayout
             android:id="@+id/labels"
             android:layout_width="wrap_content"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index e61e03e..27f1644 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Vouerinstellings"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Instellings"</string>
     <string name="menu_search" msgid="5297197523031943248">"Soek"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigasie"</string>
     <string name="mark_important" msgid="6904096897104265870">"Merk as belangrik"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Merk as onbelangrik"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Voeg Cc/Bcc by"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Wys <xliff:g id="COUNT">%1$d</xliff:g> nuwe boodskappe."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Vou ontvanger se details uit"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Vou ontvanger se details in"</string>
+    <string name="details" msgid="5065930681696657503">"Details"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Versteek details"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"aan <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Wys kontakinligting vir <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Wys kontakinligting"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 6da1d7d..df9a308 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"የአቃፊ ቅንብሮች"</string>
     <string name="menu_settings" msgid="6007027046949837282">"ቅንብሮች"</string>
     <string name="menu_search" msgid="5297197523031943248">"ፍለጋ"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"አሰሳ"</string>
     <string name="mark_important" msgid="6904096897104265870">"አስፈላጊ የሚል ምልክት አድርግ"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"አስፈላጊ አይደለም የሚል ምልክት አድርግ"</string>
     <string name="add_cc_label" msgid="504861315425773180">"ካርቦን ቅጂ/ስውር ቅጂ አክል"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g> አዲስ መልዕክቶችን አሳይ።"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"የተቀባይ ዝርዝሮችን ዘርጋ"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"የተቀባይ ዝርዝሮች ሰብስብ"</string>
+    <string name="details" msgid="5065930681696657503">"ዝርዝሮች"</string>
+    <string name="hide_details" msgid="7022374044607095589">"ዝርዝሮችን ደብቅ"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"ለ<xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"የ<xliff:g id="NAME">%1$s</xliff:g> የእውቂያ መረጃ አሳይ"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"የዕውቂያ መረጃ አሳይ"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 8a6ba93..27607b8 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"إعدادات المجلد"</string>
     <string name="menu_settings" msgid="6007027046949837282">"إعدادات"</string>
     <string name="menu_search" msgid="5297197523031943248">"بحث"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"التنقل"</string>
     <string name="mark_important" msgid="6904096897104265870">"وضع علامة كمهمة"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"وضع علامة كغير مهمة"</string>
     <string name="add_cc_label" msgid="504861315425773180">"إضافة نسخة/ مخفية"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"عرض <xliff:g id="COUNT">%1$d</xliff:g> من الرسائل الجديدة."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"توسيع تفاصيل المستلم"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"تصغير تفاصيل المستلم"</string>
+    <string name="details" msgid="5065930681696657503">"التفاصيل"</string>
+    <string name="hide_details" msgid="7022374044607095589">"إخفاء التفاصيل"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"إلى <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"عرض معلومات جهة الاتصال لـ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"عرض معلومات جهة الاتصال"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 673f3e6..a97724c 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Настройки за папката"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Настройки"</string>
     <string name="menu_search" msgid="5297197523031943248">"Търсене"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Придвижване"</string>
     <string name="mark_important" msgid="6904096897104265870">"Означаване като важно"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Означаване като маловажно"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Добавяне на Як:/Ск:"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Показване на <xliff:g id="COUNT">%1$d</xliff:g> нови съобщения."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Разгъване на подробностите за получателя"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Свиване на подробностите за получателя"</string>
+    <string name="details" msgid="5065930681696657503">"Подробности"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Скриване на подробностите"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"до <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Показване на информацията за връзка със: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Показване на информацията за връзка"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 623498e..5227afe 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Configuració de la carpeta"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Configuració"</string>
     <string name="menu_search" msgid="5297197523031943248">"Cerca"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navegació"</string>
     <string name="mark_important" msgid="6904096897104265870">"Marca com a important"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Marca com a no important"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Afegeix Cc/Cco"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Mostra <xliff:g id="COUNT">%1$d</xliff:g> missatges nous."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Amplia els detalls del destinatari"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Redueix les dades del destinatari"</string>
+    <string name="details" msgid="5065930681696657503">"Detalls"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Amaga els detalls"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"per a <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Mostra la informació de contacte de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Mostra la informació de contacte"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 8f5f2ad..ad83fc8 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Nastavení složek"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Nastavení"</string>
     <string name="menu_search" msgid="5297197523031943248">"Vyhledat"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigace"</string>
     <string name="mark_important" msgid="6904096897104265870">"Označit jako důležité"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Označit jako nedůležité"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Přidat kopii/skrytou"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Zobrazit nové zprávy: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Rozbalit podrobnosti o příjemci"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Sbalit podrobnosti o příjemci"</string>
+    <string name="details" msgid="5065930681696657503">"Podrobnosti"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Skrýt podrobnosti"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"komu: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Zobrazit kontaktní údaje uživatele <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Zobrazit kontaktní údaje"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 3004af1..5e5f6e4 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Indstillinger for mapper"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Indstillinger"</string>
     <string name="menu_search" msgid="5297197523031943248">"Søg"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigation"</string>
     <string name="mark_important" msgid="6904096897104265870">"Markér som vigtig"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Markér som uvigtig"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Tilføj Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Vis <xliff:g id="COUNT">%1$d</xliff:g> nye meddelelser."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Udvid modtageroplysninger"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Skjul modtageroplysninger"</string>
+    <string name="details" msgid="5065930681696657503">"Oplysninger"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Skjul oplysninger"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"til <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Vis kontaktoplysninger for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Vis kontaktoplysninger"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 134982c..98ea0db 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Ordnereinstellungen"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Einstellungen"</string>
     <string name="menu_search" msgid="5297197523031943248">"Suche"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigation"</string>
     <string name="mark_important" msgid="6904096897104265870">"Als wichtig markieren"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Als nicht wichtig markieren"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Cc/Bcc hinzufügen"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g> neue Nachrichten anzeigen"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Empfängerdetails maximieren"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Empfängerdetails minimieren"</string>
+    <string name="details" msgid="5065930681696657503">"Details"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Details ausblenden"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"an <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Kontaktinformationen für <xliff:g id="NAME">%1$s</xliff:g> anzeigen"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Kontaktinformationen anzeigen"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 2d70071..ffb81a8 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Ρυθμίσεις φακέλου..."</string>
     <string name="menu_settings" msgid="6007027046949837282">"Ρυθμίσεις"</string>
     <string name="menu_search" msgid="5297197523031943248">"Αναζήτηση"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Πλοήγηση"</string>
     <string name="mark_important" msgid="6904096897104265870">"Επισήμανση ως σημαντικής"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Επισήμανση ως μη σημαντικής"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Προσθήκη Κοιν./Κρ.κοιν."</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Εμφάνιση <xliff:g id="COUNT">%1$d</xliff:g> νέων μηνυμάτων."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Ανάπτυξη στοιχείων παραλήπτη"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Σύμπτυξη στοιχείων παραλήπτη"</string>
+    <string name="details" msgid="5065930681696657503">"Λεπτομέρειες"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Απόκρυψη λεπτομερειών"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"προς <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Εμφάνιση στοιχείων επικοινωνίας για τον χρήστη <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Εμφάνιση στοιχείων επικοινωνίας"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 21ec55a..33ab9bf 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Folder settings"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Settings"</string>
     <string name="menu_search" msgid="5297197523031943248">"Search"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigation"</string>
     <string name="mark_important" msgid="6904096897104265870">"Mark as important"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Mark as not important"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Add Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Show <xliff:g id="COUNT">%1$d</xliff:g> new messages."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Expand recipient details"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Collapse recipient details"</string>
+    <string name="details" msgid="5065930681696657503">"Details"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Hide details"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"to <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Show contact information for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Show contact information"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 21ec55a..33ab9bf 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Folder settings"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Settings"</string>
     <string name="menu_search" msgid="5297197523031943248">"Search"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigation"</string>
     <string name="mark_important" msgid="6904096897104265870">"Mark as important"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Mark as not important"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Add Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Show <xliff:g id="COUNT">%1$d</xliff:g> new messages."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Expand recipient details"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Collapse recipient details"</string>
+    <string name="details" msgid="5065930681696657503">"Details"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Hide details"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"to <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Show contact information for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Show contact information"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index cf060e2..aa057b7 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Configuración de la carpeta"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Configuración"</string>
     <string name="menu_search" msgid="5297197523031943248">"Buscar"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navegación"</string>
     <string name="mark_important" msgid="6904096897104265870">"Marcar como importante"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Marcar como no importante"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Agregar CC/CCO"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Mostrar <xliff:g id="COUNT">%1$d</xliff:g> mensajes nuevos"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Expandir detalles del destinatario"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Contraer detalles del destinatario"</string>
+    <string name="details" msgid="5065930681696657503">"Detalles"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ocultar detalles"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"para <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Mostrar la información de contacto de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Mostrar la información de contacto"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b06a726..b433b3f 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Ajustes de carpeta"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Ajustes"</string>
     <string name="menu_search" msgid="5297197523031943248">"Buscar"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navegación"</string>
     <string name="mark_important" msgid="6904096897104265870">"Marcar como importante"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Marcar como no importante"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Añadir Cc/Cco"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Mostrar <xliff:g id="COUNT">%1$d</xliff:g> mensajes nuevos."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Ampliar información del destinatario"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Contraer información del destinatario"</string>
+    <string name="details" msgid="5065930681696657503">"Detalles"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ocultar detalles"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"para <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Mostrar información de contacto de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Mostrar información de contacto"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 3bf7286..17276dd 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Kausta seaded"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Seaded"</string>
     <string name="menu_search" msgid="5297197523031943248">"Otsing ..."</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigeerimine"</string>
     <string name="mark_important" msgid="6904096897104265870">"Märgi oluliseks"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Märgi ebaoluliseks"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Lisa koopia/pimekoopia"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Näita <xliff:g id="COUNT">%1$d</xliff:g> uut sõnumit."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Saaja üksikasjade laiendamine"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Ahenda saaja üksikasjad"</string>
+    <string name="details" msgid="5065930681696657503">"Üksikasjad"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Üksikasjade peitmine"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"saajad: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Kuva saatja <xliff:g id="NAME">%1$s</xliff:g> kontaktandmed"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Kuva kontaktandmed"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 63c9ad8..aef7203 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"تنظیمات پوشه"</string>
     <string name="menu_settings" msgid="6007027046949837282">"تنظیمات"</string>
     <string name="menu_search" msgid="5297197523031943248">"جستجو"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"پیمایش"</string>
     <string name="mark_important" msgid="6904096897104265870">"علامت‌گذاری به‌عنوان مهم"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"علامت‌گذاری به‌عنوان غیرمهم"</string>
     <string name="add_cc_label" msgid="504861315425773180">"افزودن گیرندهٔ کپی/گیرنده مخفی"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"نمایش <xliff:g id="COUNT">%1$d</xliff:g> پیام جدید."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"گسترش جزئیات گیرنده"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"کوچک کردن جزئیات گیرنده"</string>
+    <string name="details" msgid="5065930681696657503">"جزئیات"</string>
+    <string name="hide_details" msgid="7022374044607095589">"پنهان کردن جزئیات"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"به <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"نمایش اطلاعات تماس برای <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"نمایش اطلاعات مخاطب"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 0774c75..562c3c9 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Kansion asetukset..."</string>
     <string name="menu_settings" msgid="6007027046949837282">"Asetukset"</string>
     <string name="menu_search" msgid="5297197523031943248">"Haku"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigointi"</string>
     <string name="mark_important" msgid="6904096897104265870">"Merkitse tärkeäksi"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Merkitse ei-tärkeäksi"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Lisää kopio/piilokopio"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Näytä <xliff:g id="COUNT">%1$d</xliff:g> uutta viestiä."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Laajenna vastaanottajan tiedot"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Tiivistä vastaanottajan tiedot"</string>
+    <string name="details" msgid="5065930681696657503">"Tiedot"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Piilota tiedot"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"vast.ott. <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Näytä henkilön <xliff:g id="NAME">%1$s</xliff:g> yhteystiedot"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Näytä yhteystiedot"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 5f9f850..092d305 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Paramètres des dossiers"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Paramètres"</string>
     <string name="menu_search" msgid="5297197523031943248">"Recherche"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigation"</string>
     <string name="mark_important" msgid="6904096897104265870">"Marquer comme important"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Marquer comme non important"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Ajouter Cc/Cci"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Afficher les <xliff:g id="COUNT">%1$d</xliff:g> nouveaux messages"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Développer coordonnées du destinataire"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Réduire les coordonnées du destinataire"</string>
+    <string name="details" msgid="5065930681696657503">"Détails"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Masquer les détails"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"à <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Afficher les coordonnées de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Afficher les coordonnées de l\'expéditeur"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 0dd67ce..411a911 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Paramètres du dossier"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Paramètres"</string>
     <string name="menu_search" msgid="5297197523031943248">"Rechercher"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigation"</string>
     <string name="mark_important" msgid="6904096897104265870">"Marquer comme importante"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Marquer comme non importante"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Ajouter Cc/Cci"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Afficher les <xliff:g id="COUNT">%1$d</xliff:g> nouveaux messages"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Développer coordonnées du destinataire"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Réduire les coordonnées du destinataire"</string>
+    <string name="details" msgid="5065930681696657503">"Informations détaillées"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Masquer les informations détaillées"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"à <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Afficher les coordonnées de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Afficher les coordonnées de l\'expéditeur"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 1cbbcb5..6fcd274 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"फ़ोल्डर सेटिंग"</string>
     <string name="menu_settings" msgid="6007027046949837282">"सेटिंग"</string>
     <string name="menu_search" msgid="5297197523031943248">"खोजें"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"मार्गदर्शक"</string>
     <string name="mark_important" msgid="6904096897104265870">"महत्व. के रूप में चिह्नित करें"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"महत्वपूर्ण नहीं चिह्नित करें"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Cc/Bcc जोड़ें"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g> नए संदेश दिखाएं."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"प्राप्तकर्ता जानकारी विस्तृत करें"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"प्राप्तकर्ता जानकारी संक्षिप्त करें"</string>
+    <string name="details" msgid="5065930681696657503">"विवरण"</string>
+    <string name="hide_details" msgid="7022374044607095589">"विवरणों को छिपाएं"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"<xliff:g id="RECIPIENTS">%1$s</xliff:g> को"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"<xliff:g id="NAME">%1$s</xliff:g> की संपर्क जानकारी दिखाएं"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"संपर्क जानकारी दिखाएं"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 720ad29..e89ce6c 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Postavke mape"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Postavke"</string>
     <string name="menu_search" msgid="5297197523031943248">"Pretraživanje"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Kretanje"</string>
     <string name="mark_important" msgid="6904096897104265870">"Označi kao važno"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Označi kao nevažno"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Dodaj kopiju/skrivenu kopiju"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Pokaži sljedeći broj novih poruka: <xliff:g id="COUNT">%1$d</xliff:g>."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Proširi podatke o primatelju"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Sažmi podatke o primatelju"</string>
+    <string name="details" msgid="5065930681696657503">"Pojedinosti"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Sakrij detalje"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"prima <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Prikaži podatke o kontaktu za <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Prikaži podatke o kontaktu"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 8f7df1d..995955d 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Mappabeállítások"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Beállítások"</string>
     <string name="menu_search" msgid="5297197523031943248">"Keresés"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigálás"</string>
     <string name="mark_important" msgid="6904096897104265870">"Megjelölés fontosként"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Megjelölés nem fontosként"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Másolatmezők"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g> új üzenet megjelenítése."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Címzett adatainak megjelenítése"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Címzett adatainak elrejtése"</string>
+    <string name="details" msgid="5065930681696657503">"Részletek"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Részletek elrejtése"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"címzett: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"<xliff:g id="NAME">%1$s</xliff:g> elérhetőségi adatainak megjelenítése"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Névjegyinformációk megjelenítése"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 252d28c..4d1661a 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Թղթապանակի կարգավորումներ"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Կարգավորումներ"</string>
     <string name="menu_search" msgid="5297197523031943248">"Որոնել"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Նավարկում"</string>
     <string name="mark_important" msgid="6904096897104265870">"Նշել կարևոր"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Նշել որպես ոչ կարևոր"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Ավելացնել Պտճ/Ծածկպտճ"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Ցույց տալ <xliff:g id="COUNT">%1$d</xliff:g> նոր հաղորդագրություն:"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Ընդարձակել ստացողի մանրամասները"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Թաքցնել ստացողի մանրամասները"</string>
+    <string name="details" msgid="5065930681696657503">"Մանրամասներ"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Թաքցնել մանրամասները"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"Ստացող՝ <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Ցուցադրել <xliff:g id="NAME">%1$s</xliff:g>-ի կոնտակտային տվյալները"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Ցույց տալ կոնտակտային տեղեկությունները"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index eab10c1..ab44f9b 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Setelan folder"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Setelan"</string>
     <string name="menu_search" msgid="5297197523031943248">"Telusuri"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigasi"</string>
     <string name="mark_important" msgid="6904096897104265870">"Tandai sebagai penting"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Tandai sebagai tidak penting"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Tambahkan Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Tampilkan <xliff:g id="COUNT">%1$d</xliff:g> pesan baru."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Bentangkan detail penerima"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Ciutkan detail penerima"</string>
+    <string name="details" msgid="5065930681696657503">"Detail"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Sembunyikan detail"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"ke <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Tampilkan informasi kontak untuk <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Tampilkan informasi kontak"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 47e9519..7e0468e 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Impostazioni cartella"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Impostazioni"</string>
     <string name="menu_search" msgid="5297197523031943248">"Cerca"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigazione"</string>
     <string name="mark_important" msgid="6904096897104265870">"Segna come importante"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Segna come Non importante"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Aggiungi Cc/Ccn"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Mostra <xliff:g id="COUNT">%1$d</xliff:g> nuovi messaggi."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Espandi i dettagli destinatario"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Comprimi i dettagli destinatario"</string>
+    <string name="details" msgid="5065930681696657503">"Dettagli"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Nascondi dettagli"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"a <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Mostra informazioni di contatto di <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Mostra informazioni di contatto"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 0499d2c..9aa42ea 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"הגדרות תיקיה"</string>
     <string name="menu_settings" msgid="6007027046949837282">"הגדרות"</string>
     <string name="menu_search" msgid="5297197523031943248">"חפש"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"ניווט"</string>
     <string name="mark_important" msgid="6904096897104265870">"סמן כחשובה"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"סמן כלא חשובה"</string>
     <string name="add_cc_label" msgid="504861315425773180">"הוסף עותק/עותק מוסתר"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"הצג <xliff:g id="COUNT">%1$d</xliff:g> הודעות חדשות."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"הרחב פרטי נמען"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"כווץ את פרטי הנמען"</string>
+    <string name="details" msgid="5065930681696657503">"פרטים"</string>
+    <string name="hide_details" msgid="7022374044607095589">"הסתר פרטים"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"אל <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"הצג פרטי איש קשר של <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"הצג פרטי איש קשר"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 3dd1afb..dbeae40 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"フォルダの設定"</string>
     <string name="menu_settings" msgid="6007027046949837282">"設定"</string>
     <string name="menu_search" msgid="5297197523031943248">"検索"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"ナビゲーション"</string>
     <string name="mark_important" msgid="6904096897104265870">"重要マークを付ける"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"重要マークを外す"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Cc/Bccを追加"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g>通の新着メールを表示"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"受信者の詳細を表示"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"受信者の詳細を隠す"</string>
+    <string name="details" msgid="5065930681696657503">"詳細"</string>
+    <string name="hide_details" msgid="7022374044607095589">"詳細を表示しない"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"To: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"<xliff:g id="NAME">%1$s</xliff:g>の連絡先情報を表示"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"連絡先情報を表示"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 8118a09..f89bf80 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"საქაღალდის პარამეტრები"</string>
     <string name="menu_settings" msgid="6007027046949837282">"პარამეტრები"</string>
     <string name="menu_search" msgid="5297197523031943248">"ძიება"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"ნავიგაცია"</string>
     <string name="mark_important" msgid="6904096897104265870">"მნიშვნელოვნად მონიშვნა"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"უმნიშვნელოდ მონიშვნა"</string>
     <string name="add_cc_label" msgid="504861315425773180">"ასლისა და უხილავი ასლის დამატება"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g> ახალი შეტყობინების ჩვენება."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"მიმღების ინფორმაციის გაშლა"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"გამომგზავნის მონაცემების აკეცვა"</string>
+    <string name="details" msgid="5065930681696657503">"დეტალები"</string>
+    <string name="hide_details" msgid="7022374044607095589">"დეტალების დამალვა"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"მიმღები: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"<xliff:g id="NAME">%1$s</xliff:g>-ის საკონტაქტო ინფორმაციის ნახვა"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"კონტაქტის ინფორმაციის ჩვენება"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index f3fac16..34c88e4 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"ការ​កំណត់​ថត"</string>
     <string name="menu_settings" msgid="6007027046949837282">"ការ​កំណត់"</string>
     <string name="menu_search" msgid="5297197523031943248">"ស្វែងរក"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"ការ​រុករក"</string>
     <string name="mark_important" msgid="6904096897104265870">"សម្គាល់​​ថា​សំខាន់"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"សម្គាល់​ថា​មិន​សំខាន់"</string>
     <string name="add_cc_label" msgid="504861315425773180">"បន្ថែម ចម្លង​ជូន/​ចម្លង​ជា​សម្ងាត់​ជូន"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"បង្ហាញ​សារ​ថ្មី <xliff:g id="COUNT">%1$d</xliff:g> ​។"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"ពង្រីក​សេចក្ដី​លម្អិត​របស់​អ្នក​ទទួល"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"បញ្ចូល​​ព័ត៌មាន​លម្អិត​អ្នក​ទទួល"</string>
+    <string name="details" msgid="5065930681696657503">"ព័ត៌មាន​លម្អិត"</string>
+    <string name="hide_details" msgid="7022374044607095589">"លាក់​ព័ត៌មាន​​លម្អិត"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"ជូន​ចំពោះ <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"បង្ហាញ​ព័ត៌មាន​ទំនាក់ទំនង​សម្រាប់ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"បង្ហាញ​ព័ត៌មាន​ទំនាក់ទំនង"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 643d60a..7fdcd2b 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"폴더 설정"</string>
     <string name="menu_settings" msgid="6007027046949837282">"설정"</string>
     <string name="menu_search" msgid="5297197523031943248">"검색"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"탐색"</string>
     <string name="mark_important" msgid="6904096897104265870">"중요 표시"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"중요하지 않은 대화로 표시"</string>
     <string name="add_cc_label" msgid="504861315425773180">"참조/숨은참조 추가"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"새 메일 <xliff:g id="COUNT">%1$d</xliff:g>개 보기"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"수신자 세부정보 펼치기"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"수신자 세부정보 접기"</string>
+    <string name="details" msgid="5065930681696657503">"세부정보"</string>
+    <string name="hide_details" msgid="7022374044607095589">"세부정보 숨기기"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"받는사람: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"<xliff:g id="NAME">%1$s</xliff:g>님에 대한 연락처 정보 표시"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"연락처 정보 표시"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-ldrtl/styles-ldrtl.xml b/res/values-ldrtl/styles-ldrtl.xml
index 59b3676..70a0afe 100644
--- a/res/values-ldrtl/styles-ldrtl.xml
+++ b/res/values-ldrtl/styles-ldrtl.xml
@@ -23,18 +23,17 @@
     </style>
 
     <style name="MessageDetailsHeaderStyle">
-        <item name="android:paddingStart">@dimen/message_details_header_padding_start_collapsed
-        </item>
-        <item name="android:paddingEnd">@dimen/message_details_header_padding_end</item>
+        <item name="android:layout_marginStart">@dimen/message_details_header_margin_start</item>
+        <item name="android:paddingStart">@dimen/message_details_header_padding</item>
+        <item name="android:layout_marginEnd">@dimen/message_details_header_margin_end</item>
     </style>
 
     <style name="MessageAttachmentsHeaderStyle" parent="AbstractMessageAttachmentsHeaderStyle">
-        <item name="android:paddingStart">@dimen/message_details_header_padding_start</item>
+        <item name="android:paddingStart">@dimen/message_attachment_header_padding_start</item>
     </style>
 
     <style name="MessageHeaderShowPicsStyle" parent="AbstractMessageHeaderShowPicsStyle">
-        <item name="android:paddingStart">@dimen/message_details_header_padding_start_collapsed
-        </item>
+        <item name="android:paddingStart">@dimen/message_details_extra_content_padding_start</item>
         <item name="android:paddingEnd">@dimen/message_show_pics_header_padding_end</item>
         <item name="android:drawableStart">@drawable/ic_show_images_holo_light</item>
     </style>
@@ -103,10 +102,6 @@
         <item name="android:layout_marginStart">@dimen/teaser_text_padding</item>
     </style>
 
-    <style name="DetailsExpanderStyle">
-        <item name="android:layout_marginStart">@dimen/message_header_inner_side_padding</item>
-    </style>
-
     <style name="MessageHeaderDetailsHeadingStyle" parent="MessageHeaderSmallStyle">
         <item name="android:layout_marginEnd">@dimen/message_header_inner_side_padding</item>
     </style>
@@ -120,10 +115,6 @@
         <item name="android:layout_marginStart">@dimen/message_header_padding_start</item>
     </style>
 
-    <style name="AttachmentIconStyle">
-        <item name="android:layout_marginStart">@dimen/attachment_icon_padding</item>
-    </style>
-
     <style name="ConversationHeaderSideMarginStyle">
         <item name="android:layout_marginStart">@dimen/conversation_header_margin_side</item>
         <item name="android:layout_marginEnd">@dimen/conversation_header_margin_side</item>
@@ -142,10 +133,6 @@
         <item name="android:layout_marginEnd">@dimen/folder_list_item_end_margin</item>
     </style>
 
-    <style name="RecipientSummaryStyle" parent="MessageHeaderSmallStyle">
-        <item name="android:layout_marginEnd">@dimen/recipient_summary_margin</item>
-    </style>
-
     <style name="AttachmentTextContainer">
         <item name="android:paddingStart">@dimen/compose_attachment_text_padding</item>
     </style>
@@ -230,14 +217,6 @@
         <item name="android:paddingEnd">@dimen/vacation_responder_inner_padding</item>
     </style>
 
-    <style name="MessageSenderNameStyle" parent="AbstractMessageSenderNameStyle">
-        <item name="android:layout_alignParentStart">true</item>
-    </style>
-
-    <style name="MessageHeaderSubtitleStyle" parent="AbstractMessageHeaderSubtitleStyle">
-        <item name="android:layout_alignParentStart">true</item>
-    </style>
-
     <style name="FolderColorBoxStyle" parent="AbstractFolderColorBoxStyle">
         <item name="android:layout_alignParentStart">true</item>
     </style>
@@ -247,10 +226,6 @@
         <item name="android:layout_alignParentStart">true</item>
     </style>
 
-    <style name="MessageHeaderUpperDateStyle" parent="AbstractMessageHeaderUpperDateStyle">
-        <item name="android:layout_alignParentEnd">true</item>
-    </style>
-
     <style name="FolderParentIconStyle">
         <item name="android:layout_alignParentEnd">true</item>
     </style>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index f493463..3230021 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"ຕັ້ງຄ່າໂຟນເດີ"</string>
     <string name="menu_settings" msgid="6007027046949837282">"ຕັ້ງຄ່າ"</string>
     <string name="menu_search" msgid="5297197523031943248">"ຊອກຫາ"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"ການນຳທາງ"</string>
     <string name="mark_important" msgid="6904096897104265870">"ໝາຍວ່າສໍາຄັນ"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"ໝາຍວ່າບໍ່ສຳຄັນ"</string>
     <string name="add_cc_label" msgid="504861315425773180">"ເພີ່ມ Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"ສະ​ແດງ​ <xliff:g id="COUNT">%1$d</xliff:g> ຂໍ້​ຄວາມ​ໃຫມ່​."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"ຂະຫຍາຍລາຍລະອຽດຜູ່ຮັບ"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"ຫຍໍ້ລາຍລະອຽດຜູ່ຮັບ"</string>
+    <string name="details" msgid="5065930681696657503">"ລາຍ​ລະ​ອຽດ"</string>
+    <string name="hide_details" msgid="7022374044607095589">"​ເຊື່ອງ​ລາຍ​ລະ​ອຽດ"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"ຫາ <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"ສະແດງລາຍລະອຽດຜູ່ຕິດຕໍ່ສຳລັບ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"ສະແດງຂໍ້ມູນຕິດຕໍ່"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 4c88a54..226273b 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Aplankų nustatymai"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Nustatymai"</string>
     <string name="menu_search" msgid="5297197523031943248">"Paieška"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Naršymas"</string>
     <string name="mark_important" msgid="6904096897104265870">"Pažymėti kaip svarbų"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Pažymėti kaip nesvarbų"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Pridėti Cc / Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Rodyti naujų pranešimų: <xliff:g id="COUNT">%1$d</xliff:g>."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Išskleisti išsamią gavėjo informaciją"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Sutraukti išsamią gavėjo informaciją"</string>
+    <string name="details" msgid="5065930681696657503">"Išsami informacija"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Slėpti išsamią informaciją"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"kam: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Rodyti <xliff:g id="NAME">%1$s</xliff:g> kontaktinę informaciją"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Rodyti kontaktinę informaciją"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 4459beb..514c1b6 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Mapes iestatījumi"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Iestatījumi"</string>
     <string name="menu_search" msgid="5297197523031943248">"Meklēt"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigācija"</string>
     <string name="mark_important" msgid="6904096897104265870">"Atzīmēt kā svarīgu"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Atzīmēt kā nesvarīgu"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Pievienot kopiju/diskrēto kopiju"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Rādīt <xliff:g id="COUNT">%1$d</xliff:g> jaunus ziņojumus."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Izvērst informāciju par adresātu"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Sakļaut informāciju par adresātu"</string>
+    <string name="details" msgid="5065930681696657503">"Detalizēta informācija"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Slēpt datus"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"kam: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Rādīt sūtītāja <xliff:g id="NAME">%1$s</xliff:g> kontaktinformāciju"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Rādīt kontaktinformāciju"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index ee099dd..7fce862 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Фолдерын тохиргоо"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Тохиргоо"</string>
     <string name="menu_search" msgid="5297197523031943248">"Хайх"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Чиглүүлэгч"</string>
     <string name="mark_important" msgid="6904096897104265870">"Чухал болгож тэмдэглэх"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Чухал бус болгох"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Cc/Bcc нэмэх"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g> шинэ зурвас харуулах."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Хүлээн авагчийн мэдээллийг дэлгэх"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Хүлээн авагчийн мэдээллийг хумих"</string>
+    <string name="details" msgid="5065930681696657503">"Дэлгэрэнгүй"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Дэлгэрэнгүйг нуух"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"<xliff:g id="RECIPIENTS">%1$s</xliff:g> руу"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"<xliff:g id="NAME">%1$s</xliff:g>-н харилцагчийн мэдээллийг харуулах"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Харилцагчийн мэдээллийг харуулах"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 03b1cc6..4c87353 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Tetapan folder"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Tetapan"</string>
     <string name="menu_search" msgid="5297197523031943248">"Carian"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigasi"</string>
     <string name="mark_important" msgid="6904096897104265870">"Tandakan penting"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Tandakan tidak penting"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Tambah Sk/Skt"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Tunjukkan <xliff:g id="COUNT">%1$d</xliff:g> mesej baharu."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Kembangkan butiran penerima"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Runtuhkan butiran penerima"</string>
+    <string name="details" msgid="5065930681696657503">"Butiran"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Sembunyikan butiran"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"kepada <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Papar maklumat kenalan untuk <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Tunjukkan maklumat kenalan"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 047e402..92501a5 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Mappeinnstillinger"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Innstillinger"</string>
     <string name="menu_search" msgid="5297197523031943248">"Søk"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigering"</string>
     <string name="mark_important" msgid="6904096897104265870">"Merk som viktig"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Merk som uviktig"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Legg til kopi eller blindkopi"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Vis <xliff:g id="COUNT">%1$d</xliff:g> nye e-poster."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Utvid detaljer om mottaker"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Skjul detaljer om mottaker"</string>
+    <string name="details" msgid="5065930681696657503">"Detaljer"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Skjul detaljer"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"til <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Vis kontaktinformasjon for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Vis kontaktinformasjon"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 9a22d00..22c00e0 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Mapinstellingen"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Instellingen"</string>
     <string name="menu_search" msgid="5297197523031943248">"Zoeken"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigatie"</string>
     <string name="mark_important" msgid="6904096897104265870">"Markeren als belangrijk"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Markeren als niet belangrijk"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Cc/Bcc toevoegen"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g> nieuwe berichten weergeven."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Ontvangersdetails uitvouwen"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Ontvangersdetails samenvouwen"</string>
+    <string name="details" msgid="5065930681696657503">"Details"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Details verbergen"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"aan <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Contactgegevens weergeven voor <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Contactgegevens weergeven"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 995a600..8233761 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Ustawienia folderu"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Ustawienia"</string>
     <string name="menu_search" msgid="5297197523031943248">"Szukaj"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Nawigacja"</string>
     <string name="mark_important" msgid="6904096897104265870">"Oznacz jako ważne"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Oznacz jako mało ważne"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Dodaj DW/UDW"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Pokaż nowe wiadomości (<xliff:g id="COUNT">%1$d</xliff:g>)."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Rozwiń szczegóły odbiorcy"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Zwiń szczegóły odbiorcy"</string>
+    <string name="details" msgid="5065930681696657503">"Szczegóły"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ukryj szczegóły"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"do <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Pokaż informacje kontaktowe: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Pokaż informacje kontaktowe"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 8e782f4..fb355c0 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Definições da pasta"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Definições"</string>
     <string name="menu_search" msgid="5297197523031943248">"Pesquisar"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navegação"</string>
     <string name="mark_important" msgid="6904096897104265870">"Marcar como importante"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Marcar como não importante"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Adicionar Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Mostrar <xliff:g id="COUNT">%1$d</xliff:g> novas mensagens."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Expandir detalhes do destinatário"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Fechar detalhes do destinatário"</string>
+    <string name="details" msgid="5065930681696657503">"Detalhes"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ocultar detalhes"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"para <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Mostrar informações de contacto de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Mostrar informações de contacto"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 7e5340b..22378a3 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Configurações da pasta"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Configurações"</string>
     <string name="menu_search" msgid="5297197523031943248">"Pesquisar"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navegação"</string>
     <string name="mark_important" msgid="6904096897104265870">"Marcar como importante"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Marcar como não importante"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Adicionar Cc/Cco"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Mostrar <xliff:g id="COUNT">%1$d</xliff:g> novas mensagens."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Expandir detalhes do destinatário"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Recolher detalhes do destinatário"</string>
+    <string name="details" msgid="5065930681696657503">"Detalhes"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ocultar detalhes"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"para <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Mostrar informações de contato de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Mostrar informações de contato"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 9f26b50..c55cc96 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -131,6 +131,8 @@
     <skip />
     <!-- no translation found for menu_search (5297197523031943248) -->
     <skip />
+    <!-- no translation found for drawer_title (5888199203222498840) -->
+    <skip />
     <!-- no translation found for mark_important (6904096897104265870) -->
     <skip />
     <!-- no translation found for mark_not_important (4550967327747977068) -->
@@ -320,9 +322,11 @@
     <!-- no translation found for new_incoming_messages_one (827152289636155810) -->
     <skip />
     <!-- no translation found for new_incoming_messages_many:other (1018949581192786598) -->
-    <!-- no translation found for expand_recipient_details (2266544827446346880) -->
+    <!-- no translation found for details (5065930681696657503) -->
     <skip />
-    <!-- no translation found for collapse_recipient_details (3608892454869745927) -->
+    <!-- no translation found for hide_details (7022374044607095589) -->
+    <skip />
+    <!-- no translation found for to_message_header (7406436821725529743) -->
     <skip />
     <!-- no translation found for contact_info_string (6911322458329265644) -->
     <skip />
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index a707fac..6dee716 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Setări pentru dosar"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Setări"</string>
     <string name="menu_search" msgid="5297197523031943248">"Căutaţi"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigare"</string>
     <string name="mark_important" msgid="6904096897104265870">"Marcaţi ca importantă"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Marcaţi ca neimportantă"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Adăugaţi cc/bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Afișați <xliff:g id="COUNT">%1$d</xliff:g> (de) mesaje noi."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Extindeţi detaliile destinatarului"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Restrângeţi detaliile destinatarului"</string>
+    <string name="details" msgid="5065930681696657503">"Detalii"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ascundeți detaliile"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"către <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Afişaţi informaţiile de contact pentru <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Afişaţi informaţiile de contact"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index f4b1bbc..98dbb09 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Настройки папки"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Настройки"</string>
     <string name="menu_search" msgid="5297197523031943248">"Поиск"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Навигация"</string>
     <string name="mark_important" msgid="6904096897104265870">"Отметить как важное"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Отметить как неважное"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Копия/скрытая"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Показать новые сообщения (<xliff:g id="COUNT">%1$d</xliff:g>)"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Показать сведения о получателе"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Скрыть сведения о получателе"</string>
+    <string name="details" msgid="5065930681696657503">"Показать подробную информацию"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Скрыть"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"кому: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Показать контактные данные пользователя <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Показать контактные данные"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 0f0a11c..6fa3ff1 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Nastavenia priečinka"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Nastavenia"</string>
     <string name="menu_search" msgid="5297197523031943248">"Hľadať"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigačný panel"</string>
     <string name="mark_important" msgid="6904096897104265870">"Označiť ako dôležité"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Označiť ako nedôležité"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Pridať kópiu / skrytú kópiu"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Zobraziť nové správy (celkom <xliff:g id="COUNT">%1$d</xliff:g>)."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Rozbaliť podrobnosti o príjemcovi"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Zbaliť podrobnosti o príjemcovi"</string>
+    <string name="details" msgid="5065930681696657503">"Podrobnosti"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Skryť podrobnosti"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"komu: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Zobraziť informácie kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Zobraziť kontaktné informácie"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index ec31b45..536ed7d 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Nastavitve mape"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Nastavitve"</string>
     <string name="menu_search" msgid="5297197523031943248">"Išči"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Krmarjenje"</string>
     <string name="mark_important" msgid="6904096897104265870">"Označi kot pomemben"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Označi kot nepomemben"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Dodaj Kp/Skp"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Prikaži toliko novih sporočil: <xliff:g id="COUNT">%1$d</xliff:g>."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Razširi podrobnosti prejemnika"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Strni podrobnosti prejemnika"</string>
+    <string name="details" msgid="5065930681696657503">"Podrobnosti"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Skrij podrobnosti"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"za: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Prikaz podatkov za stik za <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Prikaži podatke za stik"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 2d06a0e..bf84397 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Подешавања директоријума"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Подешавања"</string>
     <string name="menu_search" msgid="5297197523031943248">"Претражи"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Навигација"</string>
     <string name="mark_important" msgid="6904096897104265870">"Означи као важно"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Означи као неважно"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Додај Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Прикажи нове поруке (<xliff:g id="COUNT">%1$d</xliff:g>)."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Прошири детаље о примаоцу"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Скупи детаље о примаоцу"</string>
+    <string name="details" msgid="5065930681696657503">"Детаљи"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Сакриј детаље"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"коме: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Прикажи контакт информације корисника <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Прикажи контакт информације"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index fd670dd..fe8fd1f 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Mappinställningar"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Inställningar"</string>
     <string name="menu_search" msgid="5297197523031943248">"Sök"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Navigering"</string>
     <string name="mark_important" msgid="6904096897104265870">"Markera som viktigt"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Markera som inte viktigt"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Lägg till kopia/hemlig kopia"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Visa <xliff:g id="COUNT">%1$d</xliff:g> nya meddelanden."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Expandera mottagardetaljer"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Komprimera mottagardetaljer"</string>
+    <string name="details" msgid="5065930681696657503">"Information"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Dölj detaljer"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"till <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Visa kontaktuppgifter för <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Visa kontaktuppgifter"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index cea1db2..cd6e613 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Mipangilio ya folda"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Mipangilio"</string>
     <string name="menu_search" msgid="5297197523031943248">"Tafuta"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Usogezaji"</string>
     <string name="mark_important" msgid="6904096897104265870">"Tia alama kama muhimu"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Tia alama kama isiyo muhimu"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Ongeza Nakala kwa/Nakala fiche kwa"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Onyesha barua pepe <xliff:g id="COUNT">%1$d</xliff:g> mpya."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Panua maelezo ya mpokeaji"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Kunja maelezo ya wapokeaji"</string>
+    <string name="details" msgid="5065930681696657503">"Maelezo"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ficha maelezo"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"kwa <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Onyesha maelezo ya mawasiliano ya <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Onyesha maelezo ya mawasiliano"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-sw600dp/dimen.xml b/res/values-sw600dp/dimen.xml
index 57a7b73..9866487 100644
--- a/res/values-sw600dp/dimen.xml
+++ b/res/values-sw600dp/dimen.xml
@@ -27,11 +27,17 @@
     <dimen name="conversation_page_gutter">0dip</dimen>
     <dimen name="message_border_height">16dp</dimen>
     <dimen name="message_header_inner_side_padding">16dp</dimen>
+    <dimen name="message_details_header_margin_start">10dp</dimen>
+    <dimen name="message_details_header_margin_end">@dimen/message_header_action_button_width
+    </dimen>
+    <dimen name="message_details_header_padding">6dp</dimen>
+    <dimen name="message_details_header_margin_top">0dp</dimen>
+    <dimen name="message_details_header_padding_bottom">4dp</dimen>
     <dimen name="message_header_contact_photo_width">64dp</dimen>
     <dimen name="message_header_contact_photo_height">64dp</dimen>
     <dimen name="message_header_action_button_width">56dp</dimen>
     <dimen name="message_header_action_button_height">56dp</dimen>
-    <dimen name="message_details_header_padding_start_collapsed">104dip</dimen>
+    <dimen name="message_details_extra_content_padding_start">104dip</dimen>
     <dimen name="message_sender_name_text_size">20sp</dimen>
     <dimen name="message_header_subtitle_text_size">16sp</dimen>
     <dimen name="super_collapsed_height">39sp</dimen>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index e4da7df..efd3cfa 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"การตั้งค่าโฟลเดอร์"</string>
     <string name="menu_settings" msgid="6007027046949837282">"การตั้งค่า"</string>
     <string name="menu_search" msgid="5297197523031943248">"ค้นหา"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"การนำทาง"</string>
     <string name="mark_important" msgid="6904096897104265870">"ทำเครื่องหมายว่าสำคัญ"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"ทำเครื่องหมายว่าไม่สำคัญ"</string>
     <string name="add_cc_label" msgid="504861315425773180">"เพิ่มสำเนา/สำเนาลับ"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"แสดงข้อความใหม่ <xliff:g id="COUNT">%1$d</xliff:g> ข้อความ"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"ขยายรายละเอียดผู้รับ"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"ยุบรายละเอียดผู้รับ"</string>
+    <string name="details" msgid="5065930681696657503">"รายละเอียด"</string>
+    <string name="hide_details" msgid="7022374044607095589">"ซ่อนรายละเอียด"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"ถึง <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"แสดงข้อมูลติดต่อของ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"แสดงข้อมูลติดต่อ"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 48f432d..66b1382 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Mga setting ng folder"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Mga Setting"</string>
     <string name="menu_search" msgid="5297197523031943248">"Maghanap"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Nabigasyon"</string>
     <string name="mark_important" msgid="6904096897104265870">"Markahang mahalaga"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Markahang hindi mahalaga"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Magdagdag ng Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Ipakita ang <xliff:g id="COUNT">%1$d</xliff:g> (na) bagong mensahe."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Palawakin ang mga detalye ng recipient"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Tiklupin ang mga detalye ng recipient"</string>
+    <string name="details" msgid="5065930681696657503">"Mga Detalye"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Itago ang mga detalye"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"kay <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Ipakita ang impormasyon ng contact para kay <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Ipakita ang impormasyon ng contact"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 1e5823d..ecbf706 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Klasör ayarları"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Ayarlar"</string>
     <string name="menu_search" msgid="5297197523031943248">"Ara"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Gezinme"</string>
     <string name="mark_important" msgid="6904096897104265870">"Önemli olarak işaretle"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Önemsiz olarak işaretle"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Cc/Bcc ekle"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"<xliff:g id="COUNT">%1$d</xliff:g> yeni mesajı göster."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Alıcı ayrıntılarını genişlet"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Alıcı ayrıntılarını daralt"</string>
+    <string name="details" msgid="5065930681696657503">"Ayrıntılar"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ayrıntıları gizle"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"Alıcılar: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"<xliff:g id="NAME">%1$s</xliff:g> iletişim bilgilerini göster"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"İletişim bilgilerini göster"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index ee61498..be11cf9 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Налаштування папки"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Налаштування"</string>
     <string name="menu_search" msgid="5297197523031943248">"Пошук"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Панель навігації"</string>
     <string name="mark_important" msgid="6904096897104265870">"Позначити як важливу"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Позначити як неважливу"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Додати копію/приховану копію"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Показати нові повідомлення (<xliff:g id="COUNT">%1$d</xliff:g>)."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Розгорнути дані отримувача"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Згорнути дані отримувача"</string>
+    <string name="details" msgid="5065930681696657503">"Деталі"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Сховати деталі"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"кому: <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Показати контактну інформацію відправника <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Показати контактну інформацію"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index e01f700..4b494e3 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Cài đặt thư mục"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Cài đặt"</string>
     <string name="menu_search" msgid="5297197523031943248">"Tìm kiếm"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Điều hướng"</string>
     <string name="mark_important" msgid="6904096897104265870">"Đánh dấu là quan trọng"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Đánh dấu là không quan trọng"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Thêm Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Hiển thị <xliff:g id="COUNT">%1$d</xliff:g> tin nhắn mới."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Mở rộng chi tiết người nhận"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Thu gọn chi tiết người nhận"</string>
+    <string name="details" msgid="5065930681696657503">"Chi tiết"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Ẩn chi tiết"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"tới <xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Hiển thị thông tin liên hệ cho <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Hiển thị thông tin liên hệ"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 5179025..6e5ea1c 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"文件夹设置"</string>
     <string name="menu_settings" msgid="6007027046949837282">"设置"</string>
     <string name="menu_search" msgid="5297197523031943248">"搜索"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"导航"</string>
     <string name="mark_important" msgid="6904096897104265870">"标记为重要"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"标记为不重要"</string>
     <string name="add_cc_label" msgid="504861315425773180">"添加抄送/密送地址"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"显示<xliff:g id="COUNT">%1$d</xliff:g>封新邮件。"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"展开收件人详细信息"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"折叠收件人详细信息"</string>
+    <string name="details" msgid="5065930681696657503">"详细信息"</string>
+    <string name="hide_details" msgid="7022374044607095589">"隐藏详细信息"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"收件人:<xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"显示<xliff:g id="NAME">%1$s</xliff:g>的联系人信息"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"显示联系人信息"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index fbc0322..0c60506 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"資料夾設定"</string>
     <string name="menu_settings" msgid="6007027046949837282">"設定"</string>
     <string name="menu_search" msgid="5297197523031943248">"搜尋"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"瀏覽"</string>
     <string name="mark_important" msgid="6904096897104265870">"標示為重要"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"標示為不重要"</string>
     <string name="add_cc_label" msgid="504861315425773180">"新增副本/密件副本"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"顯示 <xliff:g id="COUNT">%1$d</xliff:g> 封新郵件。"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"展開收件者詳細資料"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"收合收件者詳細資料"</string>
+    <string name="details" msgid="5065930681696657503">"詳細資料"</string>
+    <string name="hide_details" msgid="7022374044607095589">"隱藏詳細資料"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"收件者:<xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"顯示 <xliff:g id="NAME">%1$s</xliff:g> 的聯絡資料"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"顯示聯絡資料"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index c10f3a9..4e5285f 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"資料夾設定"</string>
     <string name="menu_settings" msgid="6007027046949837282">"設定"</string>
     <string name="menu_search" msgid="5297197523031943248">"搜尋"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"導覽"</string>
     <string name="mark_important" msgid="6904096897104265870">"標示為重要"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"標示為不重要"</string>
     <string name="add_cc_label" msgid="504861315425773180">"新增副本/密件副本"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"顯示 <xliff:g id="COUNT">%1$d</xliff:g> 封新郵件。"</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"展開收件者詳細資料"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"收合收件者詳細資料"</string>
+    <string name="details" msgid="5065930681696657503">"詳細資料"</string>
+    <string name="hide_details" msgid="7022374044607095589">"隱藏詳細資料"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"寄給<xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"顯示 <xliff:g id="NAME">%1$s</xliff:g> 的聯絡人資訊"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"顯示聯絡人資訊"</string>
   <plurals name="show_messages_read">
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 3b291f5..86c0772 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -78,6 +78,7 @@
     <string name="menu_folder_options" msgid="8897520487430647932">"Izilungiselelo zefolda"</string>
     <string name="menu_settings" msgid="6007027046949837282">"Izilungiselelo"</string>
     <string name="menu_search" msgid="5297197523031943248">"Sesha"</string>
+    <string name="drawer_title" msgid="5888199203222498840">"Ukuzulazula"</string>
     <string name="mark_important" msgid="6904096897104265870">"Maka njengokubalulekile"</string>
     <string name="mark_not_important" msgid="4550967327747977068">"Maka njengokungabalulekile"</string>
     <string name="add_cc_label" msgid="504861315425773180">"Engeza Cc/Bcc"</string>
@@ -218,8 +219,9 @@
   <plurals name="new_incoming_messages_many">
     <item quantity="other" msgid="1018949581192786598">"Bonisa imilayezo emisha engu-<xliff:g id="COUNT">%1$d</xliff:g>."</item>
   </plurals>
-    <string name="expand_recipient_details" msgid="2266544827446346880">"Nweba imininigwane yomtholi"</string>
-    <string name="collapse_recipient_details" msgid="3608892454869745927">"Goqa imininingwane yomtholi"</string>
+    <string name="details" msgid="5065930681696657503">"Imininingwane"</string>
+    <string name="hide_details" msgid="7022374044607095589">"Fihla imininingwane"</string>
+    <string name="to_message_header" msgid="7406436821725529743">"kuya ku-<xliff:g id="RECIPIENTS">%1$s</xliff:g>"</string>
     <string name="contact_info_string" msgid="6911322458329265644">"Khombisa imininingwane yokuxhumana ka-<xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="contact_info_string_default" msgid="596531738469809159">"Bonisa ulwazi loxhumana naye"</string>
   <plurals name="show_messages_read">
diff --git a/res/values/dimen.xml b/res/values/dimen.xml
index 49ed945..c59c8f5 100644
--- a/res/values/dimen.xml
+++ b/res/values/dimen.xml
@@ -49,16 +49,21 @@
     <dimen name="conversation_folder_padding_extra_width">14dip</dimen>
     <dimen name="conversation_folder_padding_before">8dip</dimen>
     <dimen name="conversation_folder_padding_above">4dip</dimen>
-    <dimen name="message_details_header_padding_start">16dip</dimen>
-    <dimen name="message_details_header_padding_start_collapsed">68dip</dimen>
-    <dimen name="message_details_header_padding_end">10dip</dimen>
+    <dimen name="message_attachment_header_padding_start">16dip</dimen>
+    <dimen name="message_details_extra_content_padding_start">68dip</dimen>
+    <dimen name="message_details_header_margin_start">6dp</dimen>
+    <dimen name="message_details_header_margin_end">22dp</dimen>
+    <dimen name="message_details_header_padding">4dp</dimen>
     <dimen name="message_details_header_vertical_padding">7dp</dimen>
+    <dimen name="message_details_header_margin_top">-3dp</dimen>
+    <dimen name="message_details_header_padding_bottom">2dp</dimen>
     <dimen name="message_show_pics_header_padding_end">14dip</dimen>
     <dimen name="message_border_height">8dp</dimen>
     <dimen name="message_border_height_collapsed">1dp</dimen>
     <dimen name="message_header_presence_top_margin">-4dp</dimen>
     <dimen name="message_header_action_button_width">48dp</dimen>
     <dimen name="message_header_action_button_height">48dp</dimen>
+    <dimen name="message_header_action_button_height_condensed">48dp</dimen>
     <dimen name="message_header_padding_start">
         @dimen/conversation_message_content_margin_side</dimen>
     <dimen name="message_header_title_container_margin_end_collapsed">10dp</dimen>
@@ -67,8 +72,8 @@
     <dimen name="super_collapsed_height">30sp</dimen>
     <dimen name="super_collapsed_text_size">14sp</dimen>
     <dimen name="notification_view_height">36dip</dimen>
-    <dimen name="message_header_contact_photo_width">48sp</dimen>
-    <dimen name="message_header_contact_photo_height">48sp</dimen>
+    <dimen name="message_header_contact_photo_width">48dp</dimen>
+    <dimen name="message_header_contact_photo_height">48dp</dimen>
     <dimen name="message_header_inner_side_padding">10dp</dimen>
     <dimen name="attachment_toast_yoffset">-100dip</dimen>
     <dimen name="spinner_frame_width">196dip</dimen>
@@ -129,8 +134,8 @@
     <dimen name="dismiss_separator_padding">16dip</dimen>
     <dimen name="teaser_text_padding">16dip</dimen>
     <dimen name="attachment_margin_side">16dip</dimen>
-    <dimen name="attachment_icon_padding">5dip</dimen>
-    <dimen name="recipient_summary_margin">16dip</dimen>
+    <dimen name="attachment_icon_padding">10dip</dimen>
+    <dimen name="upper_date_margin">1dp</dimen>
 
     <!-- Minimum width of the folder teaser count TextView -->
     <dimen name="folder_teaser_count_textview_minwidth">68dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index de07fd8..8c75234 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -167,6 +167,8 @@
     <string name="menu_settings">Settings</string>
     <!-- Menu item: search through the Gmail inbox -->
     <string name="menu_search">Search</string>
+    <!-- Title of the drawer, indicating what it is used for, which is navigation of the app -->
+    <string name="drawer_title">Navigation</string>
 
     <!--  Menu item: shown in conversation menu. Tap this to move to mark conversation as important [CHAR LIMIT=30] -->
     <string name="mark_important">Mark important</string>
@@ -456,10 +458,12 @@
     </plurals>
 
     <!-- Conversation message header strings -->
-    <!--  Icon name for expanding recipient details in a message when viewing it. [CHAR LIMIT=40] -->
-    <string name="expand_recipient_details">Expand recipient details</string>
-    <!--  Icon name for collapsing recipient details in a message when viewing it. [CHAR LIMIT=40] -->
-    <string name="collapse_recipient_details">Collapse recipient details</string>
+    <!--  Text for expanding recipient details in a message when viewing it. [CHAR LIMIT=40] -->
+    <string name="details">Details</string>
+    <!--  Text for collapsing recipient details in a message when viewing it. [CHAR LIMIT=40] -->
+    <string name="hide_details">Hide details</string>
+    <!-- Shown to display the recipient(s) of the message [CHAR LIMIT=10] -->
+    <string name="to_message_header">to <xliff:g id="recipients">%1$s</xliff:g></string>
     <!--  Icon name for showing sender contact information. [CHAR LIMIT=100] -->
     <string name="contact_info_string">Show contact information for <xliff:g id="name">%1$s</xliff:g></string>
     <!--  Icon name for showing sender contact information when we cannot get sender info. [CHAR LIMIT=100] -->
@@ -479,7 +483,7 @@
     <string name="cc_heading">Cc:\u0020</string>
     <!-- Shown to display the bcc recipient(s) of the message [CHAR LIMIT=10] -->
     <string name="bcc_heading">Bcc:\u0020</string>
-    <!-- Shown to display the recipient(s) of the message [CHAR LIMIT=10] -->
+    <!-- Shown to display the date of the message [CHAR LIMIT=10] -->
     <string name="date_heading">Date:\u0020</string>
     <!-- Displayed above an HTML message to show the images in that message [CHAR LIMIT=40] -->
     <string name="show_images">Show pictures</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index e73beff..c4d762e 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -15,7 +15,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<resources>
+<resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Compose Styles -->
     <style name="RecipientEditTextViewStyle" parent="@style/RecipientEditTextView">
         <item name="android:minHeight">42dip</item>
@@ -117,12 +117,6 @@
         <item name="android:textSize">12sp</item>
     </style>
 
-    <style name="AttachmentThumbnail">
-        <item name="android:layout_marginLeft">8dip</item>
-        <item name="android:layout_width">wrap_content</item>
-        <item name="android:layout_height">wrap_content</item>
-    </style>
-
     <style name="RespondInlineButtonStyle">
         <item name="android:textColor">@color/quotedTextColor</item>
         <item name="android:textStyle">bold</item>
@@ -224,35 +218,31 @@
         <item name="android:layout_marginTop">@dimen/message_header_presence_top_margin</item>
     </style>
 
-    <style name="AbstractMessageSenderNameStyle">
+    <style name="MessageSenderNameStyle">
         <item name="android:singleLine">true</item>
+        <item name="android:textAlignment" tools:ignore="NewApi">viewStart</item>
+        <item name="android:textColor">@color/conv_header_text_dark</item>
         <item name="android:textSize">@dimen/message_sender_name_text_size</item>
-        <item name="android:textColor">@color/conv_header_text_dark</item>
     </style>
 
-    <style name="MessageSenderNameStyle" parent="AbstractMessageSenderNameStyle">
-        <item name="android:layout_alignParentLeft">true</item>
-    </style>
-
-    <style name="AbstractMessageHeaderSubtitleStyle">
+    <style name="MessageHeaderSubtitleStyle">
         <item name="android:singleLine">true</item>
-        <item name="android:textSize">@dimen/message_header_subtitle_text_size</item>
+        <item name="android:textAlignment" tools:ignore="NewApi">viewStart</item>
         <item name="android:textColor">@color/conv_header_text_dark</item>
-    </style>
-
-    <style name="MessageHeaderSubtitleStyle" parent="AbstractMessageHeaderSubtitleStyle">
-        <item name="android:layout_alignParentLeft">true</item>
+        <item name="android:textSize">@dimen/message_header_subtitle_text_size</item>
     </style>
 
     <style name="MessageHeaderSnippetStyle">
         <item name="android:lines">2</item>
-        <item name="android:textSize">@dimen/message_header_subtitle_text_size</item>
+        <item name="android:textAlignment" tools:ignore="NewApi">viewStart</item>
         <item name="android:textColor">@color/conv_header_text_light</item>
+        <item name="android:textSize">@dimen/message_header_subtitle_text_size</item>
     </style>
 
     <style name="MessageHeaderSmallStyle">
         <item name="android:layout_height">wrap_content</item>
         <item name="android:layout_width">wrap_content</item>
+        <item name="android:textAlignment" tools:ignore="NewApi">viewStart</item>
         <item name="android:textColor">@color/conv_header_text_dark</item>
         <item name="android:textSize">@dimen/message_header_subtitle_text_size</item>
     </style>
@@ -266,27 +256,18 @@
     </style>
 
     <style name="MessageHeaderShowPicsStyle" parent="AbstractMessageHeaderShowPicsStyle">
-        <item name="android:paddingLeft">@dimen/message_details_header_padding_start_collapsed
-        </item>
+        <item name="android:paddingLeft">@dimen/message_details_extra_content_padding_start</item>
         <item name="android:paddingRight">@dimen/message_show_pics_header_padding_end</item>
         <item name="android:drawableLeft">@drawable/ic_show_images_holo_light</item>
     </style>
 
-    <style name="AbstractMessageHeaderUpperDateStyle" parent="MessageHeaderSmallStyle">
-        <item name="android:minHeight">24dp</item>
-    </style>
-
-    <style name="MessageHeaderUpperDateStyle" parent="AbstractMessageHeaderUpperDateStyle">
-        <item name="android:layout_alignParentRight">true</item>
-    </style>
-
     <style name="AbstractMessageAttachmentsHeaderStyle" parent="MessageHeaderSmallStyle">
         <item name="android:textStyle">bold</item>
         <item name="android:textAllCaps">true</item>
     </style>
 
     <style name="MessageAttachmentsHeaderStyle" parent="AbstractMessageAttachmentsHeaderStyle">
-        <item name="android:paddingLeft">@dimen/message_details_header_padding_start</item>
+        <item name="android:paddingLeft">@dimen/message_attachment_header_padding_start</item>
     </style>
 
     <style name="MessageDetailsValueStyle" parent="MessageHeaderSmallStyle">
@@ -538,9 +519,10 @@
     </style>
 
     <style name="MessageDetailsHeaderStyle">
-        <item name="android:paddingLeft">@dimen/message_details_header_padding_start_collapsed
-        </item>
-        <item name="android:paddingRight">@dimen/message_details_header_padding_end</item>
+        <item name="android:layout_marginLeft">@dimen/message_details_header_margin_start</item>
+        <item name="android:layout_marginRight">@dimen/message_details_header_margin_end</item>
+        <item name="android:paddingLeft">@dimen/message_details_header_padding</item>
+        <item name="android:paddingRight">@dimen/message_details_header_padding</item>
     </style>
 
     <style name="MessageUpperHeaderTextStyle">
@@ -607,10 +589,6 @@
         <item name="android:layout_marginLeft">@dimen/teaser_text_padding</item>
     </style>
 
-    <style name="DetailsExpanderStyle">
-        <item name="android:layout_marginLeft">@dimen/message_header_inner_side_padding</item>
-    </style>
-
     <style name="AttachmentMarginStyle">
         <item name="android:layout_marginLeft">@dimen/attachment_margin_side</item>
         <item name="android:layout_marginRight">@dimen/attachment_margin_side</item>
@@ -620,10 +598,6 @@
         <item name="android:layout_marginLeft">@dimen/message_header_padding_start</item>
     </style>
 
-    <style name="AttachmentIconStyle">
-        <item name="android:layout_marginLeft">@dimen/attachment_icon_padding</item>
-    </style>
-
     <style name="ConversationHeaderSideMarginStyle">
         <item name="android:layout_marginLeft">@dimen/conversation_header_margin_side</item>
         <item name="android:layout_marginRight">@dimen/conversation_header_margin_side</item>
@@ -642,10 +616,6 @@
         <item name="android:layout_marginRight">@dimen/folder_list_item_end_margin</item>
     </style>
 
-    <style name="RecipientSummaryStyle" parent="MessageHeaderSmallStyle">
-        <item name="android:layout_marginRight">@dimen/recipient_summary_margin</item>
-    </style>
-
     <style name="ToastBarDescriptionIconStyle">
         <item name="android:paddingLeft">@dimen/toast_bar_description_icon_padding_start</item>
         <item name="android:paddingRight">@dimen/toast_bar_description_icon_padding_end</item>
diff --git a/src/com/android/emailcommon/internet/MimeHeader.java b/src/com/android/emailcommon/internet/MimeHeader.java
index 45ae318..c578bad 100644
--- a/src/com/android/emailcommon/internet/MimeHeader.java
+++ b/src/com/android/emailcommon/internet/MimeHeader.java
@@ -33,10 +33,6 @@
      * into the MIME data by LocalStore.fetch.
      */
     public static final String HEADER_ANDROID_ATTACHMENT_STORE_DATA = "X-Android-Attachment-StoreData";
-    /**
-     * Application specific header that is used to tag body parts for quoted/forwarded messages.
-     */
-    public static final String HEADER_ANDROID_BODY_QUOTED_PART = "X-Android-Body-Quoted-Part";
 
     public static final String HEADER_CONTENT_TYPE = "Content-Type";
     public static final String HEADER_CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
diff --git a/src/com/android/emailcommon/internet/MimeMessage.java b/src/com/android/emailcommon/internet/MimeMessage.java
index aa275c5..9300f6d 100644
--- a/src/com/android/emailcommon/internet/MimeMessage.java
+++ b/src/com/android/emailcommon/internet/MimeMessage.java
@@ -96,12 +96,12 @@
      * @return a long, locally-generated message-ID value
      */
     private static String generateMessageId() {
-        StringBuffer sb = new StringBuffer();
+        final StringBuilder sb = new StringBuilder();
         sb.append("<");
         for (int i = 0; i < 24; i++) {
             // We'll use a 5-bit range (0..31)
-            int value = sRandom.nextInt() & 31;
-            char c = "0123456789abcdefghijklmnopqrstuv".charAt(value);
+            final int value = sRandom.nextInt() & 31;
+            final char c = "0123456789abcdefghijklmnopqrstuv".charAt(value);
             sb.append(c);
         }
         sb.append(".");
@@ -113,7 +113,7 @@
     /**
      * Parse the given InputStream using Apache Mime4J to build a MimeMessage.
      *
-     * @param in
+     * @param in InputStream providing message content
      * @throws IOException
      * @throws MessagingException
      */
@@ -134,20 +134,20 @@
         mSentDate = null;
         mBody = null;
 
-        MimeStreamParser parser = new MimeStreamParser();
+        final MimeStreamParser parser = new MimeStreamParser();
         parser.setContentHandler(new MimeMessageBuilder());
         return parser;
     }
 
     protected void parse(InputStream in) throws IOException, MessagingException {
-        MimeStreamParser parser = init();
+        final MimeStreamParser parser = init();
         parser.parse(new EOLConvertingInputStream(in));
         mComplete = !parser.getPrematureEof();
     }
 
     public void parse(InputStream in, EOLConvertingInputStream.Callback callback)
             throws IOException, MessagingException {
-        MimeStreamParser parser = init();
+        final MimeStreamParser parser = init();
         parser.parse(new EOLConvertingInputStream(in, getSize(), callback));
         mComplete = !parser.getPrematureEof();
     }
@@ -178,7 +178,7 @@
                 // TODO: We should make it more clear what exceptions can be thrown here,
                 // and whether they reflect a normal or error condition.
             } catch (Exception e) {
-
+                LogUtils.v(LogUtils.TAG, "Message missing Date header");
             }
         }
         if (mSentDate == null) {
@@ -190,7 +190,7 @@
                 // TODO: We should make it more clear what exceptions can be thrown here,
                 // and whether they reflect a normal or error condition.
             } catch (Exception e) {
-
+                LogUtils.v(LogUtils.TAG, "Message also missing Delivery-Date header");
             }
         }
         return mSentDate;
@@ -204,7 +204,7 @@
 
     @Override
     public String getContentType() throws MessagingException {
-        String contentType = getFirstHeader(MimeHeader.HEADER_CONTENT_TYPE);
+        final String contentType = getFirstHeader(MimeHeader.HEADER_CONTENT_TYPE);
         if (contentType == null) {
             return "text/plain";
         } else {
@@ -214,17 +214,12 @@
 
     @Override
     public String getDisposition() throws MessagingException {
-        String contentDisposition = getFirstHeader(MimeHeader.HEADER_CONTENT_DISPOSITION);
-        if (contentDisposition == null) {
-            return null;
-        } else {
-            return contentDisposition;
-        }
+        return getFirstHeader(MimeHeader.HEADER_CONTENT_DISPOSITION);
     }
 
     @Override
     public String getContentId() throws MessagingException {
-        String contentId = getFirstHeader(MimeHeader.HEADER_CONTENT_ID);
+        final String contentId = getFirstHeader(MimeHeader.HEADER_CONTENT_ID);
         if (contentId == null) {
             return null;
         } else {
@@ -406,7 +401,7 @@
     public void setBody(Body body) throws MessagingException {
         this.mBody = body;
         if (body instanceof Multipart) {
-            Multipart multipart = ((Multipart)body);
+            final Multipart multipart = ((Multipart)body);
             multipart.setParent(this);
             setHeader(MimeHeader.HEADER_CONTENT_TYPE, multipart.getContentType());
             setHeader("MIME-Version", "1.0");
@@ -494,8 +489,8 @@
             mExtendedHeader = null;
         } else {
             mExtendedHeader = new MimeHeader();
-            for (String header : END_OF_LINE.split(headers)) {
-                String[] tokens = header.split(":", 2);
+            for (final String header : END_OF_LINE.split(headers)) {
+                final String[] tokens = header.split(":", 2);
                 if (tokens.length != 2) {
                     throw new MessagingException("Illegal extended headers: " + headers);
                 }
@@ -523,7 +518,7 @@
      */
     @Override
     public void writeTo(OutputStream out) throws IOException, MessagingException {
-        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
+        final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
         // Force creation of local message-id
         getMessageId();
         getMimeHeaders().writeTo(out);
@@ -561,7 +556,7 @@
             } else {
                 expect(Part.class);
                 try {
-                    MimeMessage m = new MimeMessage();
+                    final MimeMessage m = new MimeMessage();
                     ((Part)stack.peek()).setBody(m);
                     stack.push(m);
                 } catch (MessagingException me) {
@@ -585,7 +580,7 @@
         public void field(String fieldData) {
             expect(Part.class);
             try {
-                String[] tokens = fieldData.split(":", 2);
+                final String[] tokens = fieldData.split(":", 2);
                 ((Part)stack.peek()).addHeader(tokens[0], tokens[1].trim());
             } catch (MessagingException me) {
                 throw new Error(me);
@@ -601,9 +596,9 @@
         public void startMultipart(BodyDescriptor bd) {
             expect(Part.class);
 
-            Part e = (Part)stack.peek();
+            final Part e = (Part)stack.peek();
             try {
-                MimeMultipart multiPart = new MimeMultipart(e.getContentType());
+                final MimeMultipart multiPart = new MimeMultipart(e.getContentType());
                 e.setBody(multiPart);
                 stack.push(multiPart);
             } catch (MessagingException me) {
@@ -614,7 +609,7 @@
         @Override
         public void body(BodyDescriptor bd, InputStream in) throws IOException {
             expect(Part.class);
-            Body body = MimeUtility.decodeBody(in, bd.getTransferEncoding());
+            final Body body = MimeUtility.decodeBody(in, bd.getTransferEncoding());
             try {
                 ((Part)stack.peek()).setBody(body);
             } catch (MessagingException me) {
@@ -632,7 +627,7 @@
             expect(MimeMultipart.class);
 
             try {
-                MimeBodyPart bodyPart = new MimeBodyPart();
+                final MimeBodyPart bodyPart = new MimeBodyPart();
                 ((MimeMultipart)stack.peek()).addBodyPart(bodyPart);
                 stack.push(bodyPart);
             } catch (MessagingException me) {
@@ -649,18 +644,19 @@
         @Override
         public void epilogue(InputStream is) throws IOException {
             expect(MimeMultipart.class);
-            StringBuffer sb = new StringBuffer();
+            final StringBuilder sb = new StringBuilder();
             int b;
             while ((b = is.read()) != -1) {
                 sb.append((char)b);
             }
+            // TODO: why is this commented out?
             // ((Multipart) stack.peek()).setEpilogue(sb.toString());
         }
 
         @Override
         public void preamble(InputStream is) throws IOException {
             expect(MimeMultipart.class);
-            StringBuffer sb = new StringBuffer();
+            final StringBuilder sb = new StringBuilder();
             int b;
             while ((b = is.read()) != -1) {
                 sb.append((char)b);
diff --git a/src/com/android/emailcommon/utility/ConversionUtilities.java b/src/com/android/emailcommon/utility/ConversionUtilities.java
index 0dbb520..7bfe7d9 100644
--- a/src/com/android/emailcommon/utility/ConversionUtilities.java
+++ b/src/com/android/emailcommon/utility/ConversionUtilities.java
@@ -27,13 +27,6 @@
 
 public class ConversionUtilities {
     /**
-     * Values for HEADER_ANDROID_BODY_QUOTED_PART to tag body parts
-     */
-    public static final String BODY_QUOTED_PART_REPLY = "quoted-reply";
-    public static final String BODY_QUOTED_PART_FORWARD = "quoted-forward";
-    public static final String BODY_QUOTED_PART_INTRO = "quoted-intro";
-
-    /**
      * Helper function to append text to a StringBuffer, creating it if necessary.
      * Optimization:  The majority of the time we are *not* appending - we should have a path
      * that deals with single strings.
@@ -60,9 +53,6 @@
     public static class BodyFieldData {
         public String textContent;
         public String htmlContent;
-        public String textReply;
-        public String htmlReply;
-        public String introText;
         public String snippet;
         public boolean isQuotedReply;
         public boolean isQuotedForward;
@@ -76,39 +66,12 @@
         final BodyFieldData data = new BodyFieldData();
         StringBuffer sbHtml = null;
         StringBuffer sbText = null;
-        StringBuffer sbHtmlReply = null;
-        StringBuffer sbTextReply = null;
-        StringBuffer sbIntroText = null;
 
         for (Part viewable : viewables) {
             String text = MimeUtility.getTextFromPart(viewable);
-            String[] replyTags = viewable.getHeader(MimeHeader.HEADER_ANDROID_BODY_QUOTED_PART);
-            String replyTag = null;
-            if (replyTags != null && replyTags.length > 0) {
-                replyTag = replyTags[0];
-            }
             // Deploy text as marked by the various tags
             boolean isHtml = "text/html".equalsIgnoreCase(viewable.getMimeType());
 
-            if (replyTag != null) {
-                data.isQuotedReply = BODY_QUOTED_PART_REPLY.equalsIgnoreCase(replyTag);
-                data.isQuotedForward = BODY_QUOTED_PART_FORWARD.equalsIgnoreCase(replyTag);
-                boolean isQuotedIntro = BODY_QUOTED_PART_INTRO.equalsIgnoreCase(replyTag);
-
-                if (data.isQuotedReply || data.isQuotedForward) {
-                    if (isHtml) {
-                        sbHtmlReply = appendTextPart(sbHtmlReply, text);
-                    } else {
-                        sbTextReply = appendTextPart(sbTextReply, text);
-                    }
-                    continue;
-                }
-                if (isQuotedIntro) {
-                    sbIntroText = appendTextPart(sbIntroText, text);
-                    continue;
-                }
-            }
-
             // Most of the time, just process regular body parts
             if (isHtml) {
                 sbHtml = appendTextPart(sbHtml, text);
@@ -130,15 +93,6 @@
                 data.snippet = TextUtilities.makeSnippetFromHtmlText(text);
             }
         }
-        if (sbHtmlReply != null && sbHtmlReply.length() != 0) {
-            data.htmlReply = sbHtmlReply.toString();
-        }
-        if (sbTextReply != null && sbTextReply.length() != 0) {
-            data.textReply = sbTextReply.toString();
-        }
-        if (sbIntroText != null && sbIntroText.length() != 0) {
-            data.introText = sbIntroText.toString();
-        }
         return data;
     }
 }
diff --git a/src/com/android/mail/browse/ConversationContainer.java b/src/com/android/mail/browse/ConversationContainer.java
index 19380ea..eff4430 100644
--- a/src/com/android/mail/browse/ConversationContainer.java
+++ b/src/com/android/mail/browse/ConversationContainer.java
@@ -20,7 +20,6 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.database.DataSetObserver;
-import android.graphics.Canvas;
 import android.support.v4.view.ViewCompat;
 import android.util.AttributeSet;
 import android.util.SparseArray;
@@ -63,8 +62,14 @@
  * sandwich has unique characteristics: the list items are scrolled based on an external controller,
  * and we happen to know all of the overlay positions up front. So it didn't make sense to shoehorn
  * a ListView in and instead, we rolled our own view recycler by borrowing key details from
- * ListView and AbsListView.
+ * ListView and AbsListView.<br/><br/>
  *
+ * There is one additional constraint with the recycling: since scroll
+ * notifications happen during the WebView's draw, we do not remove and re-add views for recycling.
+ * Instead, we simply move the views off-screen and add them to our recycle cache. When the views
+ * are reused, they are simply moved back on screen instead of added. This practice
+ * circumvents the issues found when views are added or removed during draw (which results in
+ * elements not being drawn and other visual oddities). See b/10994303 for more details.
  */
 public class ConversationContainer extends ViewGroup implements ScrollListener {
     private static final String TAG = ConversationViewFragment.LAYOUT_TAG;
@@ -89,20 +94,6 @@
     private OverlayPosition[] mOverlayPositions;
     private ConversationWebView mWebView;
     private SnapHeader mSnapHeader;
-    private View mTopMostOverlay;
-
-    /**
-     * This is a hack.
-     *
-     * <p>Without this hack enabled, very fast scrolling can sometimes cause the top-most layers
-     * to skip being drawn for a frame or two. It happens specifically when overlay views are
-     * attached or added, and WebView happens to draw (on its own) immediately afterwards.
-     *
-     * <p>The workaround is to force an additional draw of the top-most overlay. Since the problem
-     * only occurs when scrolling overlays are added, restrict the additional draw to only occur
-     * if scrolling overlays were added since the last draw.
-     */
-    private boolean mAttachedOverlaySinceLastDraw;
 
     private final List<View> mNonScrollingChildren = Lists.newArrayList();
 
@@ -178,7 +169,7 @@
     /**
      * The adapter index of the lowest overlay item that is above the top of the screen and reports
      * {@link ConversationOverlayItem#canPushSnapHeader()}. We calculate this after a pass through
-     * {@link #positionOverlays(int, int)}.
+     * {@link #positionOverlays}.
      *
      */
     private int mSnapIndex;
@@ -262,8 +253,6 @@
         mWebView = (ConversationWebView) findViewById(R.id.webview);
         mWebView.addScrollListener(this);
 
-        mTopMostOverlay = findViewById(R.id.conversation_topmost_overlay);
-
         for (int id : BOTTOM_LAYER_VIEW_IDS) {
             mNonScrollingChildren.add(findViewById(id));
         }
@@ -345,7 +334,7 @@
 
     private void clearOverlays() {
         for (int i = 0, len = mOverlayViews.size(); i < len; i++) {
-            detachOverlay(mOverlayViews.valueAt(i));
+            detachOverlay(mOverlayViews.valueAt(i), true /* removeFromContainer */);
         }
         mOverlayViews.clear();
     }
@@ -366,7 +355,7 @@
         mAdditionalBottomBorderAdded = false;
 
         mSnapEnabled = isSnapEnabled();
-        positionOverlays(0, mOffsetY);
+        positionOverlays(mOffsetY, false /* postAddView */);
     }
 
     private void forwardFakeMotionEvent(MotionEvent original, int newAction) {
@@ -449,14 +438,23 @@
     }
 
     @Override
-    public void onNotifierScroll(final int x, final int y) {
+    public void onNotifierScroll(final int y) {
         mVelocityTracker.onInput(y);
         mDisableLayoutTracing = true;
-        positionOverlays(x, y);
+        positionOverlays(y, true /* postAddView */); // post the addView since we're in draw code
         mDisableLayoutTracing = false;
     }
 
-    private void positionOverlays(int x, int y) {
+    /**
+     * Positions the overlays given an updated y position for the container.
+     * @param y the current top position on screen
+     * @param postAddView If {@code true}, posts all calls to
+     *                    {@link #addViewInLayoutWrapper(android.view.View, boolean)}
+     *                    to the UI thread rather than adding it immediately. If {@code false},
+     *                    calls {@link #addViewInLayoutWrapper(android.view.View, boolean)}
+     *                    immediately.
+     */
+    private void positionOverlays(int y, boolean postAddView) {
         mOffsetY = y;
 
         /*
@@ -524,7 +522,7 @@
 
             traceLayout("in loop, spacer=%d overlay=%d t/b=%d/%d (%s)", spacerIndex, adapterIndex,
                     itemPos.top, itemPos.bottom, adapterItem);
-            positionOverlay(adapterIndex, itemPos.top, itemPos.bottom);
+            positionOverlay(adapterIndex, itemPos.top, itemPos.bottom, postAddView);
 
             // and keep stacking overlays unconditionally if we are on the first spacer, or as long
             // as overlays are contiguous
@@ -544,21 +542,21 @@
 
                 traceLayout("in contig loop, spacer=%d overlay=%d t/b=%d/%d (%s)", spacerIndex,
                         adapterIndex, itemPos.top, itemPos.bottom, adapterItem);
-                positionOverlay(adapterIndex, itemPos.top, itemPos.bottom);
+                positionOverlay(adapterIndex, itemPos.top, itemPos.bottom, postAddView);
             }
 
             spacerIndex--;
         }
 
         positionSnapHeader(mSnapIndex);
-        positionAdditionalBottomBorder();
+        positionAdditionalBottomBorder(postAddView);
     }
 
     /**
      * Adds an additional bottom border to the overlay views in case
      * the overlays do not fill the entire screen.
      */
-    private void positionAdditionalBottomBorder() {
+    private void positionAdditionalBottomBorder(boolean postAddView) {
         final int lastBottom = mAdditionalBottomBorderOverlayTop;
         final int containerHeight = webPxToScreenPx(mWebView.getContentHeight());
         final int speculativeHeight = containerHeight - lastBottom;
@@ -571,7 +569,7 @@
             setAdditionalBottomBorderHeight(speculativeHeight);
 
             if (!mAdditionalBottomBorderAdded) {
-                addViewInLayoutWrapper(mAdditionalBottomBorder);
+                addViewInLayoutWrapper(mAdditionalBottomBorder, postAddView);
                 mAdditionalBottomBorderAdded = true;
             }
 
@@ -648,18 +646,11 @@
 
     private void onOverlayScrolledOff(final int adapterIndex, final OverlayView overlay,
             int overlayTop, int overlayBottom) {
-        // detach the view asynchronously, as scroll notification can happen during a draw, when
-        // it's not safe to remove children
-
-        // but immediately remove this view from the view set so future lookups don't find it
+        // immediately remove this view from the view set so future lookups don't find it
         mOverlayViews.remove(adapterIndex);
 
-        post(new Runnable() {
-            @Override
-            public void run() {
-                detachOverlay(overlay);
-            }
-        });
+        // detach but don't actually remove from the view
+        detachOverlay(overlay, false /* removeFromContainer */);
 
         // push it out of view immediately
         // otherwise this scrolled-off header will continue to draw until the runnable runs
@@ -677,12 +668,15 @@
 
     public void addScrapView(int type, View v) {
         mScrapViews.add(type, v);
+        addViewInLayoutWrapper(v, false /* postAddView */);
     }
 
-    private void detachOverlay(OverlayView overlay) {
+    private void detachOverlay(OverlayView overlay, boolean removeFromContainer) {
         // Prefer removeViewInLayout over removeView. The typical followup layout pass is unneeded
         // because removing overlay views doesn't affect overall layout.
-        removeViewInLayout(overlay.view);
+        if (removeFromContainer) {
+            removeViewInLayout(overlay.view);
+        }
         mScrapViews.add(overlay.itemType, overlay.view);
         if (overlay.view instanceof DetachListener) {
             ((DetachListener) overlay.view).onDetachedFromParent();
@@ -736,17 +730,7 @@
             }
         }
 
-        positionOverlays(0, mOffsetY);
-    }
-
-    @Override
-    protected void dispatchDraw(Canvas canvas) {
-        super.dispatchDraw(canvas);
-
-        if (mAttachedOverlaySinceLastDraw) {
-            drawChild(canvas, mTopMostOverlay, getDrawingTime());
-            mAttachedOverlaySinceLastDraw = false;
-        }
+        positionOverlays(mOffsetY, false /* postAddView */);
     }
 
     @Override
@@ -783,7 +767,8 @@
         return (int) (webPx * mScale);
     }
 
-    private void positionOverlay(int adapterIndex, int overlayTopY, int overlayBottomY) {
+    private void positionOverlay(
+            int adapterIndex, int overlayTopY, int overlayBottomY, boolean postAddView) {
         final OverlayView overlay = mOverlayViews.get(adapterIndex);
         final ConversationOverlayItem item = mOverlayAdapter.getItem(adapterIndex);
 
@@ -796,7 +781,7 @@
             View overlayView = overlay != null ? overlay.view : null;
             // show and/or move overlay
             if (overlayView == null) {
-                overlayView = addOverlayView(adapterIndex);
+                overlayView = addOverlayView(adapterIndex, postAddView);
                 ViewCompat.setLayoutDirection(overlayView, ViewCompat.getLayoutDirection(this));
                 measureOverlayView(overlayView);
                 item.markMeasurementValid();
@@ -851,7 +836,7 @@
         child.layout(childLeft, top, childLeft + child.getMeasuredWidth(), bottom);
     }
 
-    private View addOverlayView(int adapterIndex) {
+    private View addOverlayView(int adapterIndex, boolean postAddView) {
         final int itemType = mOverlayAdapter.getItemViewType(adapterIndex);
         final View convertView = mScrapViews.poll(itemType);
 
@@ -864,17 +849,41 @@
             LogUtils.d(TAG, "want to CREATE scrolled-in view: index=%d obj=%s", adapterIndex, view);
         }
 
-        addViewInLayoutWrapper(view);
+        if (view.getParent() == null) {
+            addViewInLayoutWrapper(view, postAddView);
+        } else {
+            // Need to call postInvalidate since the view is being moved back on
+            // screen and we want to force it to draw the view. Without doing this,
+            // the view may not draw itself when it comes back on screen.
+            view.postInvalidate();
+        }
 
         return view;
     }
 
-    private void addViewInLayoutWrapper(View view) {
-        final int index = BOTTOM_LAYER_VIEW_IDS.length;
-        addViewInLayout(view, index, view.getLayoutParams(), true /* preventRequestLayout */);
-        mAttachedOverlaySinceLastDraw = true;
+    private void addViewInLayoutWrapper(View view, boolean postAddView) {
+        final AddViewRunnable addviewRunnable = new AddViewRunnable(view);
+        if (postAddView) {
+            post(addviewRunnable);
+        } else {
+            addviewRunnable.run();
+        }
     }
 
+    private class AddViewRunnable implements Runnable {
+        public final View mView;
+
+        public AddViewRunnable(View view) {
+            mView = view;
+        }
+
+        @Override
+        public void run() {
+            final int index = BOTTOM_LAYER_VIEW_IDS.length;
+            addViewInLayout(mView, index, mView.getLayoutParams(), true /* preventRequestLayout */);
+        }
+    };
+
     private boolean isSnapEnabled() {
         if (mAccountController == null || mAccountController.getAccount() == null
                 || mAccountController.getAccount().settings == null) {
@@ -935,19 +944,6 @@
     }
 
     /**
-     * Return a collection of all currently visible overlay views, in no particular order.
-     * Please don't mess with them too badly (e.g. remove from parent).
-     *
-     */
-    public List<View> getOverlayViews() {
-        final List<View> views = Lists.newArrayList();
-        for (int i = 0, len = mOverlayViews.size(); i < len; i++) {
-            views.add(mOverlayViews.valueAt(i).view);
-        }
-        return views;
-    }
-
-    /**
      * Prevents any layouts from happening until the next time
      * {@link #onGeometryChange(OverlayPosition[])} is
      * called. Useful when you know the HTML spacer coordinates are inconsistent with adapter items.
@@ -968,7 +964,7 @@
         }
 
         mOverlayPositions = overlayPositions;
-        positionOverlays(0, mOffsetY);
+        positionOverlays(mOffsetY, false /* postAddView */);
     }
 
     private void traceLayout(String msg, Object... params) {
diff --git a/src/com/android/mail/browse/ConversationWebView.java b/src/com/android/mail/browse/ConversationWebView.java
index a5d3a14..506674c 100644
--- a/src/com/android/mail/browse/ConversationWebView.java
+++ b/src/com/android/mail/browse/ConversationWebView.java
@@ -180,7 +180,7 @@
         super.onScrollChanged(l, t, oldl, oldt);
 
         for (ScrollListener listener : mScrollListeners) {
-            listener.onNotifierScroll(l, t);
+            listener.onNotifierScroll(t);
         }
     }
 
diff --git a/src/com/android/mail/browse/EmlMessageViewFragment.java b/src/com/android/mail/browse/EmlMessageViewFragment.java
index eb56bf9..3ab9885 100644
--- a/src/com/android/mail/browse/EmlMessageViewFragment.java
+++ b/src/com/android/mail/browse/EmlMessageViewFragment.java
@@ -33,6 +33,7 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.webkit.WebResourceResponse;
 import android.webkit.WebView;
 import android.widget.Toast;
 
@@ -99,6 +100,18 @@
         }
 
         @Override
+        public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
+            // try to load the url assuming it is a cid url
+            final Uri uri = Uri.parse(url);
+            final WebResourceResponse response = loadCIDUri(uri, mViewController.getMessage());
+            if (response != null) {
+                return response;
+            }
+
+            return super.shouldInterceptRequest(view, url);
+        }
+
+        @Override
         public void onPageFinished(WebView view, String url) {
             // Ignore unsafe calls made after a fragment is detached from an activity.
             // This method needs to, for example, get at the loader manager, which needs
diff --git a/src/com/android/mail/browse/MessageAttachmentBar.java b/src/com/android/mail/browse/MessageAttachmentBar.java
index 2c6cbbe..bb5e1e9 100644
--- a/src/com/android/mail/browse/MessageAttachmentBar.java
+++ b/src/com/android/mail/browse/MessageAttachmentBar.java
@@ -123,7 +123,9 @@
 
         final Attachment prevAttachment = mAttachment;
         mAttachment = attachment;
-        mActionHandler.setAccount(mAccount.getEmailAddress());
+        if (mAccount != null) {
+            mActionHandler.setAccount(mAccount.getEmailAddress());
+        }
         mActionHandler.setMessage(message);
         mActionHandler.setAttachment(mAttachment);
         mHideExtraOptionOne = message.getConversation() == null;
diff --git a/src/com/android/mail/browse/MessageFooterView.java b/src/com/android/mail/browse/MessageFooterView.java
index cfec4e3..5fe7439 100644
--- a/src/com/android/mail/browse/MessageFooterView.java
+++ b/src/com/android/mail/browse/MessageFooterView.java
@@ -80,6 +80,8 @@
 
     private MessageFooterCallbacks mCallbacks;
 
+    private Integer mOldAttachmentLoaderId;
+
     /**
      * Callbacks for the MessageFooterView to enable resizing the height.
      */
@@ -89,6 +91,12 @@
         MessageFooterView getViewForItem(MessageFooterItem item);
 
         int getUpdatedHeight(MessageFooterItem item);
+
+        /**
+         * @return <tt>true</tt> if this footer is contained within a SecureConversationViewFragment
+         * and cannot assume the content is <strong>not</strong> malicious
+         */
+        boolean isSecure();
     }
 
     public MessageFooterView(Context context) {
@@ -124,15 +132,20 @@
 
     public void bind(
             MessageHeaderItem headerItem, MessageFooterItem footerItem, boolean measureOnly) {
-        // Resets the footer view. This step is only done if the
-        // attachmentsListUri changes so that we don't
-        // repeat the work of layout and measure when
-        // we're only updating the attachments.
-        if (mMessageHeaderItem != null &&
-                mMessageHeaderItem.getMessage() != null &&
-                mMessageHeaderItem.getMessage().attachmentListUri != null &&
-                !mMessageHeaderItem.getMessage().attachmentListUri.equals(
-                headerItem.getMessage().attachmentListUri)) {
+        mMessageFooterItem = footerItem;
+        mMessageHeaderItem = headerItem;
+
+        final Integer attachmentLoaderId = getAttachmentLoaderId();
+
+        // Destroy the loader if we are attempting to load a different attachment
+        if (mOldAttachmentLoaderId != null &&
+                !Objects.equal(mOldAttachmentLoaderId, attachmentLoaderId)) {
+            mLoaderManager.destroyLoader(mOldAttachmentLoaderId);
+
+            // Resets the footer view. This step is only done if the
+            // attachmentsListUri changes so that we don't
+            // repeat the work of layout and measure when
+            // we're only updating the attachments.
             mAttachmentGrid.removeAllViewsInLayout();
             mAttachmentBarList.removeAllViewsInLayout();
             mViewEntireMessagePrompt.setVisibility(View.GONE);
@@ -141,20 +154,7 @@
             mAttachmentBarList.setVisibility(View.GONE);
             hideAboveAttachmentBarListLayout();
         }
-
-        // If this MessageFooterView is being bound to a new attachment, we need to unbind with the
-        // old loader
-        final Integer oldAttachmentLoaderId = getAttachmentLoaderId();
-
-        mMessageFooterItem = footerItem;
-        mMessageHeaderItem = headerItem;
-
-        final Integer attachmentLoaderId = getAttachmentLoaderId();
-        // Destroy the loader if we are attempting to load a different attachment
-        if (oldAttachmentLoaderId != null &&
-                !Objects.equal(oldAttachmentLoaderId, attachmentLoaderId)) {
-            mLoaderManager.destroyLoader(oldAttachmentLoaderId);
-        }
+        mOldAttachmentLoaderId = attachmentLoaderId;
 
         // kick off load of Attachment objects in background thread
         // but don't do any Loader work if we're only measuring
@@ -222,13 +222,15 @@
         final List<Attachment> barAttachments = new ArrayList<Attachment>(maxSize);
 
         for (Attachment attachment : attachments) {
-            if (attachment.isInlineAttachment()) {
-                // skip non-standard (aka inline) attachments
-                continue;
-            } else if (AttachmentTile.isTiledAttachment(attachment)) {
-                tiledAttachments.add(attachment);
-            } else {
-                barAttachments.add(attachment);
+            // attachments in secure views are displayed in the footer so the user may interact with
+            // them; for normal views there is no need to show inline attachments in the footer
+            // since users can interact with them in place
+            if (!attachment.isInlineAttachment() || mCallbacks.isSecure()) {
+                if (AttachmentTile.isTiledAttachment(attachment)) {
+                    tiledAttachments.add(attachment);
+                } else {
+                    barAttachments.add(attachment);
+                }
             }
         }
 
@@ -367,7 +369,7 @@
     }
 
     public void collapseAboveBarAttachmentsView() {
-        int heightBefore = measureHeight();
+        measureHeight();
         mAboveAttachmentBarListLayout.setVisibility(View.GONE);
         updateSpacerHeight();
     }
diff --git a/src/com/android/mail/browse/MessageHeaderView.java b/src/com/android/mail/browse/MessageHeaderView.java
index 9575f8a..7330338 100644
--- a/src/com/android/mail/browse/MessageHeaderView.java
+++ b/src/com/android/mail/browse/MessageHeaderView.java
@@ -23,13 +23,10 @@
 import android.content.res.Resources;
 import android.database.DataSetObserver;
 import android.graphics.Bitmap;
-import android.graphics.Typeface;
 import android.support.v4.text.BidiFormatter;
 import android.text.Spannable;
-import android.text.SpannableStringBuilder;
 import android.text.Spanned;
 import android.text.TextUtils;
-import android.text.style.StyleSpan;
 import android.text.style.URLSpan;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
@@ -87,15 +84,10 @@
     private static final int SHOW_IMAGE_PROMPT_ONCE = 1;
     private static final int SHOW_IMAGE_PROMPT_ALWAYS = 2;
 
-    private static final String HEADER_INFLATE_TAG = "message header inflate";
-    private static final String HEADER_ADDVIEW_TAG = "message header addView";
     private static final String HEADER_RENDER_TAG = "message header render";
-    private static final String PREMEASURE_TAG = "message header pre-measure";
     private static final String LAYOUT_TAG = "message header layout";
     private static final String MEASURE_TAG = "message header measure";
 
-    private static final String RECIPIENT_HEADING_DELIMITER = "   ";
-
     private static final String LOG_TAG = LogTag.getLogTag();
 
     // This is a debug only feature
@@ -103,18 +95,19 @@
 
     private MessageHeaderViewCallbacks mCallbacks;
 
-    private ViewGroup mUpperHeaderView;
     private View mSnapHeaderBottomBorder;
     private TextView mSenderNameView;
-    private TextView mSenderEmailView;
     private TextView mDateView;
     private TextView mSnippetView;
     private QuickContactBadge mPhotoView;
     private ImageView mStarView;
     private ViewGroup mTitleContainerView;
+    private ViewGroup mActionsAndDetailsView;
     private ViewGroup mExtraContentView;
-    private ViewGroup mCollapsedDetailsView;
-    private ViewGroup mExpandedDetailsView;
+    private View mCollapsedDetailsView;
+    private TextView mCollapsedRecipientSummary;
+    private View mExpandedDetailsView;
+    private TextView mExpandedRecipientSummary;
     private SpamWarningView mSpamWarningView;
     private TextView mImagePromptView;
     private MessageInviteView mInviteView;
@@ -161,6 +154,8 @@
      */
     private boolean mCollapsedStarVisible;
     private boolean mStarShown;
+    private int mStarHeight;
+    private int mStarHeightCollapsed;
 
     /**
      * End margin of the text when collapsed. When expanded, the margin is 0.
@@ -172,7 +167,7 @@
     private MessageHeaderItem mMessageHeaderItem;
     private ConversationMessage mMessage;
 
-    private boolean mCollapsedDetailsValid;
+    private boolean mRecipientSummaryValid;
     private boolean mExpandedDetailsValid;
 
     private final LayoutInflater mInflater;
@@ -230,6 +225,12 @@
         String getMessageTransforms(Message msg);
 
         FragmentManager getFragmentManager();
+
+        /**
+         * @return <tt>true</tt> if this header is contained within a SecureConversationViewFragment
+         * and cannot assume the content is <strong>not</strong> malicious
+         */
+        boolean isSecure();
     }
 
     public MessageHeaderView(Context context) {
@@ -258,10 +259,8 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        mUpperHeaderView = (ViewGroup) findViewById(R.id.upper_header);
         mSnapHeaderBottomBorder = findViewById(R.id.snap_header_bottom_border);
         mSenderNameView = (TextView) findViewById(R.id.sender_name);
-        mSenderEmailView = (TextView) findViewById(R.id.sender_email);
         mDateView = (TextView) findViewById(R.id.send_date);
         mSnippetView = (TextView) findViewById(R.id.email_snippet);
         mPhotoView = (QuickContactBadge) findViewById(R.id.photo);
@@ -270,6 +269,7 @@
         mForwardButton = findViewById(R.id.forward);
         mStarView = (ImageView) findViewById(R.id.star);
         mTitleContainerView = (ViewGroup) findViewById(R.id.title_container);
+        mActionsAndDetailsView = (ViewGroup) findViewById(R.id.actions_and_details);
         mOverflowButton = findViewById(R.id.overflow);
         mDraftIcon = findViewById(R.id.draft);
         mEditDraftButton = findViewById(R.id.edit_draft);
@@ -281,20 +281,22 @@
         final Resources resources = getResources();
         mTitleContainerCollapsedMarginEnd = resources.getDimensionPixelSize(
                 R.dimen.message_header_title_container_margin_end_collapsed);
+        mStarHeight = resources.getDimensionPixelSize(R.dimen.message_header_action_button_height);
+        mStarHeightCollapsed = resources.getDimensionPixelSize(
+                R.dimen.message_header_action_button_height_condensed);
 
         setExpanded(true);
 
-        registerMessageClickTargets(R.id.reply, R.id.reply_all, R.id.forward, R.id.star,
-                R.id.edit_draft, R.id.overflow, R.id.upper_header);
+        registerMessageClickTargets(mReplyButton, mReplyAllButton, mForwardButton, mStarView,
+                mEditDraftButton, mOverflowButton, mTitleContainerView);
 
-        mUpperHeaderView.setOnCreateContextMenuListener(mEmailCopyMenu);
+        mTitleContainerView.setOnCreateContextMenuListener(mEmailCopyMenu);
     }
 
-    private void registerMessageClickTargets(int... ids) {
-        for (int id : ids) {
-            View v = findViewById(id);
-            if (v != null) {
-                v.setOnClickListener(this);
+    private void registerMessageClickTargets(View... views) {
+        for (View view : views) {
+            if (view != null) {
+                view.setOnClickListener(this);
             }
         }
     }
@@ -412,15 +414,27 @@
         Timer t = new Timer();
         t.start(HEADER_RENDER_TAG);
 
-        mCollapsedDetailsValid = false;
+        mRecipientSummaryValid = false;
         mExpandedDetailsValid = false;
 
         mMessage = mMessageHeaderItem.getMessage();
 
         final Account account = getAccount();
-        final boolean alwaysShowImages = (account != null) &&
+        final boolean alwaysShowImagesForAccount = (account != null) &&
                 (account.settings.showImages == Settings.ShowImages.ALWAYS);
-        mShowImagePrompt = mMessage.shouldShowImagePrompt() && !alwaysShowImages;
+
+        final boolean alwaysShowImagesForMessage = mMessage.shouldShowImagePrompt();
+
+        if (!alwaysShowImagesForMessage) {
+            // we don't need the "Show picture" prompt if the user allows images for this message
+            mShowImagePrompt = false;
+        } else if (mCallbacks.isSecure()) {
+            // in a secure view we always display the "Show picture" prompt
+            mShowImagePrompt = true;
+        } else {
+            // otherwise honor the account setting for automatically showing pictures
+            mShowImagePrompt = !alwaysShowImagesForAccount;
+        }
 
         setExpanded(mMessageHeaderItem.isExpanded());
 
@@ -445,11 +459,11 @@
         // 2. the account has no custom froms, fromAddress will be empty, and we
         // can safely fall back and show the account name as sender since it's
         // the only possible fromAddress.
-        String from = mMessage.getFrom();
-        if (TextUtils.isEmpty(from)) {
-            from = (account != null) ? account.getEmailAddress() : "";
+        String fromAddress = mMessage.getFrom();
+        if (TextUtils.isEmpty(fromAddress)) {
+            fromAddress = (account != null) ? account.getEmailAddress() : "";
         }
-        mSender = getAddress(from);
+        mSender = getAddress(fromAddress);
 
         mStarView.setSelected(mMessage.starred);
         mStarView.setContentDescription(getResources().getString(
@@ -468,16 +482,13 @@
 
         updateChildVisibility();
 
-        final String snippet;
         if (mIsDraft || mIsSending) {
-            snippet = makeSnippet(mMessage.snippet);
+            mSnippet = makeSnippet(mMessage.snippet);
         } else {
-            snippet = mMessage.snippet;
+            mSnippet = mMessage.snippet;
         }
-        mSnippet = snippet == null ? null : getBidiFormatter().unicodeWrap(snippet);
 
         mSenderNameView.setText(getHeaderTitle());
-        mSenderEmailView.setText(getHeaderSubtitle());
         mDateView.setText(mMessageHeaderItem.getTimestampLong());
         mSnippetView.setText(mSnippet);
         setAddressOnContextMenu();
@@ -548,32 +559,12 @@
         } else if (mIsSending) {
             title = getResources().getString(R.string.sending);
         } else {
-            title = getBidiFormatter().unicodeWrap(
-                    getSenderName(mSender));
+            title = getSenderName(mSender);
         }
 
         return title;
     }
 
-    private CharSequence getHeaderSubtitle() {
-        CharSequence sub;
-        if (mIsSending) {
-            sub = null;
-        } else {
-            if (isExpanded()) {
-                if (mMessage.viaDomain != null) {
-                    sub = getResources().getString(
-                            R.string.via_domain, mMessage.viaDomain);
-                } else {
-                    sub = getSenderAddress(mSender);
-                }
-            } else {
-                sub = mSnippet;
-            }
-        }
-        return sub;
-    }
-
     /**
      * Return the name, if known, or just the address.
      */
@@ -585,13 +576,6 @@
         return TextUtils.isEmpty(displayName) ? sender.getAddress() : displayName;
     }
 
-    /**
-     * Return the address, if a name is present, or null if not.
-     */
-    private static CharSequence getSenderAddress(Address sender) {
-        return (sender != null) ? sender.getAddress() : "";
-    }
-
     private static void setChildVisibility(int visibility, View... children) {
         for (View v : children) {
             if (v != null) {
@@ -613,25 +597,23 @@
      * Update the visibility of the many child views based on expanded/collapsed
      * and draft/normal state.
      */
+    @SuppressLint("NewApi")
     private void updateChildVisibility() {
         // Too bad this can't be done with an XML state list...
 
         if (mIsViewOnlyMode) {
-            setMessageDetailsVisibility(VISIBLE);
-            setChildVisibility(GONE, mSnapHeaderBottomBorder);
+            updateChildVisibilityForSnappyViews();
 
             setChildVisibility(GONE, mReplyButton, mReplyAllButton, mForwardButton,
-                    mOverflowButton, mDraftIcon, mEditDraftButton, mStarView,
-                    mAttachmentIcon, mUpperDateView, mSnippetView);
-            setChildVisibility(VISIBLE, mPhotoView, mSenderEmailView, mDateView);
+                    mOverflowButton, mDraftIcon, mEditDraftButton,
+                    mStarView, mUpperDateView, mSnippetView);
+            setChildVisibility(VISIBLE, mPhotoView, mDateView);
 
             setChildMarginEnd(mTitleContainerView, 0);
         } else if (isExpanded()) {
             int normalVis, draftVis;
 
-            final boolean isSnappy = isSnappy();
-            setMessageDetailsVisibility((isSnappy) ? GONE : VISIBLE);
-            setChildVisibility(isSnappy ? VISIBLE : GONE, mSnapHeaderBottomBorder);
+            updateChildVisibilityForSnappyViews();
 
             if (mIsDraft) {
                 normalVis = GONE;
@@ -644,9 +626,13 @@
             setReplyOrReplyAllVisible();
             setChildVisibility(normalVis, mPhotoView, mForwardButton, mOverflowButton);
             setChildVisibility(draftVis, mDraftIcon, mEditDraftButton);
-            setChildVisibility(VISIBLE, mSenderEmailView, mDateView);
+            setChildVisibility(VISIBLE, mDateView);
             setChildVisibility(GONE, mAttachmentIcon, mUpperDateView, mSnippetView);
+
             setChildVisibility(mStarShown ? VISIBLE : GONE, mStarView);
+            if (mStarShown) {
+                setChildHeight(mStarHeight, mStarView);
+            }
 
             setChildMarginEnd(mTitleContainerView, 0);
 
@@ -657,12 +643,15 @@
             setChildVisibility(VISIBLE, mSnippetView, mUpperDateView);
 
             setChildVisibility(GONE, mEditDraftButton, mReplyButton, mReplyAllButton,
-                    mForwardButton, mOverflowButton, mSenderEmailView, mDateView);
+                    mForwardButton, mOverflowButton, mDateView);
 
-            setChildVisibility(mMessage.hasAttachments ? VISIBLE : GONE,
-                    mAttachmentIcon);
+            setChildVisibility(mMessage.hasAttachments ? VISIBLE : GONE, mAttachmentIcon);
 
-            setChildVisibility(mCollapsedStarVisible && mStarShown ? VISIBLE : GONE, mStarView);
+            final boolean showStar = mCollapsedStarVisible && mStarShown;
+            setChildVisibility(showStar ? VISIBLE : GONE, mStarView);
+            if (showStar) {
+                setChildHeight(mStarHeightCollapsed, mStarView);
+            }
 
             setChildMarginEnd(mTitleContainerView, mTitleContainerCollapsedMarginEnd);
 
@@ -680,6 +669,29 @@
         }
     }
 
+    private static void setChildHeight(int height, View view) {
+        final ViewGroup.LayoutParams params = view.getLayoutParams();
+        params.height = height;
+        view.setLayoutParams(params);
+    }
+
+    /**
+     * Uses the snappy state of the view to appropriately
+     * enable/disable some of the details views.
+     * Specifically, if snappy, {@link #setMessageDetailsVisibleForSnapHeader()}
+     * is called instead of {@link #setMessageDetailsVisibility(int)}.
+     * Also controls visibility of the snap header border gradient.
+     */
+    private void updateChildVisibilityForSnappyViews() {
+        final boolean isSnappy = isSnappy();
+        if (isSnappy) {
+            setMessageDetailsVisibleForSnapHeader();
+        } else {
+            setMessageDetailsVisibility(VISIBLE);
+        }
+        setChildVisibility(isSnappy ? VISIBLE : GONE, mSnapHeaderBottomBorder);
+    }
+
     /**
      * If an overflow menu is present in this header's layout, set the
      * visibility of "Reply" and "Reply All" actions based on a user preference.
@@ -719,55 +731,52 @@
      */
     private static class RecipientListsBuilder {
         private final Context mContext;
-        private final String mMe;
+        private final String mMeEmailAddress;
         private final String mMyName;
-        private final SpannableStringBuilder mBuilder = new SpannableStringBuilder();
+        private final StringBuilder mBuilder = new StringBuilder();
         private final CharSequence mComma;
         private final Map<String, Address> mAddressCache;
         private final VeiledAddressMatcher mMatcher;
+        private final BidiFormatter mBidiFormatter;
 
         int mRecipientCount = 0;
         boolean mFirst = true;
 
-        public RecipientListsBuilder(Context context, String me, String myName,
-                Map<String, Address> addressCache, VeiledAddressMatcher matcher) {
+        public RecipientListsBuilder(Context context, String meEmailAddress, String myName,
+                Map<String, Address> addressCache, VeiledAddressMatcher matcher,
+                BidiFormatter bidiFormatter) {
             mContext = context;
-            mMe = me;
+            mMeEmailAddress = meEmailAddress;
             mMyName = myName;
             mComma = mContext.getText(R.string.enumeration_comma);
             mAddressCache = addressCache;
             mMatcher = matcher;
+            mBidiFormatter = bidiFormatter;
         }
 
-        public void append(String[] recipients, int headingRes) {
-            int addLimit = SUMMARY_MAX_RECIPIENTS - mRecipientCount;
-            CharSequence recipientList = getSummaryTextForHeading(headingRes, recipients, addLimit);
-            if (recipientList != null) {
-                // duplicate TextUtils.join() logic to minimize temporary
-                // allocations, and because we need to support spans
-                if (mFirst) {
-                    mFirst = false;
-                } else {
-                    mBuilder.append(RECIPIENT_HEADING_DELIMITER);
-                }
-                mBuilder.append(recipientList);
+        public void append(String[] recipients) {
+            final int addLimit = SUMMARY_MAX_RECIPIENTS - mRecipientCount;
+            final boolean hasRecipients = appendRecipients(recipients, addLimit);
+            if (hasRecipients) {
                 mRecipientCount += Math.min(addLimit, recipients.length);
             }
         }
 
-        private CharSequence getSummaryTextForHeading(int headingStrRes, String[] rawAddrs,
+        /**
+         * Appends formatted recipients of the message to the recipient list,
+         * as long as there are recipients left to append and the maximum number
+         * of addresses limit has not been reached.
+         * @param rawAddrs The addresses to append.
+         * @param maxToCopy The maximum number of addresses to append.
+         * @return {@code true} if a recipient has been appended. {@code false}, otherwise.
+         */
+        private boolean appendRecipients(String[] rawAddrs,
                 int maxToCopy) {
             if (rawAddrs == null || rawAddrs.length == 0 || maxToCopy == 0) {
-                return null;
+                return false;
             }
 
-            SpannableStringBuilder ssb = new SpannableStringBuilder(
-                    mContext.getString(headingStrRes));
-            ssb.setSpan(new StyleSpan(Typeface.NORMAL), 0, ssb.length(),
-                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-
             final int len = Math.min(maxToCopy, rawAddrs.length);
-            boolean first = true;
             for (int i = 0; i < len; i++) {
                 final Address email = Utils.getAddress(mAddressCache, rawAddrs[i]);
                 final String emailAddress = email.getAddress();
@@ -781,38 +790,53 @@
                     }
                 } else {
                     // Not a veiled address, show first part of email, or "me".
-                    name = mMe.equals(emailAddress) ? mMyName : email.getSimplifiedName();
+                    name = mMeEmailAddress.equals(emailAddress) ?
+                            mMyName : email.getSimplifiedName();
                 }
 
-                // duplicate TextUtils.join() logic to minimize temporary
-                // allocations, and because we need to support spans
-                if (first) {
-                    first = false;
+                // duplicate TextUtils.join() logic to minimize temporary allocations
+                if (mFirst) {
+                    mFirst = false;
                 } else {
-                    ssb.append(mComma);
+                    mBuilder.append(mComma);
                 }
-                ssb.append(name);
+                mBuilder.append(mBidiFormatter.unicodeWrap(name));
             }
 
-            return ssb;
+            return true;
         }
 
         public CharSequence build() {
-            return mBuilder;
+            return mContext.getString(R.string.to_message_header, mBuilder);
         }
     }
 
-    @VisibleForTesting
-    static CharSequence getRecipientSummaryText(Context context, String me, String myName,
-            String[] to, String[] cc, String[] bcc, Map<String, Address> addressCache,
-            VeiledAddressMatcher matcher) {
+    private CharSequence getRecipientSummary() {
+        if (!mRecipientSummaryValid) {
+            if (mMessageHeaderItem == null) {
+                return "";
+            }
 
-        final RecipientListsBuilder builder =
-                new RecipientListsBuilder(context, me, myName, addressCache, matcher);
+            if (mMessageHeaderItem.recipientSummaryText == null) {
+                final Account account = getAccount();
+                final String meEmailAddress = (account != null) ? account.getEmailAddress() : "";
+                mMessageHeaderItem.recipientSummaryText =
+                        getRecipientSummaryText(getContext(), meEmailAddress);
+            }
 
-        builder.append(to, R.string.to_heading);
-        builder.append(cc, R.string.cc_heading);
-        builder.append(bcc, R.string.bcc_heading);
+            mRecipientSummaryValid = true;
+        }
+
+        return mMessageHeaderItem.recipientSummaryText;
+    }
+
+    private CharSequence getRecipientSummaryText(Context context, String meEmailAddress) {
+        final RecipientListsBuilder builder = new RecipientListsBuilder(context,
+                meEmailAddress, mMyName, mAddressCache, mVeiledMatcher, getBidiFormatter());
+
+        builder.append(mTo);
+        builder.append(mCc);
+        builder.append(mBcc);
 
         return builder.build();
     }
@@ -836,7 +860,9 @@
         boolean photoSet = false;
         final String email = mSender.getAddress();
         final ContactInfo info = mContactInfoSource.getContactInfo(email);
-        if (info != null) {
+        // Need to also check if we have a contactUri because we put empty
+        // results in the ContactInfoSource if no result was found but a query happened.
+        if (info != null && info.contactUri != null) {
             mPhotoView.assignContactUri(info.contactUri);
             if (info.photo != null) {
                 mPhotoView.setImageBitmap(info.photo);
@@ -928,10 +954,9 @@
             m.findItem(R.id.report_rendering_problem).setVisible(reportRendering);
 
             mPopup.show();
-        } else if (id == R.id.details_collapsed_content
-                || id == R.id.details_expanded_content) {
-            toggleMessageDetails(v);
-        } else if (id == R.id.upper_header) {
+        } else if (id == R.id.details_collapsed_content || id == R.id.details_expanded_content) {
+            toggleMessageDetails();
+        } else if (id == R.id.title_container) {
             toggleExpanded();
         } else if (id == R.id.show_pictures_text) {
             handleShowImagePromptClick(v);
@@ -983,7 +1008,6 @@
         // The snappy header will disappear; no reason to update text.
         if (!isSnappy()) {
             mSenderNameView.setText(getHeaderTitle());
-            mSenderEmailView.setText(getHeaderSubtitle());
             mDateView.setText(mMessageHeaderItem.getTimestampLong());
             mSnippetView.setText(mSnippet);
         }
@@ -1001,6 +1025,8 @@
             mCallbacks.setMessageExpanded(mMessageHeaderItem, h,
                     borderHeights.topHeight, borderHeights.bottomHeight);
         }
+
+        requestLayout();
     }
 
     /**
@@ -1063,23 +1089,23 @@
         public int bottomHeight = -1;
     }
 
-    private boolean isValidPosition(int position, int size) {
+    private static boolean isValidPosition(int position, int size) {
         return position >= 0 && position < size;
     }
 
     @Override
     public void setSnappy() {
         mIsSnappy = true;
-        hideMessageDetails();
+        setMessageDetailsVisibleForSnapHeader();
     }
 
     private boolean isSnappy() {
         return mIsSnappy;
     }
 
-    private void toggleMessageDetails(View visibleDetailsView) {
+    private void toggleMessageDetails() {
         int heightBefore = measureHeight();
-        final boolean detailsExpanded = (visibleDetailsView == mCollapsedDetailsView);
+        final boolean detailsExpanded = !mMessageHeaderItem.detailsExpanded;
         Analytics.getInstance().sendEvent(
                 "message_header", "toggle_details", detailsExpanded ? "expand" : "collapse", 0);
         setMessageDetailsExpanded(detailsExpanded);
@@ -1087,6 +1113,8 @@
         if (mCallbacks != null) {
             mCallbacks.setMessageDetailsExpanded(mMessageHeaderItem, detailsExpanded, heightBefore);
         }
+
+        requestLayout();
     }
 
     private void setMessageDetailsExpanded(boolean expand) {
@@ -1103,14 +1131,28 @@
         }
     }
 
-    public void setMessageDetailsVisibility(int vis) {
+    /**
+     * Sets the visibility of the various message details when in snap header mode.
+     * Hides all of the views except for part of the collapsed details.
+     * The collapsed details shows its recipient summary in snap header mode.
+     */
+    private void setMessageDetailsVisibleForSnapHeader() {
+        showCollapsedDetails(true /* isSnappy */);
+        hideExpandedDetails();
+        hideSpamWarning();
+        hideShowImagePrompt();
+        hideInvite();
+        mTitleContainerView.setOnCreateContextMenuListener(null);
+    }
+
+    private void setMessageDetailsVisibility(int vis) {
         if (vis == GONE) {
             hideCollapsedDetails();
             hideExpandedDetails();
             hideSpamWarning();
             hideShowImagePrompt();
             hideInvite();
-            mUpperHeaderView.setOnCreateContextMenuListener(null);
+            mTitleContainerView.setOnCreateContextMenuListener(null);
         } else {
             setMessageDetailsExpanded(mMessageHeaderItem.detailsExpanded);
             if (mMessage.spamWarningString == null) {
@@ -1132,14 +1174,10 @@
             } else {
                 hideInvite();
             }
-            mUpperHeaderView.setOnCreateContextMenuListener(mEmailCopyMenu);
+            mTitleContainerView.setOnCreateContextMenuListener(mEmailCopyMenu);
         }
     }
 
-    private void hideMessageDetails() {
-        setMessageDetailsVisibility(GONE);
-    }
-
     private void hideCollapsedDetails() {
         if (mCollapsedDetailsView != null) {
             mCollapsedDetailsView.setVisibility(GONE);
@@ -1269,27 +1307,36 @@
     /**
      * Makes collapsed details visible. If necessary, will inflate details
      * layout and render using saved-off state (senders, timestamp, etc).
+     * Note: this method assumes that the collapsed details is being shown for
+     * non-snap headers.
      */
     private void showCollapsedDetails() {
-        if (mCollapsedDetailsView == null) {
-            mCollapsedDetailsView = (ViewGroup) mInflater.inflate(
-                    R.layout.conversation_message_details_header, this, false);
-            mExtraContentView.addView(mCollapsedDetailsView, 0);
-            mCollapsedDetailsView.setOnClickListener(this);
-        }
-        if (!mCollapsedDetailsValid) {
-            if (mMessageHeaderItem.recipientSummaryText == null) {
-                final Account account = getAccount();
-                final String name = (account != null) ? account.getEmailAddress() : "";
-                mMessageHeaderItem.recipientSummaryText = getRecipientSummaryText(getContext(),
-                        name, mMyName, mTo, mCc, mBcc, mAddressCache, mVeiledMatcher);
-            }
-            ((TextView) findViewById(R.id.recipients_summary))
-                    .setText(mMessageHeaderItem.recipientSummaryText);
+        showCollapsedDetails(false /* isSnapHeader */);
+    }
 
-            mCollapsedDetailsValid = true;
+    /**
+     * Makes collapsed details visible. If necessary, will inflate details
+     * layout and render using saved-off state (senders, timestamp, etc).
+     * @param isSnapHeader If {@code true}, hides the "Details" text. If {@code false},
+     *                     shows the "Details" text and sets an onClickListener.
+     */
+    private void showCollapsedDetails(boolean isSnapHeader) {
+        if (mCollapsedDetailsView == null) {
+            mCollapsedDetailsView = mInflater.inflate(
+                    R.layout.conversation_message_details_header, mActionsAndDetailsView, false);
+            mCollapsedRecipientSummary = (TextView)
+                    mCollapsedDetailsView.findViewById(R.id.recipients_summary_collapsed);
+            mActionsAndDetailsView.addView(mCollapsedDetailsView);
+            if (!isSnapHeader) {
+                mCollapsedDetailsView.setOnClickListener(this);
+            }
         }
+
+        mCollapsedRecipientSummary.setText(getRecipientSummary());
         mCollapsedDetailsView.setVisibility(VISIBLE);
+        if (isSnapHeader) {
+            mCollapsedDetailsView.findViewById(R.id.details_text).setVisibility(GONE);
+        }
     }
 
     /**
@@ -1301,18 +1348,22 @@
         // lazily create expanded details view
         final boolean expandedViewCreated = ensureExpandedDetailsView();
         if (expandedViewCreated) {
-            mExtraContentView.addView(mExpandedDetailsView, 0);
+            mActionsAndDetailsView.addView(mExpandedDetailsView);
+            mExpandedRecipientSummary =
+                    (TextView) mExpandedDetailsView.findViewById(R.id.recipients_summary_expanded);
+            mExpandedDetailsView.setOnClickListener(this);
         }
+
+        mExpandedRecipientSummary.setText(getRecipientSummary());
         mExpandedDetailsView.setVisibility(VISIBLE);
     }
 
     private boolean ensureExpandedDetailsView() {
         boolean viewCreated = false;
         if (mExpandedDetailsView == null) {
-            View v = inflateExpandedDetails(mInflater);
-            v.setOnClickListener(this);
-
-            mExpandedDetailsView = (ViewGroup) v;
+            mExpandedDetailsView = mInflater.inflate(
+                    R.layout.conversation_message_details_header_expanded,
+                    mActionsAndDetailsView, false);
             viewCreated = true;
         }
         if (!mExpandedDetailsValid) {
@@ -1326,11 +1377,6 @@
         return viewCreated;
     }
 
-    public static View inflateExpandedDetails(LayoutInflater inflater) {
-        return inflater.inflate(R.layout.conversation_message_details_header_expanded, null,
-                false);
-    }
-
     public static void renderExpandedDetails(Resources res, View detailsView,
             String viaDomain, Map<String, Address> addressCache, Account account,
             VeiledAddressMatcher veiledMatcher, String[] from, String[] replyTo,
diff --git a/src/com/android/mail/browse/MessageScrollView.java b/src/com/android/mail/browse/MessageScrollView.java
index d3182ae..91e7ca2 100644
--- a/src/com/android/mail/browse/MessageScrollView.java
+++ b/src/com/android/mail/browse/MessageScrollView.java
@@ -258,7 +258,7 @@
     protected void onScrollChanged(int l, int t, int oldl, int oldt) {
         super.onScrollChanged(l, t, oldl, oldt);
         for (ScrollListener listener : mScrollListeners) {
-            listener.onNotifierScroll(l, t);
+            listener.onNotifierScroll(t);
         }
     }
 
diff --git a/src/com/android/mail/browse/ScrollIndicatorsView.java b/src/com/android/mail/browse/ScrollIndicatorsView.java
index 4656644..3a3055b 100644
--- a/src/com/android/mail/browse/ScrollIndicatorsView.java
+++ b/src/com/android/mail/browse/ScrollIndicatorsView.java
@@ -77,7 +77,7 @@
     }
 
     @Override
-    public void onNotifierScroll(int left, int top) {
+    public void onNotifierScroll(int top) {
         awakenScrollBars();
     }
 }
diff --git a/src/com/android/mail/browse/ScrollNotifier.java b/src/com/android/mail/browse/ScrollNotifier.java
index 0d0b60e..f73b9d0 100644
--- a/src/com/android/mail/browse/ScrollNotifier.java
+++ b/src/com/android/mail/browse/ScrollNotifier.java
@@ -19,7 +19,7 @@
 
 public interface ScrollNotifier {
     public interface ScrollListener {
-        void onNotifierScroll(int x, int y);
+        void onNotifierScroll(int y);
     }
 
     void addScrollListener(ScrollListener l);
diff --git a/src/com/android/mail/browse/WebViewContextMenu.java b/src/com/android/mail/browse/WebViewContextMenu.java
index a71cff2..b81a3be 100644
--- a/src/com/android/mail/browse/WebViewContextMenu.java
+++ b/src/com/android/mail/browse/WebViewContextMenu.java
@@ -261,6 +261,16 @@
                 String decodedPhoneExtra;
                 try {
                     decodedPhoneExtra = URLDecoder.decode(extra, Charset.defaultCharset().name());
+
+                    // International numbers start with '+' followed by the country code, etc.
+                    // However, during decode, the initial '+' is changed into ' '.
+                    // Let's special case that here to avoid losing that information. If the decoded
+                    // string starts with one space, let's replace that space with + since it's
+                    // impossible for the normal number string to start with a space.
+                    // b/10640197
+                    if (decodedPhoneExtra.startsWith(" ") && !decodedPhoneExtra.startsWith("  ")) {
+                        decodedPhoneExtra = decodedPhoneExtra.replaceFirst(" ", "+");
+                    }
                 } catch (UnsupportedEncodingException ignore) {
                     // Should never happen; default charset is UTF-8
                     decodedPhoneExtra = extra;
diff --git a/src/com/android/mail/compose/AttachmentComposeView.java b/src/com/android/mail/compose/AttachmentComposeView.java
index 2c4198c..32a247f 100644
--- a/src/com/android/mail/compose/AttachmentComposeView.java
+++ b/src/com/android/mail/compose/AttachmentComposeView.java
@@ -54,7 +54,7 @@
 
         LayoutInflater factory = LayoutInflater.from(getContext());
 
-        factory.inflate(R.layout.attachment, this);
+        factory.inflate(R.layout.compose_attachment_bar, this);
         populateAttachmentData(c);
     }
 
diff --git a/src/com/android/mail/compose/ComposeActivity.java b/src/com/android/mail/compose/ComposeActivity.java
index 7903ab9..41049de 100644
--- a/src/com/android/mail/compose/ComposeActivity.java
+++ b/src/com/android/mail/compose/ComposeActivity.java
@@ -245,7 +245,14 @@
     /**
      * A single thread for running tasks in the background.
      */
-    private Handler mSendSaveTaskHandler = null;
+    private final static Handler SEND_SAVE_TASK_HANDLER;
+    static {
+        HandlerThread handlerThread = new HandlerThread("Send Message Task Thread");
+        handlerThread.start();
+
+        SEND_SAVE_TASK_HANDLER = new Handler(handlerThread.getLooper());
+    }
+
     private RecipientEditTextView mTo;
     private RecipientEditTextView mCc;
     private RecipientEditTextView mBcc;
@@ -545,7 +552,6 @@
         } else if (message != null && action != EDIT_DRAFT) {
             initFromDraftMessage(message);
             initQuotedTextFromRefMessage(mRefMessage, action);
-            showCcBcc(savedState);
             mShowQuotedText = message.appendRefMessageContent;
             // if we should be showing quoted text but mRefMessage is null
             // and we have some quotedText, display that
@@ -562,9 +568,6 @@
                 throw new IllegalStateException("Message must not be null to edit draft");
             }
             initFromDraftMessage(message);
-            final boolean showBcc = !TextUtils.isEmpty(message.getBcc());
-            final boolean showCc = showBcc || !TextUtils.isEmpty(message.getCc());
-            mCcBccView.show(false, showCc, showBcc);
             // Update the action to the draft type of the previous draft
             switch (message.draftType) {
                 case UIProvider.DraftType.REPLY:
@@ -749,6 +752,13 @@
         }
 
         initChangeListeners();
+
+        // These two should be identical since we check CC and BCC the same way
+        boolean showCc = !TextUtils.isEmpty(mCc.getText()) || (savedInstanceState != null &&
+                savedInstanceState.getBoolean(EXTRA_SHOW_CC));
+        boolean showBcc = !TextUtils.isEmpty(mBcc.getText()) || (savedInstanceState != null &&
+                savedInstanceState.getBoolean(EXTRA_SHOW_BCC));
+        mCcBccView.show(false /* animate */, showCc, showBcc);
         updateHideOrShowCcBcc();
         updateHideOrShowQuotedText(mShowQuotedText);
 
@@ -951,7 +961,7 @@
         int mode = getMode();
         state.putInt(EXTRA_ACTION, mode);
 
-        final Message message = createMessage(selectedReplyFromAccount, mode);
+        final Message message = createMessage(selectedReplyFromAccount, mRefMessage, mode);
         if (mDraft != null) {
             message.id = mDraft.id;
             message.serverId = mDraft.serverId;
@@ -986,7 +996,8 @@
         return mode;
     }
 
-    private Message createMessage(ReplyFromAccount selectedReplyFromAccount, int mode) {
+    private Message createMessage(ReplyFromAccount selectedReplyFromAccount, Message refMessage,
+            int mode) {
         Message message = new Message();
         message.id = UIProvider.INVALID_MESSAGE_ID;
         message.serverId = null;
@@ -1011,8 +1022,18 @@
         message.alwaysShowImages = false;
         message.attachmentsJson = Attachment.toJSONArray(attachments);
         CharSequence quotedText = mQuotedTextView.getQuotedText();
-        message.quotedTextOffset = !TextUtils.isEmpty(quotedText) ? QuotedTextView
-                .getQuotedTextOffset(quotedText.toString()) : -1;
+        message.quotedTextOffset = -1; // Just a default value.
+        if (refMessage != null && !TextUtils.isEmpty(quotedText)) {
+            if (!TextUtils.isEmpty(refMessage.bodyHtml)) {
+                // We want the index to point to just the quoted text and not the
+                // "On December 25, 2014..." part of it.
+                message.quotedTextOffset =
+                        QuotedTextView.getQuotedTextOffset(quotedText.toString());
+            } else if (!TextUtils.isEmpty(refMessage.bodyText)) {
+                // We want to point to the entire quoted text.
+                message.quotedTextOffset = QuotedTextView.findQuotedTextIndex(quotedText);
+            }
+        }
         message.accountUri = null;
         final String email = selectedReplyFromAccount != null ? selectedReplyFromAccount.address
                 : mAccount != null ? mAccount.getEmailAddress() : null;
@@ -1329,16 +1350,6 @@
                 }
             }
         }
-
-        if (mRefMessage != null) {
-            // CC field only gets populated when doing REPLY_ALL.
-            // BCC never gets auto-populated, unless the user is editing
-            // a draft with one.
-            if (!TextUtils.isEmpty(mCc.getText()) && action == REPLY_ALL) {
-                mCcBccView.show(false, true, false);
-            }
-        }
-        updateHideOrShowCcBcc();
     }
 
     private void setFieldsFromRefMessage(int action) {
@@ -1371,14 +1382,17 @@
                 addAttachmentAndUpdateView(a);
             }
         }
-        int quotedTextIndex = message.appendRefMessageContent ?
-                message.quotedTextOffset : -1;
+        int quotedTextIndex = message.appendRefMessageContent ? message.quotedTextOffset : -1;
         // Set the body
         CharSequence quotedText = null;
         if (!TextUtils.isEmpty(message.bodyHtml)) {
             CharSequence htmlText = "";
             if (quotedTextIndex > -1) {
-                // Find the offset in the htmltext of the actual quoted text and strip it out.
+                // Find the offset in the html text of the actual quoted text and strip it out.
+                // Note that the actual quotedTextOffset in the message has not changed as
+                // this different offset is used only for display purposes. They point to different
+                // parts of the original message.  Please see the comments in QuoteTextView
+                // to see the differences.
                 quotedTextIndex = QuotedTextView.findQuotedTextIndex(message.bodyHtml);
                 if (quotedTextIndex > -1) {
                     htmlText = Utils.convertHtmlToPlainText(message.bodyHtml.substring(0,
@@ -1392,13 +1406,23 @@
             mBodyView.setText(htmlText);
         } else {
             final String body = message.bodyText;
-            final CharSequence bodyText = !TextUtils.isEmpty(body) ?
-                    (quotedTextIndex > -1 ?
-                            message.bodyText.substring(0, quotedTextIndex) : message.bodyText)
-                            : "";
-            if (quotedTextIndex > -1) {
-                quotedText = !TextUtils.isEmpty(body) ? message.bodyText.substring(quotedTextIndex)
-                        : null;
+            final CharSequence bodyText;
+            if (TextUtils.isEmpty(body)) {
+                bodyText = "";
+                quotedText = null;
+            } else {
+                if (quotedTextIndex > body.length()) {
+                    // Sanity check to guarantee that we will not over index the String.
+                    // If this happens there is a bigger problem. This should never happen hence
+                    // the wtf logging.
+                    quotedTextIndex = -1;
+                    LogUtils.wtf(LOG_TAG, "quotedTextIndex (%d) > body.length() (%d)",
+                            quotedTextIndex, body.length());
+                }
+                bodyText = quotedTextIndex > -1 ? body.substring(0, quotedTextIndex) : body;
+                if (quotedTextIndex > -1) {
+                    quotedText = body.substring(quotedTextIndex);
+                }
             }
             mBodyView.setText(bodyText);
         }
@@ -1754,16 +1778,6 @@
         }
     }
 
-    private void showCcBcc(Bundle state) {
-        if (state != null && state.containsKey(EXTRA_SHOW_CC)) {
-            boolean showCc = state.getBoolean(EXTRA_SHOW_CC);
-            boolean showBcc = state.getBoolean(EXTRA_SHOW_BCC);
-            if (showCc || showBcc) {
-                mCcBccView.show(false, showCc, showBcc);
-            }
-        }
-    }
-
     /**
      * Add attachment and update the compose area appropriately.
      */
@@ -2841,46 +2855,63 @@
         MessageModification.putToAddresses(values, message.getToAddresses());
         MessageModification.putCcAddresses(values, message.getCcAddresses());
         MessageModification.putBccAddresses(values, message.getBccAddresses());
-
         MessageModification.putCustomFromAddress(values, message.getFrom());
 
         MessageModification.putSubject(values, message.subject);
+
         // Make sure to remove only the composing spans from the Spannable before saving.
         final String htmlBody = Html.toHtml(removeComposingSpans(body));
-
-        boolean includeQuotedText = !TextUtils.isEmpty(quotedText);
-        StringBuilder fullBody = new StringBuilder(htmlBody);
-        if (includeQuotedText) {
-            // HTML gets converted to text for now
-            final String text = quotedText.toString();
-            if (QuotedTextView.containsQuotedText(text)) {
-                int pos = QuotedTextView.getQuotedTextOffset(text);
-                final int quoteStartPos = fullBody.length() + pos;
-                fullBody.append(text);
-                MessageModification.putQuoteStartPos(values, quoteStartPos);
-                MessageModification.putForward(values, composeMode == ComposeActivity.FORWARD);
-                MessageModification.putAppendRefMessageContent(values, true /* include quoted */);
-            } else {
-                LogUtils.w(LOG_TAG, "Couldn't find quoted text");
-                // This shouldn't happen, but just use what we have,
-                // and don't do server-side expansion
-                fullBody.append(text);
-            }
+        final String textBody = Utils.convertHtmlToPlainText(htmlBody);
+        // fullbody will contain the actual body plus the quoted text.
+        final String fullBody;
+        final String quotedString;
+        final boolean hasQuotedText = !TextUtils.isEmpty(quotedText);
+        if (hasQuotedText) {
+            // The quoted text is HTML at this point.
+            quotedString = quotedText.toString();
+            fullBody = htmlBody + quotedString;
+            MessageModification.putForward(values, composeMode == ComposeActivity.FORWARD);
+            MessageModification.putAppendRefMessageContent(values, true /* include quoted */);
+        } else {
+            fullBody = htmlBody;
+            quotedString = null;
         }
-        int draftType = getDraftType(composeMode);
-        MessageModification.putDraftType(values, draftType);
         if (refMessage != null) {
+            // The code below might need to be revisited. The quoted text position is different
+            // between text/html and text/plain parts and they should be stored seperately and
+            // the right version should be used in the UI. text/html should have preference
+            // if both exist.  Issues like this made me file b/14256940 to make sure that we
+            // properly handle the existing of both text/html and text/plain parts and to verify
+            // that we are not making some assumptions that break if there is no text/html part.
+            int quotedTextPos = -1;
             if (!TextUtils.isEmpty(refMessage.bodyHtml)) {
                 MessageModification.putBodyHtml(values, fullBody.toString());
+                if (hasQuotedText) {
+                    quotedTextPos = htmlBody.length() +
+                            QuotedTextView.getQuotedTextOffset(quotedString);
+                }
             }
             if (!TextUtils.isEmpty(refMessage.bodyText)) {
                 MessageModification.putBody(values,
                         Utils.convertHtmlToPlainText(fullBody.toString()));
+                if (hasQuotedText && (quotedTextPos == -1)) {
+                    quotedTextPos = textBody.length();
+                }
+            }
+            if (quotedTextPos != -1) {
+                // The quoted text pos is the text/html version first and the text/plan version
+                // if there is no text/html part. The reason for this is because preference
+                // is given to text/html in the compose window if it exists. In the future, we
+                // should calculate the index for both since the user could choose to compose
+                // explicitly in text/plain.
+                MessageModification.putQuoteStartPos(values, quotedTextPos);
             }
         } else {
             MessageModification.putBodyHtml(values, fullBody.toString());
             MessageModification.putBody(values, Utils.convertHtmlToPlainText(fullBody.toString()));
         }
+        int draftType = getDraftType(composeMode);
+        MessageModification.putDraftType(values, draftType);
         MessageModification.putAttachments(values, message.getAttachments());
         if (!TextUtils.isEmpty(refMessageId)) {
             MessageModification.putRefMessageId(values, refMessageId);
@@ -3021,17 +3052,10 @@
 
         setAccount(mReplyFromAccount.account);
 
-        if (mSendSaveTaskHandler == null) {
-            HandlerThread handlerThread = new HandlerThread("Send Message Task Thread");
-            handlerThread.start();
-
-            mSendSaveTaskHandler = new Handler(handlerThread.getLooper());
-        }
-
-        Message msg = createMessage(mReplyFromAccount, getMode());
+        Message msg = createMessage(mReplyFromAccount, mRefMessage, getMode());
         mRequestId = sendOrSaveInternal(this, mReplyFromAccount, msg, mRefMessage, body,
                 mQuotedTextView.getQuotedTextIfIncluded(), callback,
-                mSendSaveTaskHandler, save, mComposeMode, mDraftAccount, mExtraValues);
+                SEND_SAVE_TASK_HANDLER, save, mComposeMode, mDraftAccount, mExtraValues);
 
         // Don't display the toast if the user is just changing the orientation,
         // but we still need to save the draft to the cursor because this is how we restore
diff --git a/src/com/android/mail/compose/QuotedTextView.java b/src/com/android/mail/compose/QuotedTextView.java
index 2dd64d5..db35ae6 100644
--- a/src/com/android/mail/compose/QuotedTextView.java
+++ b/src/com/android/mail/compose/QuotedTextView.java
@@ -340,6 +340,13 @@
         return pos >= 0;
     }
 
+    /**
+     * Returns the index of the actual quoted text and NOT the meta information such as:
+     * "On April 4, 2013 Joe Smith <jsmith@example.com> wrote:" that is part of the original
+     * message when replying and including the original text.
+     * @param text HTML text that includes quoted text.
+     * @return The offset found.
+     */
     public static int getQuotedTextOffset(String text) {
         return text.indexOf(QuotedTextView.HEADER_SEPARATOR)
                 + QuotedTextView.HEADER_SEPARATOR_LENGTH;
diff --git a/src/com/android/mail/providers/Attachment.java b/src/com/android/mail/providers/Attachment.java
index 569d1ed..b8e86ed 100644
--- a/src/com/android/mail/providers/Attachment.java
+++ b/src/com/android/mail/providers/Attachment.java
@@ -233,7 +233,8 @@
     /**
      * Constructor for use when creating attachments in eml files.
      */
-    public Attachment(Context context, Part part, Uri emlFileUri, String messageId, String partId) {
+    public Attachment(Context context, Part part, Uri emlFileUri, String messageId, String cid,
+                      boolean inline) {
         try {
             // Transfer fields from mime format to provider format
             final String contentTypeHeader = MimeUtility.unfoldAndDecode(part.getContentType());
@@ -245,7 +246,7 @@
             }
 
             contentType = MimeType.inferMimeType(name, part.getMimeType());
-            uri = EmlAttachmentProvider.getAttachmentUri(emlFileUri, messageId, partId);
+            uri = EmlAttachmentProvider.getAttachmentUri(emlFileUri, messageId, cid);
             contentUri = uri;
             thumbnailUri = uri;
             previewIntentUri = null;
@@ -253,7 +254,8 @@
             providerData = null;
             supportsDownloadAgain = false;
             destination = AttachmentDestination.CACHE;
-            type = AttachmentType.STANDARD;
+            type = inline ? AttachmentType.INLINE_CURRENT_MESSAGE : AttachmentType.STANDARD;
+            partId = cid;
             flags = 0;
 
             // insert attachment into content provider so that we can open the file
@@ -300,6 +302,7 @@
         supportsDownloadAgain = values.getAsBoolean(AttachmentColumns.SUPPORTS_DOWNLOAD_AGAIN);
         type = values.getAsInteger(AttachmentColumns.TYPE);
         flags = values.getAsInteger(AttachmentColumns.FLAGS);
+        partId = values.getAsString(AttachmentColumns.CONTENT_ID);
     }
 
     /**
@@ -324,6 +327,7 @@
         values.put(AttachmentColumns.SUPPORTS_DOWNLOAD_AGAIN, supportsDownloadAgain);
         values.put(AttachmentColumns.TYPE, type);
         values.put(AttachmentColumns.FLAGS, flags);
+        values.put(AttachmentColumns.CONTENT_ID, partId);
 
         return values;
     }
diff --git a/src/com/android/mail/providers/EmlAttachmentProvider.java b/src/com/android/mail/providers/EmlAttachmentProvider.java
index 901fec3..f1c360b 100644
--- a/src/com/android/mail/providers/EmlAttachmentProvider.java
+++ b/src/com/android/mail/providers/EmlAttachmentProvider.java
@@ -19,6 +19,7 @@
 
 import android.app.DownloadManager;
 import android.content.ContentProvider;
+import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
@@ -29,6 +30,7 @@
 import android.os.Environment;
 import android.os.ParcelFileDescriptor;
 import android.os.SystemClock;
+import android.text.TextUtils;
 
 import com.android.ex.photo.provider.PhotoContract;
 import com.android.mail.R;
@@ -66,6 +68,7 @@
 
     private static final int ATTACHMENT_LIST = 0;
     private static final int ATTACHMENT = 1;
+    private static final int ATTACHMENT_BY_CID = 2;
 
     /**
      * The buffer size used to copy data from cache to sd card.
@@ -98,8 +101,9 @@
 
         if (!sUrisAddedToMatcher) {
             sUrisAddedToMatcher = true;
-            sUriMatcher.addURI(authority, "*/*", ATTACHMENT_LIST);
-            sUriMatcher.addURI(authority, "*/*/#", ATTACHMENT);
+            sUriMatcher.addURI(authority, "attachments/*/*", ATTACHMENT_LIST);
+            sUriMatcher.addURI(authority, "attachment/*/*/#", ATTACHMENT);
+            sUriMatcher.addURI(authority, "attachmentByCid/*/*/*", ATTACHMENT_BY_CID);
         }
 
         mDownloadManager =
@@ -116,9 +120,10 @@
         final int match = sUriMatcher.match(uri);
         // ignore other projections
         final MatrixCursor cursor = new MatrixCursor(UIProvider.ATTACHMENT_PROJECTION);
+        final ContentResolver cr = getContext().getContentResolver();
 
         switch (match) {
-            case ATTACHMENT_LIST:
+            case ATTACHMENT_LIST: {
                 final List<String> contentTypeQueryParameters =
                         uri.getQueryParameters(PhotoContract.ContentTypeParameters.CONTENT_TYPE);
                 uri = uri.buildUpon().clearQuery().build();
@@ -126,13 +131,35 @@
                 for (final Uri attachmentUri : attachmentUris) {
                     addRow(cursor, attachmentUri, contentTypeQueryParameters);
                 }
-                cursor.setNotificationUri(getContext().getContentResolver(), uri);
+                cursor.setNotificationUri(cr, uri);
                 break;
-            case ATTACHMENT:
+            }
+            case ATTACHMENT: {
                 addRow(cursor, mUriAttachmentMap.get(uri));
-                cursor.setNotificationUri(
-                        getContext().getContentResolver(), getListUriFromAttachmentUri(uri));
+                cursor.setNotificationUri(cr, getListUriFromAttachmentUri(uri));
                 break;
+            }
+            case ATTACHMENT_BY_CID: {
+                // form the attachment lists uri by clipping off the cid from the given uri
+                final Uri attachmentsListUri = getListUriFromAttachmentUri(uri);
+                final String cid = uri.getPathSegments().get(3);
+
+                // find all uris for the parent message
+                final List<Uri> attachmentUris = mUriListMap.get(attachmentsListUri);
+
+                if (attachmentUris != null) {
+                    // find the attachment that contains the given cid
+                    for (Uri attachmentsUri : attachmentUris) {
+                        final Attachment attachment = mUriAttachmentMap.get(attachmentsUri);
+                        if (TextUtils.equals(cid, attachment.partId)) {
+                            addRow(cursor, attachment);
+                            cursor.setNotificationUri(cr, attachmentsListUri);
+                            break;
+                        }
+                    }
+                }
+                break;
+            }
             default:
                 break;
         }
@@ -244,7 +271,8 @@
                 .add(attachment.providerData)                       // providerData
                 .add(attachment.supportsDownloadAgain() ? 1 : 0)    // supportsDownloadAgain
                 .add(attachment.type)                               // type
-                .add(attachment.flags);                             // flags
+                .add(attachment.flags)                              // flags
+                .add(attachment.partId);                            // partId (same as RFC822 cid)
     }
 
     /**
@@ -389,21 +417,38 @@
     }
 
     /**
-     * Returns an attachment list uri for an eml file at the given uri
-     * with the given message id.
+     * Returns an attachment list uri for the specific attachment uri passed.
      */
-    public static Uri getAttachmentsListUri(Uri emlFileUri, String messageId) {
-        return BASE_URI.buildUpon().appendPath(Integer.toString(emlFileUri.hashCode()))
-                .appendPath(messageId).build();
+    private static Uri getListUriFromAttachmentUri(Uri uri) {
+        final List<String> segments = uri.getPathSegments();
+        return BASE_URI.buildUpon()
+                .appendPath("attachments")
+                .appendPath(segments.get(1))
+                .appendPath(segments.get(2))
+                .build();
     }
 
     /**
-     * Returns an attachment list uri for the specific attachment uri passed.
+     * Returns an attachment list uri for an eml file at the given uri with the given message id.
      */
-    public static Uri getListUriFromAttachmentUri(Uri uri) {
-        final List<String> segments = uri.getPathSegments();
+    public static Uri getAttachmentsListUri(Uri emlFileUri, String messageId) {
         return BASE_URI.buildUpon()
-                .appendPath(segments.get(0)).appendPath(segments.get(1)).build();
+                .appendPath("attachments")
+                .appendPath(Integer.toString(emlFileUri.hashCode()))
+                .appendPath(messageId)
+                .build();
+    }
+
+    /**
+     * Returns an attachment uri for an eml file at the given uri with the given message id.
+     * The consumer of this uri must append a specific CID to it to complete the uri.
+     */
+    public static Uri getAttachmentByCidUri(Uri emlFileUri, String messageId) {
+        return BASE_URI.buildUpon()
+                .appendPath("attachmentByCid")
+                .appendPath(Integer.toString(emlFileUri.hashCode()))
+                .appendPath(messageId)
+                .build();
     }
 
     /**
@@ -411,8 +456,12 @@
      * the given message id and part id.
      */
     public static Uri getAttachmentUri(Uri emlFileUri, String messageId, String partId) {
-        return BASE_URI.buildUpon().appendPath(Integer.toString(emlFileUri.hashCode()))
-                .appendPath(messageId).appendPath(partId).build();
+        return BASE_URI.buildUpon()
+                .appendPath("attachment")
+                .appendPath(Integer.toString(emlFileUri.hashCode()))
+                .appendPath(messageId)
+                .appendPath(partId)
+                .build();
     }
 
     /**
@@ -441,7 +490,7 @@
      * Returns the root directory for the attachments for the specific uri.
      */
     private String getCacheFileDirectory(Uri uri) {
-        return getCacheDir() + "/" + Uri.encode(uri.getPathSegments().get(0));
+        return getCacheDir() + "/" + Uri.encode(uri.getPathSegments().get(1));
     }
 
     /**
diff --git a/src/com/android/mail/providers/Message.java b/src/com/android/mail/providers/Message.java
index 2bd9d02..7fd3b41 100644
--- a/src/com/android/mail/providers/Message.java
+++ b/src/com/android/mail/providers/Message.java
@@ -31,9 +31,10 @@
 import android.text.util.Rfc822Token;
 import android.text.util.Rfc822Tokenizer;
 
-import com.android.emailcommon.mail.Address;
+import com.android.emailcommon.internet.MimeHeader;
 import com.android.emailcommon.internet.MimeMessage;
 import com.android.emailcommon.internet.MimeUtility;
+import com.android.emailcommon.mail.Address;
 import com.android.emailcommon.mail.MessagingException;
 import com.android.emailcommon.mail.Part;
 import com.android.emailcommon.utility.ConversionUtilities;
@@ -60,6 +61,9 @@
     private static Pattern INLINE_IMAGE_PATTERN = Pattern.compile("<img\\s+[^>]*src=",
             Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
 
+    // regex that matches content id surrounded by "<>" optionally.
+    private static final Pattern REMOVE_OPTIONAL_BRACKETS = Pattern.compile("^<?([^>]+)>?$");
+
     /**
      * @see BaseColumns#_ID
      */
@@ -141,6 +145,10 @@
      */
     public Uri attachmentListUri;
     /**
+     * @see UIProvider.MessageColumns#ATTACHMENT_BY_CID_URI
+     */
+    public Uri attachmentByCidUri;
+    /**
      * @see UIProvider.MessageColumns#MESSAGE_FLAGS
      */
     public long messageFlags;
@@ -379,6 +387,10 @@
                     .getString(UIProvider.MESSAGE_ATTACHMENT_LIST_URI_COLUMN);
             attachmentListUri = hasAttachments && !TextUtils.isEmpty(attachmentsUri) ? Uri
                     .parse(attachmentsUri) : null;
+            final String attachmentsByCidUri = cursor
+                    .getString(UIProvider.MESSAGE_ATTACHMENT_BY_CID_URI_COLUMN);
+            attachmentByCidUri = hasAttachments && !TextUtils.isEmpty(attachmentsByCidUri) ?
+                    Uri.parse(attachmentsByCidUri) : null;
             messageFlags = cursor.getLong(UIProvider.MESSAGE_FLAGS_COLUMN);
             alwaysShowImages = cursor.getInt(UIProvider.MESSAGE_ALWAYS_SHOW_IMAGES_COLUMN) != 0;
             read = cursor.getInt(UIProvider.MESSAGE_READ_COLUMN) != 0;
@@ -442,8 +454,7 @@
         ArrayList<Part> attachments = new ArrayList<Part>();
         MimeUtility.collectParts(mimeMessage, viewables, attachments);
 
-        ConversionUtilities.BodyFieldData data =
-                ConversionUtilities.parseBodyFields(viewables);
+        ConversionUtilities.BodyFieldData data = ConversionUtilities.parseBodyFields(viewables);
 
         snippet = data.snippet;
         bodyText = data.textContent;
@@ -452,17 +463,31 @@
         // populate mAttachments
         mAttachments = Lists.newArrayList();
 
-        int partId = 0;
         final String messageId = mimeMessage.getMessageId();
+
+        int partId = 0;
         for (final Part attachmentPart : attachments) {
             mAttachments.add(new Attachment(context, attachmentPart,
-                    emlFileUri, messageId, Integer.toString(partId++)));
+                    emlFileUri, messageId, Integer.toString(partId++), false /* inline */));
+        }
+
+        // instantiating an Attachment for each viewable will cause it to be registered within the
+        // EmlAttachmentProvider for later access when displaying inline attachments
+        for (final Part viewablePart : viewables) {
+            final String[] cids = viewablePart.getHeader(MimeHeader.HEADER_CONTENT_ID);
+            if (cids != null && cids.length == 1) {
+                final String cid = REMOVE_OPTIONAL_BRACKETS.matcher(cids[0]).replaceAll("$1");
+                mAttachments.add(new Attachment(context, viewablePart, emlFileUri, messageId, cid,
+                        true /* inline */));
+            }
         }
 
         hasAttachments = !mAttachments.isEmpty();
 
-        attachmentListUri =  hasAttachments ?
+        attachmentListUri = hasAttachments ?
                 EmlAttachmentProvider.getAttachmentsListUri(emlFileUri, messageId) : null;
+
+        attachmentByCidUri = EmlAttachmentProvider.getAttachmentByCidUri(emlFileUri, messageId);
     }
 
     public boolean isFlaggedReplied() {
diff --git a/src/com/android/mail/providers/ReplyFromAccount.java b/src/com/android/mail/providers/ReplyFromAccount.java
index 0916208..ad5054d 100644
--- a/src/com/android/mail/providers/ReplyFromAccount.java
+++ b/src/com/android/mail/providers/ReplyFromAccount.java
@@ -109,6 +109,9 @@
      */
     public static boolean matchesAccountOrCustomFrom(Account account, String possibleCustomFrom,
             List<ReplyFromAccount> replyFromAccounts) {
+        if (TextUtils.isEmpty(possibleCustomFrom)) {
+            return false;
+        }
         Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(possibleCustomFrom);
         if (tokens != null && tokens.length > 0) {
             String parsedFromAddress = Utils.normalizeEmailAddress(tokens[0].getAddress());
diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java
index 9215fba..154166d 100644
--- a/src/com/android/mail/providers/UIProvider.java
+++ b/src/com/android/mail/providers/UIProvider.java
@@ -1545,6 +1545,7 @@
         MessageColumns.APPEND_REF_MESSAGE_CONTENT,
         MessageColumns.HAS_ATTACHMENTS,
         MessageColumns.ATTACHMENT_LIST_URI,
+        MessageColumns.ATTACHMENT_BY_CID_URI,
         MessageColumns.MESSAGE_FLAGS,
         MessageColumns.ALWAYS_SHOW_IMAGES,
         MessageColumns.READ,
@@ -1592,23 +1593,24 @@
     public static final int MESSAGE_APPEND_REF_MESSAGE_CONTENT_COLUMN = 17;
     public static final int MESSAGE_HAS_ATTACHMENTS_COLUMN = 18;
     public static final int MESSAGE_ATTACHMENT_LIST_URI_COLUMN = 19;
-    public static final int MESSAGE_FLAGS_COLUMN = 20;
-    public static final int MESSAGE_ALWAYS_SHOW_IMAGES_COLUMN = 21;
-    public static final int MESSAGE_READ_COLUMN = 22;
-    public static final int MESSAGE_SEEN_COLUMN = 23;
-    public static final int MESSAGE_STARRED_COLUMN = 24;
-    public static final int QUOTED_TEXT_OFFSET_COLUMN = 25;
-    public static final int MESSAGE_ATTACHMENTS_COLUMN = 26;
-    public static final int MESSAGE_CUSTOM_FROM_ADDRESS_COLUMN = 27;
-    public static final int MESSAGE_ACCOUNT_URI_COLUMN = 28;
-    public static final int MESSAGE_EVENT_INTENT_COLUMN = 29;
-    public static final int MESSAGE_SPAM_WARNING_STRING_ID_COLUMN = 30;
-    public static final int MESSAGE_SPAM_WARNING_LEVEL_COLUMN = 31;
-    public static final int MESSAGE_SPAM_WARNING_LINK_TYPE_COLUMN = 32;
-    public static final int MESSAGE_VIA_DOMAIN_COLUMN = 33;
-    public static final int MESSAGE_IS_SENDING_COLUMN = 34;
-    public static final int MESSAGE_CLIPPED_COLUMN = 35;
-    public static final int MESSAGE_PERMALINK_COLUMN = 36;
+    public static final int MESSAGE_ATTACHMENT_BY_CID_URI_COLUMN = 20;
+    public static final int MESSAGE_FLAGS_COLUMN = 21;
+    public static final int MESSAGE_ALWAYS_SHOW_IMAGES_COLUMN = 22;
+    public static final int MESSAGE_READ_COLUMN = 23;
+    public static final int MESSAGE_SEEN_COLUMN = 24;
+    public static final int MESSAGE_STARRED_COLUMN = 25;
+    public static final int QUOTED_TEXT_OFFSET_COLUMN = 26;
+    public static final int MESSAGE_ATTACHMENTS_COLUMN = 27;
+    public static final int MESSAGE_CUSTOM_FROM_ADDRESS_COLUMN = 28;
+    public static final int MESSAGE_ACCOUNT_URI_COLUMN = 29;
+    public static final int MESSAGE_EVENT_INTENT_COLUMN = 30;
+    public static final int MESSAGE_SPAM_WARNING_STRING_ID_COLUMN = 31;
+    public static final int MESSAGE_SPAM_WARNING_LEVEL_COLUMN = 32;
+    public static final int MESSAGE_SPAM_WARNING_LINK_TYPE_COLUMN = 33;
+    public static final int MESSAGE_VIA_DOMAIN_COLUMN = 34;
+    public static final int MESSAGE_IS_SENDING_COLUMN = 35;
+    public static final int MESSAGE_CLIPPED_COLUMN = 36;
+    public static final int MESSAGE_PERMALINK_COLUMN = 37;
 
     public static final class CursorStatus {
         // The cursor is actively loading more data
@@ -1749,6 +1751,11 @@
          */
         public static final String ATTACHMENT_LIST_URI = "attachmentListUri";
         /**
+         * This string column contains the content provider URI for the details of an attachment
+         * associated with this message. (CID to be appended at the time the URI is used)
+         */
+        public static final String ATTACHMENT_BY_CID_URI = "attachmentByCidUri";
+        /**
          * This long column is a bit field of flags defined in {@link MessageFlags}.
          */
         public static final String MESSAGE_FLAGS = "messageFlags";
@@ -1887,7 +1894,8 @@
         AttachmentColumns.PROVIDER_DATA,
         AttachmentColumns.SUPPORTS_DOWNLOAD_AGAIN,
         AttachmentColumns.TYPE,
-        AttachmentColumns.FLAGS
+        AttachmentColumns.FLAGS,
+        AttachmentColumns.CONTENT_ID
     };
     public static final int ATTACHMENT_NAME_COLUMN = 0;
     public static final int ATTACHMENT_SIZE_COLUMN = 1;
@@ -1902,6 +1910,7 @@
     public static final int ATTACHMENT_SUPPORTS_DOWNLOAD_AGAIN_COLUMN = 10;
     public static final int ATTACHMENT_TYPE_COLUMN = 11;
     public static final int ATTACHMENT_FLAGS_COLUMN = 12;
+    public static final int ATTACHMENT_CONTENT_ID_COLUMN = 13;
 
     /** Separates attachment info parts in strings in the database. */
     public static final String ATTACHMENT_INFO_SEPARATOR = "\n"; // use to join
@@ -2082,6 +2091,12 @@
          */
         public static final String FLAGS = "flags";
 
+        /**
+         * This column holds the RFC 2392 content id of the email part for this attachment, if
+         * possible; otherwise it holds an identifier unique to the parent message.
+         */
+        public static final String CONTENT_ID = "contentId";
+
         private AttachmentColumns() {}
     }
 
diff --git a/src/com/android/mail/ui/AbstractConversationWebViewClient.java b/src/com/android/mail/ui/AbstractConversationWebViewClient.java
index 8c1bd95..2a52d36 100644
--- a/src/com/android/mail/ui/AbstractConversationWebViewClient.java
+++ b/src/com/android/mail/ui/AbstractConversationWebViewClient.java
@@ -19,22 +19,31 @@
 
 import android.app.Activity;
 import android.content.ActivityNotFoundException;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.database.Cursor;
 import android.net.Uri;
+import android.os.ParcelFileDescriptor;
 import android.provider.Browser;
+import android.webkit.WebResourceResponse;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
+import com.android.mail.browse.ConversationMessage;
 import com.android.mail.providers.Account;
+import com.android.mail.providers.Attachment;
 import com.android.mail.providers.UIProvider;
 import com.android.mail.utils.LogTag;
 import com.android.mail.utils.LogUtils;
 import com.android.mail.utils.Utils;
 
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
 import java.util.List;
 
 /**
@@ -64,6 +73,66 @@
         return mActivity;
     }
 
+    /**
+     * Translates Content ID urls (CID urls) into provider queries for the associated attachment.
+     * With the attachment in hand, it's trivial to open a stream to the file containing the content
+     * of the attachment.
+     *
+     * @param uri the raw URI from the HTML document in the Webview
+     * @param message the message containing the HTML that is being rendered
+     * @return a response if a stream to the attachment file can be created from the CID URL;
+     *      <tt>null</tt> if it cannot for any reason
+     */
+    protected final WebResourceResponse loadCIDUri(Uri uri, ConversationMessage message) {
+        // if the url is not a CID url, we do nothing
+        if (!"cid".equals(uri.getScheme())) {
+            return null;
+        }
+
+        // cid urls can be translated to content urls
+        final String cid = uri.getSchemeSpecificPart();
+        if (cid == null) {
+            return null;
+        }
+
+        if (message.attachmentByCidUri == null) {
+            return null;
+        }
+
+        final Uri queryUri = Uri.withAppendedPath(message.attachmentByCidUri, cid);
+        if (queryUri == null) {
+            return null;
+        }
+
+        // query for the attachment using its cid
+        final ContentResolver cr = getActivity().getContentResolver();
+        final Cursor c = cr.query(queryUri, UIProvider.ATTACHMENT_PROJECTION, null, null, null);
+        if (c == null) {
+            return null;
+        }
+
+        // create the attachment from the cursor, if one was found
+        final Attachment target;
+        try {
+            if (!c.moveToFirst()) {
+                return null;
+            }
+            target = new Attachment(c);
+        } finally {
+            c.close();
+        }
+
+        // try to return a response that includes a stream to the attachment data
+        try {
+            final ParcelFileDescriptor fd = cr.openFileDescriptor(target.contentUri, "r");
+            final InputStream stream = new FileInputStream(fd.getFileDescriptor());
+            return new WebResourceResponse(target.getContentType(), null, stream);
+        } catch (FileNotFoundException e) {
+            // if no attachment file was found return null to let webview handle it
+            return null;
+        }
+    }
+
     @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url) {
         if (mActivity == null) {
diff --git a/src/com/android/mail/ui/ConversationListFragment.java b/src/com/android/mail/ui/ConversationListFragment.java
index 8766c56..2c9bf36 100644
--- a/src/com/android/mail/ui/ConversationListFragment.java
+++ b/src/com/android/mail/ui/ConversationListFragment.java
@@ -28,7 +28,6 @@
 import android.os.Handler;
 import android.os.Parcelable;
 import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
-import android.text.format.DateUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -98,8 +97,6 @@
      */
     private static int TIMESTAMP_UPDATE_INTERVAL = 0;
 
-    private static long NO_NEW_MESSAGE_DURATION = 1 * DateUtils.SECOND_IN_MILLIS;
-
     private ControllableActivity mActivity;
 
     // Control state.
@@ -153,14 +150,12 @@
     private int mConversationCursorHash;
     // The number of items in the last known ConversationCursor
     private int mConversationCursorLastCount;
-    // State variable to keep track if we just loaded a new list
+    // State variable to keep track if we just loaded a new list, used for analytics only
     // True if NO DATA has returned, false if we either partially or fully loaded the data
     private boolean mInitialCursorLoading;
 
     /** Duration, in milliseconds, of the CAB mode (peek icon) animation. */
     private static long sSelectionModeAnimationDuration = -1;
-    /** The time at which we last exited CAB mode. */
-    private long mSelectionModeExitedTimestamp = -1;
 
     // Let's ensure that we are only showing one out of the three views at once
     private void showListView() {
@@ -186,7 +181,7 @@
     private final Runnable mLoadingViewRunnable = new FragmentRunnable("LoadingRunnable", this) {
         @Override
         public void go() {
-            if (mInitialCursorLoading) {
+            if (!isCursorReadyToShow()) {
                 mCanTakeDownLoadingView = false;
                 showLoadingView();
                 mHandler.removeCallbacks(mHideLoadingRunnable);
@@ -200,7 +195,7 @@
         @Override
         public void go() {
             mCanTakeDownLoadingView = true;
-            if (!mInitialCursorLoading) {
+            if (isCursorReadyToShow()) {
                 hideLoadingViewAndShowContents();
             }
         }
@@ -655,14 +650,14 @@
     public void onResume() {
         super.onResume();
 
-        final ConversationCursor conversationCursor = getConversationListCursor();
-        if (!isCursorReadyToShow(conversationCursor)) {
+        if (!isCursorReadyToShow()) {
+            // If the cursor got reset, let's reset the analytics state variable and show the list
+            // view since we are waiting for load again
             mInitialCursorLoading = true;
-
-            // Let's show the list view when we resume and are waiting for load again
             showListView();
         }
 
+        final ConversationCursor conversationCursor = getConversationListCursor();
         if (conversationCursor != null) {
             conversationCursor.handleNotificationActions();
 
@@ -881,7 +876,7 @@
     }
 
     public void onFolderUpdated(Folder folder) {
-        if (mInitialCursorLoading) {
+        if (!isCursorReadyToShow()) {
             // Wait a bit before showing either the empty or loading view. If the messages are
             // actually local, it's disorienting to see this appear on every folder transition.
             // If they aren't, then it will likely take more than 200 milliseconds to load, and
@@ -907,8 +902,8 @@
             mErrorListener.onError(mFolder, false);
         }
 
-        // Notify of changes to the Folder.
-        onFolderStatusUpdated();
+        // Update the sync status bar with sync results if needed
+        checkSyncStatus();
 
         // Blow away conversation items cache.
         ConversationItemViewModel.onFolderUpdated(mFolder);
@@ -921,7 +916,7 @@
         // Also change the cursor here.
         onCursorUpdated();
 
-        if (!mInitialCursorLoading && mCanTakeDownLoadingView) {
+        if (isCursorReadyToShow() && mCanTakeDownLoadingView) {
             hideLoadingViewAndShowContents();
         }
     }
@@ -934,33 +929,13 @@
             showListView();
         }
         final boolean showFooter = mFooterView.updateStatus(cursor);
-        // Update the folder status, in case the cursor could affect it.
-        onFolderStatusUpdated();
+        // Update the sync status bar with sync results if needed
+        checkSyncStatus();
         mListAdapter.setFooterVisibility(showFooter);
         mLoadingViewPending = false;
         mHandler.removeCallbacks(mLoadingViewRunnable);
     }
 
-    private void onFolderStatusUpdated() {
-        // Update the sync status bar with sync results if needed
-        checkSyncStatus();
-
-        final ConversationCursor cursor = getConversationListCursor();
-        Bundle extras = cursor != null ? cursor.getExtras() : Bundle.EMPTY;
-        int errorStatus = extras.containsKey(UIProvider.CursorExtraKeys.EXTRA_ERROR) ?
-                extras.getInt(UIProvider.CursorExtraKeys.EXTRA_ERROR)
-                : UIProvider.LastSyncResult.SUCCESS;
-        int cursorStatus = extras.getInt(UIProvider.CursorExtraKeys.EXTRA_STATUS);
-        // We want to update the UI with this information if either we are loaded or complete, or
-        // we have a folder with a non-0 count.
-        final int folderCount = mFolder != null ? mFolder.totalCount : 0;
-        if (errorStatus == UIProvider.LastSyncResult.SUCCESS
-                && (cursorStatus == UIProvider.CursorStatus.LOADED
-                || cursorStatus == UIProvider.CursorStatus.COMPLETE) || folderCount > 0) {
-            updateSearchResultHeader(folderCount);
-        }
-    }
-
     private void setSwipeAction() {
         int swipeSetting = Settings.getSwipeSetting(mAccount.settings);
         if (swipeSetting == Swipe.DISABLED
@@ -1037,10 +1012,13 @@
         mConversationCursorHash = newCursorHash;
 
         updateAnalyticsData(newCursor);
-
-        if (newCursor != null && newCursor.getCount() > 0) {
-            newCursor.markContentsSeen();
-            restoreLastScrolledPosition();
+        if (newCursor != null) {
+            final int newCursorCount = newCursor.getCount();
+            updateSearchResultHeader(newCursorCount);
+            if (newCursorCount > 0) {
+                newCursor.markContentsSeen();
+                restoreLastScrolledPosition();
+            }
         }
 
         // If a current conversation is available, and none is selected in the list, then ask
@@ -1101,7 +1079,6 @@
 
         @Override
         public void onSetEmpty() {
-            mSelectionModeExitedTimestamp = System.currentTimeMillis();
             mSwipeRefreshWidget.setEnabled(true);
         }
 
@@ -1169,7 +1146,7 @@
                 // completed loading.
                 // Use this point to log the appropriate timing information that depends on when
                 // the conversation list view finishes loading
-                if (isCursorReadyToShow(newCursor)) {
+                if (isCursorReadyToShow()) {
                     if (newCursor.getCount() == 0) {
                         Analytics.getInstance().sendEvent("empty_state", "post_label_change",
                                 mFolder.getTypeDescription(), 0);
@@ -1203,16 +1180,15 @@
     }
 
     /**
-     * Helper function to determine if the given cursor is ready to populate the UI
-     * @param cursor
+     * Helper function to determine if the current cursor is ready to populate the UI
      * @return
      */
-    private boolean isCursorReadyToShow(ConversationCursor cursor) {
+    private boolean isCursorReadyToShow() {
+        ConversationCursor cursor = getConversationListCursor();
         if (cursor == null) {
             return false;
         }
-        final int status = cursor.getExtras().getInt(
-                UIProvider.CursorExtraKeys.EXTRA_STATUS);
+        final int status = cursor.getExtras().getInt(UIProvider.CursorExtraKeys.EXTRA_STATUS);
         return (cursor.getCount() > 0 || !UIProvider.CursorStatus.isWaitingForResults(status));
     }
 }
diff --git a/src/com/android/mail/ui/ConversationViewFragment.java b/src/com/android/mail/ui/ConversationViewFragment.java
index 0972dd1..262d4fe 100644
--- a/src/com/android/mail/ui/ConversationViewFragment.java
+++ b/src/com/android/mail/ui/ConversationViewFragment.java
@@ -403,7 +403,7 @@
         final WebSettings settings = mWebView.getSettings();
 
         final ScrollIndicatorsView scrollIndicators =
-            (ScrollIndicatorsView) rootView.findViewById(R.id.scroll_indicators);
+                (ScrollIndicatorsView) rootView.findViewById(R.id.scroll_indicators);
         scrollIndicators.setSourceView(mWebView);
 
         settings.setJavaScriptEnabled(true);
@@ -1041,6 +1041,11 @@
         return (domId == null) ? null : mMessageTransforms.get(domId);
     }
 
+    @Override
+    public boolean isSecure() {
+        return false;
+    }
+
     // END message header callbacks
 
     @Override
diff --git a/src/com/android/mail/ui/FolderListFragment.java b/src/com/android/mail/ui/FolderListFragment.java
index 24678be..ac052be 100644
--- a/src/com/android/mail/ui/FolderListFragment.java
+++ b/src/com/android/mail/ui/FolderListFragment.java
@@ -347,6 +347,7 @@
         };
         mFolderChanger = mActivity.getFolderSelector();
         if (accountController != null) {
+            mAccountController = accountController;
             // Current account and its observer.
             setSelectedAccount(mAccountObserver.initialize(accountController));
             // List of all accounts and its observer.
@@ -363,7 +364,6 @@
                 }
             };
             mAllAccountsObserver.initialize(accountController);
-            mAccountController = accountController;
 
             // Observer for when the drawer is closed
             mDrawerObserver = new DrawerClosedObserver() {
@@ -870,7 +870,7 @@
         private void rebuildFolderList() {
             final boolean oldInboxPresent = mInboxPresent;
             mItemList = recalculateListFolders();
-            if (mInboxPresent && !oldInboxPresent) {
+            if (mAccountController != null && mInboxPresent && !oldInboxPresent) {
                 // We didn't have an inbox folder before, but now we do. This can occur when
                 // setting up a new account. We automatically create the "starred" virtual
                 // virtual folder, but we won't create the inbox until it gets synced.
diff --git a/src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java b/src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java
index bd21c79..49fd81a 100644
--- a/src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java
+++ b/src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java
@@ -38,6 +38,7 @@
 
     private Context mContext;
 
+    @VisibleForTesting
     public HierarchicalFolderSelectorAdapter(Context context, Cursor folders,
             Set<String> initiallySelected, int layout, String header) {
         super(context, folders, initiallySelected, layout, header);
diff --git a/src/com/android/mail/ui/MailActionBarView.java b/src/com/android/mail/ui/MailActionBarView.java
index 7703bd1..64a1238 100644
--- a/src/com/android/mail/ui/MailActionBarView.java
+++ b/src/com/android/mail/ui/MailActionBarView.java
@@ -666,7 +666,7 @@
         // what is in the text field
         String queryText = mSearchWidget.getQuery().toString();
         // What the suggested query is
-        String query = c.getString(c.getColumnIndex(SearchManager.SUGGEST_COLUMN_QUERY));
+        String query = c.getString(c.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1));
         // If the text the user typed in is a prefix of what is in the search
         // widget suggestion query, just take the search widget suggestion
         // query. Otherwise, it is a suffix and we want to remove matching
diff --git a/src/com/android/mail/ui/OnePaneController.java b/src/com/android/mail/ui/OnePaneController.java
index 0801bee..2d16f1b 100644
--- a/src/com/android/mail/ui/OnePaneController.java
+++ b/src/com/android/mail/ui/OnePaneController.java
@@ -25,6 +25,7 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.v4.widget.DrawerLayout;
+import android.view.Gravity;
 import android.widget.ListView;
 
 import com.android.mail.ConversationListContext;
@@ -129,6 +130,8 @@
     public boolean onCreate(Bundle savedInstanceState) {
         mActivity.setContentView(R.layout.one_pane_activity);
         mDrawerContainer = (DrawerLayout) mActivity.findViewById(R.id.drawer_container);
+        mDrawerContainer.setDrawerTitle(Gravity.START,
+                mActivity.getActivityContext().getString(R.string.drawer_title));
         final String drawerPulloutTag = mActivity.getString(R.string.drawer_pullout_tag);
         mDrawerPullout = mDrawerContainer.findViewWithTag(drawerPulloutTag);
         mDrawerPullout.setBackgroundResource(R.color.list_background_color);
diff --git a/src/com/android/mail/ui/ScrollNotifyingListView.java b/src/com/android/mail/ui/ScrollNotifyingListView.java
index 467e498..d4e65d1 100644
--- a/src/com/android/mail/ui/ScrollNotifyingListView.java
+++ b/src/com/android/mail/ui/ScrollNotifyingListView.java
@@ -91,7 +91,7 @@
         @SuppressWarnings("unused")
         public void onScrollChanged(int l, int t, int oldl, int oldt) {
             for (ScrollListener sl : mObservers) {
-                sl.onNotifierScroll(l, t);
+                sl.onNotifierScroll(t);
             }
         }
 
diff --git a/src/com/android/mail/ui/SecureConversationViewController.java b/src/com/android/mail/ui/SecureConversationViewController.java
index 180c935..1fed820 100644
--- a/src/com/android/mail/ui/SecureConversationViewController.java
+++ b/src/com/android/mail/ui/SecureConversationViewController.java
@@ -99,7 +99,7 @@
         final int color = rootView.getResources().getColor(
                 R.color.message_header_background_color);
         mMessageHeaderView.setBackgroundColor(color);
-        mSnapHeaderView.setBackgroundColor(color);
+        mSnapHeaderView.findViewById(R.id.upper_header).setBackgroundColor(color);
         mMessageFooterView.setBackgroundColor(color);
 
         ((BorderView) rootView.findViewById(R.id.top_border)).disableCardBottomBorder();
@@ -177,7 +177,7 @@
     }
 
     @Override
-    public void onNotifierScroll(final int x, final int y) {
+    public void onNotifierScroll(final int y) {
         // We need to decide whether or not to display the snap header.
         // Get the location of the moveable message header inside the scroll view.
         Rect rect = new Rect();
@@ -293,6 +293,11 @@
     }
 
     @Override
+    public boolean isSecure() {
+        return true;
+    }
+
+    @Override
     public FragmentManager getFragmentManager() {
         return mCallbacks.getFragment().getFragmentManager();
     }
diff --git a/src/com/android/mail/ui/SecureConversationViewFragment.java b/src/com/android/mail/ui/SecureConversationViewFragment.java
index d96ff67..b9682b6 100644
--- a/src/com/android/mail/ui/SecureConversationViewFragment.java
+++ b/src/com/android/mail/ui/SecureConversationViewFragment.java
@@ -24,6 +24,7 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.webkit.WebResourceResponse;
 import android.webkit.WebView;
 
 import com.android.emailcommon.mail.Address;
@@ -57,6 +58,19 @@
         }
 
         @Override
+        public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
+            // try to load the url assuming it is a cid url
+            final Uri uri = Uri.parse(url);
+            final WebResourceResponse response = loadCIDUri(uri, mViewController.getMessage());
+            if (response != null) {
+                return response;
+            }
+
+            // otherwise, attempt the default handling
+            return super.shouldInterceptRequest(view, url);
+        }
+
+        @Override
         public void onPageFinished(WebView view, String url) {
             // Ignore unsafe calls made after a fragment is detached from an activity.
             // This method needs to, for example, get at the loader manager, which needs
diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java
index 18ad970..ef4dfa3 100644
--- a/src/com/android/mail/ui/TwoPaneController.java
+++ b/src/com/android/mail/ui/TwoPaneController.java
@@ -121,6 +121,8 @@
     public boolean onCreate(Bundle savedState) {
         mActivity.setContentView(R.layout.two_pane_activity);
         mDrawerContainer = (DrawerLayout) mActivity.findViewById(R.id.drawer_container);
+        mDrawerContainer.setDrawerTitle(Gravity.START,
+                mActivity.getActivityContext().getString(R.string.drawer_title));
         mDrawerPullout = mDrawerContainer.findViewById(R.id.content_pane);
         mLayout = (TwoPaneLayout) mActivity.findViewById(R.id.two_pane_activity);
         if (mLayout == null) {
diff --git a/src/com/android/mail/utils/Utils.java b/src/com/android/mail/utils/Utils.java
index ae9f3ea..6ca889c 100644
--- a/src/com/android/mail/utils/Utils.java
+++ b/src/com/android/mail/utils/Utils.java
@@ -155,7 +155,8 @@
         if (isRunningKitkatOrLater()) {
             final ActivityManager am = (ActivityManager) context.getSystemService(
                     Context.ACTIVITY_SERVICE);
-            return am.isLowRamDevice();
+            // This will be null when running unit tests
+            return am != null && am.isLowRamDevice();
         } else {
             return false;
         }
diff --git a/src/com/android/mail/widget/WidgetConversationListItemViewBuilder.java b/src/com/android/mail/widget/WidgetConversationListItemViewBuilder.java
index 29cd006..a2efbe7 100644
--- a/src/com/android/mail/widget/WidgetConversationListItemViewBuilder.java
+++ b/src/com/android/mail/widget/WidgetConversationListItemViewBuilder.java
@@ -17,16 +17,12 @@
 package com.android.mail.widget;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
 import android.graphics.Typeface;
 import android.support.v4.text.BidiFormatter;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
-import android.text.style.AbsoluteSizeSpan;
-import android.text.style.ForegroundColorSpan;
 import android.text.style.StyleSpan;
 import android.view.View;
 import android.widget.RemoteViews;
@@ -38,17 +34,6 @@
 import com.android.mail.utils.FolderUri;
 
 public class WidgetConversationListItemViewBuilder {
-    // Static font sizes
-    private static int DATE_FONT_SIZE;
-    private static int SUBJECT_FONT_SIZE;
-
-    // Static colors
-    private static int SUBJECT_TEXT_COLOR_READ;
-    private static int SUBJECT_TEXT_COLOR_UNREAD;
-    private static int DATE_TEXT_COLOR;
-
-    // Static bitmap
-    private static Bitmap ATTACHMENT;
 
     private final Context mContext;
 
@@ -117,33 +102,6 @@
      */
     public WidgetConversationListItemViewBuilder(Context context) {
         mContext = context;
-        Resources res = context.getResources();
-
-        // Initialize font sizes
-        DATE_FONT_SIZE = res.getDimensionPixelSize(R.dimen.widget_date_font_size);
-        SUBJECT_FONT_SIZE = res.getDimensionPixelSize(R.dimen.widget_subject_font_size);
-
-        // Initialize colors
-        SUBJECT_TEXT_COLOR_READ = res.getColor(R.color.subject_text_color_read);
-        SUBJECT_TEXT_COLOR_UNREAD = res.getColor(R.color.subject_text_color_unread);
-        DATE_TEXT_COLOR = res.getColor(R.color.date_text_color);
-
-        // Initialize Bitmap
-        ATTACHMENT = BitmapFactory.decodeResource(res, R.drawable.ic_attachment_holo_light);
-    }
-
-    /*
-     * Add size, color and style to a given text
-     */
-    private static CharSequence addStyle(CharSequence text, int size, int color) {
-        SpannableStringBuilder builder = new SpannableStringBuilder(text);
-        builder.setSpan(
-                new AbsoluteSizeSpan(size), 0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-        if (color != 0) {
-            builder.setSpan(new ForegroundColorSpan(color), 0, text.length(),
-                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-        }
-        return builder;
     }
 
     /*
@@ -157,11 +115,7 @@
         final String snippet = conversation.getSnippet();
         final boolean hasAttachments = conversation.hasAttachments;
 
-        // Add style to date
-        final CharSequence styledDate = addStyle(date, DATE_FONT_SIZE, DATE_TEXT_COLOR);
-
         // Add style to subject
-        final int subjectColor = isUnread ? SUBJECT_TEXT_COLOR_UNREAD : SUBJECT_TEXT_COLOR_READ;
         final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
         final String filteredSubject =
                 TextUtils.isEmpty(subject) ? "" : bidiFormatter.unicodeWrap(subject);
@@ -173,28 +127,15 @@
             subjectAndSnippet.setSpan(new StyleSpan(Typeface.BOLD), 0, filteredSubject.length(),
                     Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
         }
-        subjectAndSnippet.setSpan(new ForegroundColorSpan(subjectColor), 0, subjectAndSnippet
-                .length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-        final CharSequence styledSubject = addStyle(subjectAndSnippet, SUBJECT_FONT_SIZE, 0);
-
-        // Paper clip for attachment
-        Bitmap paperclipBitmap = null;
-        if (hasAttachments) {
-            paperclipBitmap = ATTACHMENT;
-        }
 
         // Inflate and fill out the remote view
         final RemoteViews remoteViews = new RemoteViews(
                 mContext.getPackageName(), R.layout.widget_conversation_list_item);
         remoteViews.setTextViewText(R.id.widget_senders, senders);
-        remoteViews.setTextViewText(R.id.widget_date, styledDate);
-        remoteViews.setTextViewText(R.id.widget_subject, styledSubject);
-        if (paperclipBitmap != null) {
-            remoteViews.setViewVisibility(R.id.widget_attachment, View.VISIBLE);
-            remoteViews.setImageViewBitmap(R.id.widget_attachment, paperclipBitmap);
-        } else {
-            remoteViews.setViewVisibility(R.id.widget_attachment, View.GONE);
-        }
+        remoteViews.setTextViewText(R.id.widget_date, date);
+        remoteViews.setTextViewText(R.id.widget_subject, subjectAndSnippet);
+        remoteViews.setViewVisibility(R.id.widget_attachment,
+                hasAttachments ? View.VISIBLE : View.GONE);
         if (isUnread) {
             remoteViews.setViewVisibility(R.id.widget_unread_background, View.VISIBLE);
             remoteViews.setViewVisibility(R.id.widget_read_background, View.GONE);
diff --git a/tests/src/com/android/mail/browse/MessageHeaderViewTest.java b/tests/src/com/android/mail/browse/MessageHeaderViewTest.java
index 1cadb73..0ba04f5 100644
--- a/tests/src/com/android/mail/browse/MessageHeaderViewTest.java
+++ b/tests/src/com/android/mail/browse/MessageHeaderViewTest.java
@@ -27,43 +27,6 @@
 public class MessageHeaderViewTest extends AndroidTestCase {
 
     @SmallTest
-    public void testRecipientSummaryLongTo() {
-        String[] to = makeRecipientArray("TO", 60);
-        String[] cc = makeRecipientArray("CC", 60);
-        String summary = MessageHeaderView.getRecipientSummaryText(getContext(), "", "", to, cc,
-                null, new HashMap<String, Address>(), null).toString();
-
-        assertTrue(summary.contains("TO00"));
-        assertTrue(summary.contains("TO49"));
-        assertFalse(summary.contains("TO50"));
-    }
-
-    @SmallTest
-    public void testRecipientSummaryLongMultipleLists() {
-        String[] to = makeRecipientArray("TO", 20);
-        String[] cc = makeRecipientArray("CC", 10);
-        String[] bcc = makeRecipientArray("BB", 60);
-        String summary = MessageHeaderView.getRecipientSummaryText(getContext(), "", "", to, cc,
-                bcc, new HashMap<String, Address>(), null).toString();
-
-        assertTrue(summary.contains("TO00"));
-        assertTrue(summary.contains("TO19"));
-        assertTrue(summary.contains("CC00"));
-        assertTrue(summary.contains("CC09"));
-        assertTrue(summary.contains("BB00"));
-        assertTrue(summary.contains("BB19"));
-        assertFalse(summary.contains("BB20"));
-    }
-
-    private static String[] makeRecipientArray(String prefix, int len) {
-        String[] arr = new String[len];
-        for (int i=0; i < arr.length; i++) {
-            arr[i] = String.format("\"%s%02d\" <foo@bar.com>", prefix, i);
-        }
-        return arr;
-    }
-
-    @SmallTest
     public void testMakeSnippet() {
         assertSnippetEquals("Hello, world!",
                 "Hello, world!");