diff --git a/res/values/strings.xml b/res/values/strings.xml
index eda6302..d14a7fa 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -141,9 +141,6 @@
     <!-- Menu item (in the action bar) that creates a new group [CHAR LIMIT=30] -->
     <string name="menu_new_group_action_bar">Add Group</string>
 
-    <!-- Title of the confirmation dialog for separating contacts into multiple instances [CHAR LIMIT=40] -->
-    <string name="splitConfirmation_title">Unlink contact?</string>
-
     <!-- Confirmation dialog for unlinking contacts into multiple instances [CHAR LIMIT=NONE] -->
     <string name="splitConfirmation">Unlink this contact into multiple contacts?</string>
 
@@ -156,9 +153,6 @@
     <!-- Positive button text from the confirmation dialog for unlinking contacts with pending changes [CHAR LIMIT = 60] -->
     <string name="splitConfirmationWithPendingChanges_positive_button">Save and Unlink</string>
 
-    <!-- Title of the confirmation dialog for joining contacts when there are unsaved changes. [CHAR LIMIT=40] -->
-    <string name="joinConfirmation_title">Link contact?</string>
-
     <!-- Confirmation dialog message for joining contacts when there are unsaved changes. [CHAR LIMIT=NONE] -->
     <string name="joinConfirmation">Would you like to save the changes you already made and link with the contact selected?</string>
 
@@ -202,11 +196,14 @@
     <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=30] -->
     <string name="menu_redirect_calls_to_vm">All calls to voicemail</string>
 
-    <!-- Warning dialog contents after users selects to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
-    <string name="readOnlyContactWarning">Contacts from your read-only accounts will be hidden on this device, not deleted.</string>
+    <!-- Warning dialog contents after users select to delete a ReadOnly contact. [CHAR LIMIT=NONE] -->
+    <string name="readOnlyContactWarning">Contacts from your read-only accounts cannot be deleted, but they can be hidden on this device.</string>
 
-    <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
-    <string name="readOnlyContactDeleteConfirmation">This contact has details from multiple accounts. Details from read-only accounts will be hidden on this device, not deleted.</string>
+    <!-- Positive button text of the warning dialog contents after users select to delete a ReadOnly contact. [CHAR LIMIT=30]-->
+    <string name="readOnlyContactWarning_positive_button">Hide</string>
+
+    <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. [CHAR LIMIT=NONE]-->
+    <string name="readOnlyContactDeleteConfirmation">This contact to be deleted has details from multiple accounts. Details from read-only accounts will be hidden on this device, not deleted.</string>
 
     <!-- Warning dialog. Shown if user selects a single contact to link. [CHAR LIMIT=NONE]  -->
     <string name="batch_link_single_contact_warning">You need at least two contacts selected to perform a link.</string>
@@ -224,10 +221,10 @@
     <string name="batch_delete_confirmation">Delete selected contacts?</string>
 
     <!-- Confirmation dialog. Shown after user selects to delete readonly contacts. [CHAR LIMIT=NONE] -->
-    <string name="batch_delete_read_only_contact_confirmation">Contacts from your read-only accounts will be hidden on this device, not deleted.</string>
+    <string name="batch_delete_read_only_contact_confirmation">Contacts from your read-only accounts cannot be deleted, but they can be hidden on this device.</string>
 
     <!-- Confirmation dialog. Shown after user selects to delete contacts from multiple accounts. [CHAR LIMIT=NONE]  -->
-    <string name="batch_delete_multiple_accounts_confirmation">These contacts have details from multiple accounts. Details from read-only accounts will be hidden on this device, not deleted.</string>
+    <string name="batch_delete_multiple_accounts_confirmation">These contacts to be deleted have details from multiple accounts. Details from read-only accounts will be hidden on this device, not deleted.</string>
 
     <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
     <string name="multipleContactDeleteConfirmation">Deleting this contact will delete details from multiple accounts.</string>
diff --git a/src/com/android/contacts/editor/JoinContactConfirmationDialogFragment.java b/src/com/android/contacts/editor/JoinContactConfirmationDialogFragment.java
index ef46dfd..55a066e 100644
--- a/src/com/android/contacts/editor/JoinContactConfirmationDialogFragment.java
+++ b/src/com/android/contacts/editor/JoinContactConfirmationDialogFragment.java
@@ -70,8 +70,6 @@
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-        builder.setTitle(R.string.joinConfirmation_title);
-        builder.setIconAttribute(android.R.attr.alertDialogIcon);
         builder.setMessage(R.string.joinConfirmation);
         builder.setPositiveButton(R.string.joinConfirmation_positive_button,
                 new DialogInterface.OnClickListener() {
diff --git a/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java b/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
index 5cc883b..f3d0ef4 100644
--- a/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
+++ b/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
@@ -71,8 +71,6 @@
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-        builder.setTitle(R.string.splitConfirmation_title);
-        builder.setIconAttribute(android.R.attr.alertDialogIcon);
         builder.setMessage(mHasPendingChanges
                 ? R.string.splitConfirmationWithPendingChanges
                 : R.string.splitConfirmation);
diff --git a/src/com/android/contacts/interactions/ContactDeletionInteraction.java b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
index 6f61b07..c9a5a9b 100644
--- a/src/com/android/contacts/interactions/ContactDeletionInteraction.java
+++ b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
@@ -269,6 +269,7 @@
             mMessageId = R.string.readOnlyContactDeleteConfirmation;
         } else if (readOnlyCount > 0 && writableCount == 0) {
             mMessageId = R.string.readOnlyContactWarning;
+            positiveButtonId = R.string.readOnlyContactWarning_positive_button;
         } else if (readOnlyCount == 0 && writableCount > 1) {
             mMessageId = R.string.multipleContactDeleteConfirmation;
             positiveButtonId = R.string.deleteConfirmation_positive_button;
diff --git a/src/com/android/contacts/interactions/ContactMultiDeletionInteraction.java b/src/com/android/contacts/interactions/ContactMultiDeletionInteraction.java
index beb21b4..173f66e 100644
--- a/src/com/android/contacts/interactions/ContactMultiDeletionInteraction.java
+++ b/src/com/android/contacts/interactions/ContactMultiDeletionInteraction.java
@@ -219,6 +219,7 @@
             messageId = R.string.batch_delete_multiple_accounts_confirmation;
         } else if (readOnlyCount > 0 && writableCount == 0) {
             messageId = R.string.batch_delete_read_only_contact_confirmation;
+            positiveButtonId = R.string.readOnlyContactWarning_positive_button;
         } else if (writableCount == 1) {
             messageId = R.string.single_delete_confirmation;
             positiveButtonId = R.string.deleteConfirmation_positive_button;
