diff --git a/res/layout/auto_initiate_activity.xml b/res/layout/auto_initiate_activity.xml
index 636a521abc..1c9c039bcf 100644
--- a/res/layout/auto_initiate_activity.xml
+++ b/res/layout/auto_initiate_activity.xml
@@ -9,12 +9,15 @@
     <TextView android:id="@+id/description_text"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
+              android:layout_marginTop="5dip"
               android:layout_marginBottom="5dip"
-              android:text="@string/you_have_received_a_message_from_someone_who_supports_textsecure_encrypted_sessions_would_you_like_to_initiate_a_key_exchange_so_you_can_communicate_securely"/>
+              android:textAppearance="?android:attr/textAppearanceMedium"                
+              android:text="@string/you_have_received_a_message_from_someone_who_supports_textsecure_encrypted_sessions_would_you_like_to_initiate_a_secure_session"/>
 
     <LinearLayout android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:layout_marginTop="10dip"
+                  android:layout_marginBottom="10dip"
                   android:orientation="horizontal">
 
         <Button android:id="@+id/initiate_button"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4619c6478f..d9f0c093de 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -204,7 +204,7 @@
     <string name="most_recent_from_s">Most recent from: %s</string>
     
     <!-- auto_initiate_activity -->
-    <string name="you_have_received_a_message_from_someone_who_supports_textsecure_encrypted_sessions_would_you_like_to_initiate_a_key_exchange_so_you_can_communicate_securely">You have received a message from someone who supports TextSecure encrypted sessions.  Would you like to initiate a key exchange so you can communicate securely?</string>
+    <string name="you_have_received_a_message_from_someone_who_supports_textsecure_encrypted_sessions_would_you_like_to_initiate_a_secure_session">You have received a message from someone who supports TextSecure encrypted sessions.  Would you like to initiate a secure session?</string>
     <string name="initiate_exchange">Initiate Exchange</string>
     
     <!-- change_passphrase_activity -->
diff --git a/src/org/thoughtcrime/securesms/AutoInitiateActivity.java b/src/org/thoughtcrime/securesms/AutoInitiateActivity.java
index 7ad4bd14bc..95d3ad8ce5 100644
--- a/src/org/thoughtcrime/securesms/AutoInitiateActivity.java
+++ b/src/org/thoughtcrime/securesms/AutoInitiateActivity.java
@@ -30,6 +30,7 @@ import org.thoughtcrime.securesms.crypto.KeyExchangeInitiator;
 import org.thoughtcrime.securesms.crypto.MasterSecret;
 import org.thoughtcrime.securesms.database.LocalKeyRecord;
 import org.thoughtcrime.securesms.database.RemoteKeyRecord;
+import org.thoughtcrime.securesms.protocol.Tag;
 import org.thoughtcrime.securesms.recipients.Recipient;
 import org.thoughtcrime.securesms.util.MemoryCleaner;
 
@@ -98,13 +99,9 @@ public class AutoInitiateActivity extends SherlockActivity {
                  Recipient recipient, String message, long threadId)
   {
     return
-      isMessageTagged(message)             &&
-      isThreadQualified(context, threadId) &&
-      isExchangeQualified(context, masterSecret, recipient);
-  }
-
-  private static boolean isMessageTagged(String message) {
-    return message.endsWith("             ");
+        Tag.isTagged(message)                &&
+        isThreadQualified(context, threadId) &&
+        isExchangeQualified(context, masterSecret, recipient);
   }
 
   private static boolean isThreadQualified(Context context, long threadId) {
diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java
index 6299fa6874..118b6b88a0 100644
--- a/src/org/thoughtcrime/securesms/ConversationActivity.java
+++ b/src/org/thoughtcrime/securesms/ConversationActivity.java
@@ -23,7 +23,6 @@ import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.SharedPreferences;
 import android.net.Uri;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
@@ -59,6 +58,7 @@ import org.thoughtcrime.securesms.mms.AttachmentManager;
 import org.thoughtcrime.securesms.mms.AttachmentTypeSelectorAdapter;
 import org.thoughtcrime.securesms.mms.MediaTooLargeException;
 import org.thoughtcrime.securesms.mms.SlideDeck;
+import org.thoughtcrime.securesms.protocol.Tag;
 import org.thoughtcrime.securesms.recipients.Recipient;
 import org.thoughtcrime.securesms.recipients.RecipientFormattingException;
 import org.thoughtcrime.securesms.recipients.Recipients;
@@ -542,14 +542,13 @@ public class ConversationActivity extends SherlockFragmentActivity
   }
 
   private String getMessage() throws InvalidMessageException {
-    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
-    String rawText       = composeText.getText().toString();
+    String rawText = composeText.getText().toString();
 
     if (rawText.length() < 1 && !attachmentManager.isAttachmentPresent())
       throw new InvalidMessageException(getString(R.string.message_is_empty_exclamation));
 
-    if (!sendEncrypted && sp.getBoolean(ApplicationPreferencesActivity.WHITESPACE_PREF, true) && rawText.length() <= 145)
-      rawText = rawText + "             ";
+    if (!sendEncrypted && Tag.isTaggable(this, rawText))
+      rawText = Tag.getTaggedMessage(rawText);
 
     return rawText;
   }
diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/org/thoughtcrime/securesms/ConversationItem.java
index ffbfa456da..edf7487697 100644
--- a/src/org/thoughtcrime/securesms/ConversationItem.java
+++ b/src/org/thoughtcrime/securesms/ConversationItem.java
@@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.database.MmsDatabase;
 import org.thoughtcrime.securesms.database.MmsMessageRecord;
 import org.thoughtcrime.securesms.mms.Slide;
 import org.thoughtcrime.securesms.mms.SlideDeck;
+import org.thoughtcrime.securesms.protocol.Tag;
 import org.thoughtcrime.securesms.recipients.Recipient;
 import org.thoughtcrime.securesms.recipients.RecipientFactory;
 import org.thoughtcrime.securesms.recipients.RecipientFormattingException;
@@ -211,10 +212,11 @@ public class ConversationItem extends LinearLayout {
   private void setBodyText(MessageRecord messageRecord) {
     String body = messageRecord.getBody();
 
-    if      (messageRecord.isKeyExchange() && messageRecord.isOutgoing())           body    = "\n" + getContext().getString(R.string.key_exchange_message2);
-    else if (messageRecord.isProcessedKeyExchange() && !messageRecord.isOutgoing()) body    = "\n" + getContext().getString(R.string.received_and_processed_key_exchange_message);
-    else if (messageRecord.isStaleKeyExchange())                                    body    = "\n" + getContext().getString(R.string.error_received_stale_key_exchange_message);
-    else if (messageRecord.isKeyExchange() && !messageRecord.isOutgoing())          body    = "\n" + getContext().getString(R.string.received_key_exchange_message_click_to_process);
+    if      (messageRecord.isKeyExchange() && messageRecord.isOutgoing())           body = "\n" + getContext().getString(R.string.key_exchange_message2);
+    else if (messageRecord.isProcessedKeyExchange() && !messageRecord.isOutgoing()) body = "\n" + getContext().getString(R.string.received_and_processed_key_exchange_message);
+    else if (messageRecord.isStaleKeyExchange())                                    body = "\n" + getContext().getString(R.string.error_received_stale_key_exchange_message);
+    else if (messageRecord.isKeyExchange() && !messageRecord.isOutgoing())          body = "\n" + getContext().getString(R.string.received_key_exchange_message_click_to_process);
+    else if (messageRecord.isOutgoing() && Tag.isTagged(body))                      body = Tag.stripTag(body);
 
     bodyText.setText(body, TextView.BufferType.SPANNABLE);
 
diff --git a/src/org/thoughtcrime/securesms/protocol/Tag.java b/src/org/thoughtcrime/securesms/protocol/Tag.java
new file mode 100644
index 0000000000..849d4f48e9
--- /dev/null
+++ b/src/org/thoughtcrime/securesms/protocol/Tag.java
@@ -0,0 +1,36 @@
+package org.thoughtcrime.securesms.protocol;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+
+import org.thoughtcrime.securesms.ApplicationPreferencesActivity;
+
+public class Tag {
+
+  public static final String WHITESPACE_TAG = "             ";
+
+  public static boolean isTaggable(Context context, String message) {
+    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
+
+    return sp.getBoolean(ApplicationPreferencesActivity.WHITESPACE_PREF, true) &&
+           message.matches(".*[^\\s].*")                                       &&
+           message.replaceAll("\\s+$", "").length() + WHITESPACE_TAG.length() <= 158;
+  }
+
+  public static boolean isTagged(String message) {
+    return message.matches(".*[^\\s]" + WHITESPACE_TAG + "$");
+  }
+
+  public static String getTaggedMessage(String message) {
+    return message.replaceAll("\\s+$", "") + WHITESPACE_TAG;
+  }
+
+  public static String stripTag(String message) {
+    if (isTagged(message))
+      return message.substring(0, message.length() - WHITESPACE_TAG.length());
+
+    return message;
+  }
+
+}