diff --git a/res/drawable-hdpi/ic_delete_wht_24dp.png b/res/drawable-hdpi/ic_delete_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_delete_wht_24dp.png
rename to res/drawable-hdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_delete_wht_24dp.png b/res/drawable-mdpi/ic_delete_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_delete_wht_24dp.png
rename to res/drawable-mdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_delete_wht_24dp.png b/res/drawable-xhdpi/ic_delete_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_delete_wht_24dp.png
rename to res/drawable-xhdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_delete_wht_24dp.png b/res/drawable-xxhdpi/ic_delete_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_delete_wht_24dp.png
rename to res/drawable-xxhdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_delete_wht_24dp.png b/res/drawable-xxxhdpi/ic_delete_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_delete_wht_24dp.png
rename to res/drawable-xxxhdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable/ic_calllog_delete.xml b/res/drawable/ic_calllog_delete.xml
deleted file mode 100644
index 2f9f0ae..0000000
--- a/res/drawable/ic_calllog_delete.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_delete_wht_24dp"
-    android:gravity="center"
-    android:tint="@color/actionbar_icon_color" />
diff --git a/res/layout/voicemail_playback_layout.xml b/res/layout/voicemail_playback_layout.xml
index 96feba6..97bb5f8 100644
--- a/res/layout/voicemail_playback_layout.xml
+++ b/res/layout/voicemail_playback_layout.xml
@@ -27,11 +27,6 @@
         android:layout_height="80dp"
         android:layout_marginTop="@dimen/call_detail_button_spacing">
 
-        <!-- SeekBar left-right margin decreased from redlines 72dp by 8dp to account for
-             half thumb width (thumb is 16dp).
-             Vertically, SeekBar and rate buttons should be below centre, position achieved by
-             making them centred but giving a difference between top and bottom padding,
-             difference is currently 10dp. -->
         <SeekBar
             android:id="@+id/playback_seek"
             android:layout_width="match_parent"
@@ -61,15 +56,12 @@
 
     </RelativeLayout>
 
-    <!-- Playback, speakerphone buttons. -->
-    <LinearLayout
-        android:id="@+id/buttons_linear_layout"
+    <LinearLayout android:id="@+id/buttons_linear_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal">
 
-        <ImageButton
-            android:id="@+id/playback_start_stop"
+        <ImageButton android:id="@+id/playback_start_stop"
             android:layout_width="match_parent"
             android:layout_height="58dp"
             android:layout_marginEnd="@dimen/call_detail_button_spacing"
@@ -78,8 +70,7 @@
             android:src="@drawable/ic_hold_pause"
             android:contentDescription="@string/voicemail_play_start_pause" />
 
-        <ImageButton
-            android:id="@+id/playback_speakerphone"
+        <ImageButton android:id="@+id/playback_speakerphone"
             android:layout_width="match_parent"
             android:layout_height="58dp"
             android:layout_weight="1"
@@ -87,6 +78,15 @@
             android:src="@drawable/ic_speakerphone_on"
             android:contentDescription="@string/description_playback_speakerphone" />
 
+        <ImageButton android:id="@+id/delete_voicemail"
+            android:layout_width="match_parent"
+            android:layout_height="58dp"
+            android:layout_weight="1"
+            android:background="?android:attr/selectableItemBackground"
+            android:src="@drawable/ic_delete_24dp"
+            android:tint="@color/voicemail_playback_icon_tint"
+            android:contentDescription="@string/recentCalls_trashVoicemail" />
+
     </LinearLayout>
 
 </LinearLayout>
diff --git a/res/menu/call_details_options.xml b/res/menu/call_details_options.xml
index a48687e..b98ec9e 100644
--- a/res/menu/call_details_options.xml
+++ b/res/menu/call_details_options.xml
@@ -14,23 +14,21 @@
      limitations under the License.
 -->
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/menu_trash"
-        android:icon="@drawable/ic_calllog_delete"
+
+    <item android:id="@+id/menu_trash"
+        android:icon="@drawable/ic_delete_24dp"
         android:showAsAction="ifRoom"
         android:title="@string/recentCalls_trashVoicemail"
-        android:onClick="onMenuTrashVoicemail"
-    />
-    <item
-        android:id="@+id/menu_remove_from_call_log"
-        android:icon="@drawable/ic_calllog_delete"
+        android:onClick="onMenuTrashVoicemail" />
+
+    <item android:id="@+id/menu_remove_from_call_log"
+        android:icon="@drawable/ic_delete_24dp"
         android:showAsAction="ifRoom"
         android:title="@string/recentCalls_removeFromRecentList"
-        android:onClick="onMenuRemoveFromCallLog"
-    />
-    <item
-        android:id="@+id/menu_edit_number_before_call"
+        android:onClick="onMenuRemoveFromCallLog" />
+
+    <item android:id="@+id/menu_edit_number_before_call"
         android:title="@string/recentCalls_editNumberBeforeCall"
-        android:onClick="onMenuEditNumberBeforeCall"
-    />
+        android:onClick="onMenuEditNumberBeforeCall" />
+
 </menu>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 38a3325..352bce5 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -39,6 +39,8 @@
     <!-- Tint of the recent card phone icon; 30% black -->
     <color name="recent_call_log_item_phone_icon_tint">#4d000000</color>
 
+    <color name="voicemail_playback_icon_tint">#8e8e8e</color>
+
     <!--
          Colour of voicemail progress bar to the right of position indicator.
          Same as the background color of the dialer
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 213d340..d8a8ffe 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -51,7 +51,7 @@
     <string name="recentCalls_editNumberBeforeCall">Edit number before call</string>
 
     <!-- Menu item used to add a number from the call log to contacts -->
-    <string name="recentCalls_addToContact">Add to contacts</string>
+    <string name="recentCalls_addToContact">Add to a contact</string>
 
     <!-- Menu item used to remove a single call from the call log -->
     <string name="recentCalls_removeFromRecentList">Delete from call history</string>
@@ -500,7 +500,7 @@
 
     <!-- Shortcut item used to add a number to an existing contact directly from search.
          [CHAR LIMIT=25] -->
-    <string name="search_shortcut_add_to_contact">Add to contact</string>
+    <string name="search_shortcut_add_to_contact">Add to a contact</string>
 
     <!-- Shortcut item used to send a text message directly from search. [CHAR LIMIT=25] -->
     <string name="search_shortcut_send_sms_message">Send SMS</string>
diff --git a/src/com/android/dialer/list/AllContactsFragment.java b/src/com/android/dialer/list/AllContactsFragment.java
index eaa5cc8..20e88e2 100644
--- a/src/com/android/dialer/list/AllContactsFragment.java
+++ b/src/com/android/dialer/list/AllContactsFragment.java
@@ -16,6 +16,7 @@
 
 package com.android.dialer.list;
 
+import android.content.Loader;
 import android.database.Cursor;
 import android.net.Uri;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -39,6 +40,8 @@
  */
 public class AllContactsFragment extends ContactEntryListFragment<ContactEntryListAdapter> {
 
+    private View mEmptyListView;
+
     public AllContactsFragment() {
         setQuickContactEnabled(false);
         setAdjustSelectionBoundsEnabled(true);
@@ -52,10 +55,11 @@
     public void onViewCreated(View view, android.os.Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
 
-        View emptyListView = view.findViewById(R.id.empty_list_view);
-        DialerUtils.configureEmptyListView(emptyListView, R.drawable.empty_contacts,
+        View mEmptyListView = view.findViewById(R.id.empty_list_view);
+        DialerUtils.configureEmptyListView(mEmptyListView, R.drawable.empty_contacts,
                 R.string.all_contacts_empty, getResources());
-        getListView().setEmptyView(emptyListView);
+        getListView().setEmptyView(mEmptyListView);
+        mEmptyListView.setVisibility(View.GONE);
 
         ViewUtil.addBottomPaddingToListViewForFab(getListView(), getResources());
     }
@@ -68,6 +72,15 @@
     }
 
     @Override
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+        super.onLoadFinished(loader, data);
+
+        if (data.getCount() == 0) {
+            mEmptyListView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
     protected ContactEntryListAdapter createListAdapter() {
         if (!PermissionsUtil.hasContactsPermissions(getActivity())) {
             return new EmptyContactsListAdapter(getActivity());
diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
index 8a43023..17c573f 100644
--- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
+++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
@@ -3,6 +3,8 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.telephony.PhoneNumberUtils;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -36,6 +38,8 @@
 
     private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT];
 
+    private final BidiFormatter mBidiFormatter = BidiFormatter.getInstance();
+
     public DialerPhoneNumberListAdapter(Context context) {
         super(context);
 
@@ -141,7 +145,9 @@
         final String number = getFormattedQueryString();
         switch (shortcutType) {
             case SHORTCUT_DIRECT_CALL:
-                text = resources.getString(R.string.search_shortcut_call_number, number);
+                text = resources.getString(
+                        R.string.search_shortcut_call_number,
+                        mBidiFormatter.unicodeWrap(number, TextDirectionHeuristics.LTR));
                 drawableId = R.drawable.ic_search_phone;
                 break;
             case SHORTCUT_CREATE_NEW_CONTACT:
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
index 703004d..0313f40 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
@@ -37,6 +37,7 @@
 
 import com.android.common.io.MoreCloseables;
 import com.android.dialer.R;
+import com.android.dialer.calllog.CallLogAsyncTaskUtil;
 
 import com.google.common.base.Preconditions;
 
@@ -124,7 +125,7 @@
     /**
      * Handle state changes when the user manipulates the seek bar.
      */
-    private final OnSeekBarChangeListener seekBarChangeListener = new OnSeekBarChangeListener() {
+    private final OnSeekBarChangeListener mSeekBarChangeListener = new OnSeekBarChangeListener() {
         @Override
         public void onStartTrackingTouch(SeekBar seekBar) {
             if (mPresenter != null) {
@@ -148,7 +149,7 @@
     /**
      * Click listener to toggle speakerphone.
      */
-    private final View.OnClickListener speakerphoneListener = new View.OnClickListener() {
+    private final View.OnClickListener mSpeakerphoneListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             if (mPresenter != null) {
@@ -160,7 +161,7 @@
     /**
      * Click listener to play or pause voicemail playback.
      */
-    private final View.OnClickListener startStopButtonListener = new View.OnClickListener() {
+    private final View.OnClickListener mStartStopButtonListener = new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             if (mPresenter == null) {
@@ -175,6 +176,16 @@
         }
     };
 
+    private final View.OnClickListener mDeleteButtonListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View view ) {
+            if (mPresenter == null) {
+                return;
+            }
+            CallLogAsyncTaskUtil.deleteVoicemail(mContext, mPresenter.getVoicemailUri(), null);
+        }
+    };
+
     private Context mContext;
     private VoicemailPlaybackPresenter mPresenter;
 
@@ -183,6 +194,7 @@
     private SeekBar mPlaybackSeek;
     private ImageButton mStartStopButton;
     private ImageButton mPlaybackSpeakerphone;
+    private ImageButton mDeleteButton;
     private TextView mPlaybackPosition;
 
     private PositionUpdater mPositionUpdater;
@@ -212,11 +224,13 @@
         mPlaybackSeek = (SeekBar) findViewById(R.id.playback_seek);
         mStartStopButton = (ImageButton) findViewById(R.id.playback_start_stop);
         mPlaybackSpeakerphone = (ImageButton) findViewById(R.id.playback_speakerphone);
+        mDeleteButton = (ImageButton) findViewById(R.id.delete_voicemail);
         mPlaybackPosition = (TextView) findViewById(R.id.playback_position_text);
 
-        mPlaybackSeek.setOnSeekBarChangeListener(seekBarChangeListener);
-        mStartStopButton.setOnClickListener(startStopButtonListener);
-        mPlaybackSpeakerphone.setOnClickListener(speakerphoneListener);
+        mPlaybackSeek.setOnSeekBarChangeListener(mSeekBarChangeListener);
+        mStartStopButton.setOnClickListener(mStartStopButtonListener);
+        mPlaybackSpeakerphone.setOnClickListener(mSpeakerphoneListener);
+        mDeleteButton.setOnClickListener(mDeleteButtonListener);
     }
 
     @Override
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 99d2734..1a15476 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -204,7 +204,7 @@
 
     public void onPause(boolean isFinishing) {
         // Do not pause for orientation changes.
-        if (mMediaPlayer.isPlaying() && isFinishing) {
+        if (mIsPrepared && mMediaPlayer.isPlaying() && isFinishing) {
             pausePlayback();
         }
 
@@ -556,6 +556,10 @@
         return mAudioManager.isSpeakerphoneOn();
     }
 
+    public Uri getVoicemailUri() {
+        return mVoicemailUri;
+    }
+
     private static synchronized ScheduledExecutorService getScheduledExecutorServiceInstance() {
         if (mScheduledExecutorService == null) {
             mScheduledExecutorService = Executors.newScheduledThreadPool(NUMBER_OF_THREADS_IN_POOL);
