diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java
index 7e425be5dbcfd06e00e7de965560c7e728969fe3..03d030be95b8d0c92a5c433562286f33012c2b60 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java
@@ -339,6 +339,7 @@ public class MainActivity extends BoundActivity {
         }
     }
 
+    // FIXME: Fix this ugly hack
     public void displayFilterDialog() {
         if (context.client() != null) {
             List<Integer> filterSettings = Arrays.asList(
@@ -382,7 +383,12 @@ public class MainActivity extends BoundActivity {
                         int filters = 0x00000000;
                         if (dialog.getSelectedIndices() != null)
                             for (int i : dialog.getSelectedIndices()) {
-                                filters |= filterSettings.get(i);
+                                int settingsid = filterSettings.get(i);
+                                filters |= settingsid;
+                                if (settingsid == Message.Type.Quit.value)
+                                    filters |= Message.Type.NetsplitQuit.value;
+                                else if (settingsid == Message.Type.Join.value)
+                                    filters |= Message.Type.NetsplitJoin.value;
                             }
                         backlogFilter.setFilters(filters);
                     })
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java
index b9d21cfbf644d7e18cd591b5da0a0c6d62b3cd53..c01de5b242841522dd697b20b7b04c093449a5bd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java
@@ -117,7 +117,7 @@ public class ChatMessageRenderer {
         holder.content.setText(
                 context.themeUtil().translations.formatPlain(
                         formatNick(message.sender, false),
-                        helper.formatIrcMessage(message.content)
+                        helper.formatIrcMessage(context.client(), message)
                 )
         );
     }
@@ -126,7 +126,7 @@ public class ChatMessageRenderer {
         applyStyle(holder, plainStyle, highlightStyle, message.flags.Highlight);
         holder.content.setText(context.themeUtil().translations.formatAction(
                 formatNick(message.sender, false),
-                helper.formatIrcMessage(message.content)
+                helper.formatIrcMessage(context.client(), message)
         ));
     }
 
@@ -135,7 +135,7 @@ public class ChatMessageRenderer {
         holder.content.setText(
                 context.themeUtil().translations.formatAction(
                         formatNick(message.sender, false),
-                        helper.formatIrcMessage(message.content)
+                        helper.formatIrcMessage(context.client(), message)
                 )
         );
     }
diff --git a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java
index 21fadd2635434e18a270291db7b3275d196f8df8..d1776edb37aecc05589a2ff1217d60ba5f6d6c62 100644
--- a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java
+++ b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java
@@ -27,10 +27,8 @@ import android.content.Context;
 import android.content.Intent;
 import android.graphics.Typeface;
 import android.net.Uri;
-import android.os.Parcel;
 import android.provider.Browser;
 import android.support.annotation.NonNull;
-import android.text.ParcelableSpan;
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.style.ClickableSpan;
@@ -44,7 +42,10 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import de.kuschku.quasseldroid_ng.R;
+import de.kuschku.libquassel.client.Client;
+import de.kuschku.libquassel.localtypes.buffers.Buffer;
+import de.kuschku.libquassel.message.Message;
+import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
 import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
 import de.kuschku.util.irc.IrcUserUtils;
 
@@ -81,14 +82,20 @@ public class IrcFormatHelper {
     }
 
     @NonNull
-    public CharSequence formatIrcMessage(@NonNull String message) {
+    public CharSequence formatIrcMessage(@NonNull Client client, @NonNull Message message) {
         List<FutureClickableSpan> spans = new LinkedList<>();
 
-        SpannableString str = new SpannableString(context.deserializer().formatString(message));
+        SpannableString str = new SpannableString(context.deserializer().formatString(message.content));
         Matcher urlMatcher = urlPattern.matcher(str);
         while (urlMatcher.find()) {
             spans.add(new FutureClickableSpan(new CustomURLSpan(urlMatcher.group()), urlMatcher.start(), urlMatcher.end()));
         }
+        Matcher channelMatcher = channelPattern.matcher(str);
+        while (channelMatcher.find()) {
+            QIrcChannel channel = client.networkManager().network(message.bufferInfo.networkId()).ircChannel(channelMatcher.group());
+            Buffer buffer = client.bufferManager().channel(channel);
+            spans.add(new FutureClickableSpan(new ChannelSpan(client, buffer.getInfo().id()), channelMatcher.start(), channelMatcher.end()));
+        }
         for (FutureClickableSpan span : spans) {
             str.setSpan(span.span, span.start, span.end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
         }
@@ -108,36 +115,16 @@ public class IrcFormatHelper {
         }
     }
 
-    private static class CustomURLSpan extends ClickableSpan implements ParcelableSpan {
+    private static class CustomURLSpan extends ClickableSpan {
         private final String mURL;
 
         public CustomURLSpan(@NonNull String url) {
             mURL = url;
         }
 
-        public CustomURLSpan(@NonNull Parcel src) {
-            mURL = src.readString();
-        }
-
-        public int getSpanTypeId() {
-            return R.id.custom_url_span;
-        }
-
-        public int describeContents() {
-            return 0;
-        }
-
-        public void writeToParcel(@NonNull Parcel dest, int flags) {
-            dest.writeString(mURL);
-        }
-
-        public String getURL() {
-            return mURL;
-        }
-
         @Override
-        public void onClick(@NonNull View widget) {
-            Uri uri = Uri.parse(getURL());
+        public void onClick(View widget) {
+            Uri uri = Uri.parse(mURL);
             Context context = widget.getContext();
             Intent intent = new Intent(Intent.ACTION_VIEW, uri);
             intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
@@ -148,4 +135,20 @@ public class IrcFormatHelper {
             }
         }
     }
+
+    private class ChannelSpan extends ClickableSpan {
+        @NonNull
+        private final Client client;
+        private final int bufferid;
+
+        public ChannelSpan(@NonNull Client client, int bufferid) {
+            this.client = client;
+            this.bufferid = bufferid;
+        }
+
+        @Override
+        public void onClick(View widget) {
+            client.backlogManager().open(bufferid);
+        }
+    }
 }