diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
index 2a4310464029221148384483a8ba59c73b6adf7d..a336d0f2506e654d6dc1028362304d215ee9639e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
@@ -85,7 +85,7 @@ class MessageAdapter(
     const val SHIFT_FOLLOWUP = SHIFT_HIGHLIGHT - 1
     const val MASK_HIGHLIGHT = 0x01 shl SHIFT_HIGHLIGHT
     const val MASK_FOLLOWUP = 0x01 shl SHIFT_FOLLOWUP
-    const val MASK_TYPE = 0xFFFF
+    const val MASK_TYPE = 0xFFFFFF
   }
 
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QuasselMessageViewHolder {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
index 75fa1faf8e7aea77b71384bad84b3ea1ff82c491..fe5e21becf4eb1e251ced2e92f6ff93ea55cc8b9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
@@ -15,10 +15,15 @@ import android.text.SpannableStringBuilder
 import android.view.*
 import butterknife.BindView
 import butterknife.ButterKnife
+import com.bumptech.glide.Glide
+import com.bumptech.glide.ListPreloader
+import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader
+import com.bumptech.glide.util.FixedPreloadSizeProvider
 import de.kuschku.libquassel.protocol.BufferId
 import de.kuschku.libquassel.protocol.MsgId
 import de.kuschku.libquassel.quassel.syncables.BufferSyncer
 import de.kuschku.libquassel.util.helpers.value
+import de.kuschku.quasseldroid.GlideApp
 import de.kuschku.quasseldroid.R
 import de.kuschku.quasseldroid.persistence.QuasselDatabase
 import de.kuschku.quasseldroid.persistence.findByBufferIdPagedWithDayChange
@@ -72,14 +77,26 @@ class MessageListFragment : ServiceBoundFragment() {
         viewModel.selectedMessages.value.values.sortedBy {
           it.id
         }.map {
-          SpanFormatter.format(getString(R.string.message_format_copy), it.time, it.content)
+          if (it.name != null && it.content != null) {
+            SpanFormatter.format(getString(R.string.message_format_copy_complex),
+                                 it.time,
+                                 it.name,
+                                 it.content)
+          } else {
+            SpanFormatter.format(getString(R.string.message_format_copy), it.time, it.combined)
+          }
         }.forEach {
           builder.append(it)
           builder.append("\n")
         }
 
+        val data = if (builder.endsWith('\n'))
+          builder.subSequence(0, builder.length - 1)
+        else
+          builder
+
         val clipboard = requireActivity().systemService<ClipboardManager>()
-        val clip = ClipData.newPlainText(null, builder)
+        val clip = ClipData.newPlainText(null, data)
         clipboard.primaryClip = clip
         actionMode?.finish()
         true
@@ -89,15 +106,27 @@ class MessageListFragment : ServiceBoundFragment() {
         viewModel.selectedMessages.value.values.sortedBy {
           it.id
         }.map {
-          SpanFormatter.format(getString(R.string.message_format_copy), it.time, it.content)
+          if (it.name != null && it.content != null) {
+            SpanFormatter.format(getString(R.string.message_format_copy_complex),
+                                 it.time,
+                                 it.name,
+                                 it.content)
+          } else {
+            SpanFormatter.format(getString(R.string.message_format_copy), it.time, it.combined)
+          }
         }.forEach {
           builder.append(it)
           builder.append("\n")
         }
 
+        val data = if (builder.endsWith('\n'))
+          builder.subSequence(0, builder.length - 1)
+        else
+          builder
+
         val intent = Intent(Intent.ACTION_SEND)
         intent.type = "text/plain"
-        intent.putExtra(Intent.EXTRA_TEXT, builder)
+        intent.putExtra(Intent.EXTRA_TEXT, data)
         requireContext().startActivity(
           Intent.createChooser(
             intent,
@@ -311,7 +340,6 @@ class MessageListFragment : ServiceBoundFragment() {
       messageList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
     }
 
-    /*
     val avatar_size = resources.getDimensionPixelSize(R.dimen.avatar_size)
 
     val sizeProvider = FixedPreloadSizeProvider<String>(avatar_size, avatar_size)
@@ -328,7 +356,6 @@ class MessageListFragment : ServiceBoundFragment() {
     val preloader = RecyclerViewPreloader(Glide.with(this), preloadModelProvider, sizeProvider, 10)
 
     messageList.addOnScrollListener(preloader)
-    */
 
     return view
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
index 105c4ed2bcbac82c1e46591ed54804fbfb5c8804..aa288058870281229368e2289fd220c6447229b9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt
@@ -359,7 +359,7 @@ class QuasselMessageRenderer @Inject constructor(
         val split = message.content.content.split("#:#")
         val (server1, server2) = split.last().split(' ')
         val usersAffected = split.size - 1
-        FormattedMessage(
+        val it = FormattedMessage(
           id = message.content.messageId,
           time = timeFormatter.format(message.content.time.atZone(zoneId)),
           combined = context.resources.getQuantityString(
@@ -369,6 +369,8 @@ class QuasselMessageRenderer @Inject constructor(
           isExpanded = message.isExpanded,
           isSelected = message.isSelected
         )
+        println("hi")
+        it
       }
       Message_Type.Server,
       Message_Type.Info,
diff --git a/app/src/main/res/values-de/strings_messages.xml b/app/src/main/res/values-de/strings_messages.xml
index a5d25ede6faec1e74a0a598eaf98ec2bfc84ef3a..7680a2ff3abc2cb6e37e506f42ac51966dd93647 100644
--- a/app/src/main/res/values-de/strings_messages.xml
+++ b/app/src/main/res/values-de/strings_messages.xml
@@ -8,8 +8,8 @@
   <string name="message_type_topic">Themenänderungen</string>
 
   <string name="message_format_copy">[%1$s] %2$s</string>
+  <string name="message_format_copy_complex">[%1$s] &lt;%2$s&gt; %3$s</string>
 
-  <string name="message_format_plain">%1$s%2$s: %3$s</string>
   <string name="message_format_action">— %1$s%2$s %3$s</string>
   <string name="message_format_notice">[%1$s%2$s] %3$s</string>
   <string name="message_format_nick">%1$s%2$s heißt jetzt %3$s%4$s</string>
diff --git a/app/src/main/res/values/strings_messages.xml b/app/src/main/res/values/strings_messages.xml
index ede83a7f7e7009b3adc0bc5c1afcd70b4ce299f3..1e28f646ae3d797ef660a12d355cd8804bf09401 100644
--- a/app/src/main/res/values/strings_messages.xml
+++ b/app/src/main/res/values/strings_messages.xml
@@ -16,8 +16,8 @@
   </string-array>
 
   <string name="message_format_copy">[%1$s] %2$s</string>
+  <string name="message_format_copy_complex">[%1$s] &lt;%2$s&gt; %3$s</string>
 
-  <string name="message_format_plain">%1$s%2$s: %3$s</string>
   <string name="message_format_action">— %1$s%2$s %3$s</string>
   <string name="message_format_notice">[%1$s%2$s] %3$s</string>
   <string name="message_format_nick">%1$s%2$s is now known as %3$s%4$s</string>