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 a0c4af4a22d014308ba8131e4ac2c00dc2f55d3a..ffddc785636fa740a3a76a753015ad83e6f987a6 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
@@ -42,6 +42,7 @@ public class ChatMessageRenderer {
     private IrcFormatHelper helper;
     private MessageStyleContainer highlightStyle;
     private MessageStyleContainer serverStyle;
+    private MessageStyleContainer errorStyle;
     private MessageStyleContainer actionStyle;
     private MessageStyleContainer plainStyle;
 
@@ -65,6 +66,12 @@ public class ChatMessageRenderer {
                 context.themeUtil().res.colorForegroundSecondary,
                 context.themeUtil().res.colorBackgroundSecondary
         );
+        this.errorStyle = new MessageStyleContainer(
+                context.themeUtil().res.colorForegroundError,
+                Typeface.ITALIC,
+                context.themeUtil().res.colorForegroundSecondary,
+                context.themeUtil().res.colorBackgroundSecondary
+        );
         this.plainStyle = new MessageStyleContainer(
                 context.themeUtil().res.colorForeground,
                 Typeface.NORMAL,
@@ -123,7 +130,7 @@ public class ChatMessageRenderer {
     }
 
     private void onBindNotice(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        applyStyle(holder, plainStyle, highlightStyle, message.flags.Highlight);
+        applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
         holder.content.setText(context.themeUtil().translations.formatAction(
                 formatNick(message.sender, false),
                 helper.formatIrcMessage(context.client(), message)
@@ -153,9 +160,13 @@ public class ChatMessageRenderer {
             ));
     }
 
+    // TODO: Replace this with better display of mode changes
     private void onBindMode(@NonNull MessageViewHolder holder, @NonNull Message message) {
         applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
-        holder.content.setText(message.toString());
+        holder.content.setText(context.themeUtil().translations.formatMode(
+                message.content,
+                formatNick(message.sender, false)
+        ));
     }
 
     private void onBindJoin(@NonNull MessageViewHolder holder, @NonNull Message message) {
@@ -177,35 +188,60 @@ public class ChatMessageRenderer {
 
     private void onBindQuit(@NonNull MessageViewHolder holder, @NonNull Message message) {
         applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
-        holder.content.setText(context.themeUtil().translations.formatQuit(
-                formatNick(message.sender),
-                message.content
-        ));
+        if (message.content.isEmpty())
+            holder.content.setText(context.themeUtil().translations.formatQuit(
+                    formatNick(message.sender)
+            ));
+        else
+            holder.content.setText(context.themeUtil().translations.formatQuit(
+                    formatNick(message.sender),
+                    message.content
+            ));
     }
 
     private void onBindKick(@NonNull MessageViewHolder holder, @NonNull Message message) {
         applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
-        holder.content.setText(message.toString());
+        if (message.content.contains(" "))
+            holder.content.setText(context.themeUtil().translations.formatKick(
+                    formatNick(message.sender),
+                    message.content.substring(0, message.content.indexOf(" ")),
+                    message.content.substring(message.content.indexOf(" ") + 1)
+            ));
+        else
+            holder.content.setText(context.themeUtil().translations.formatKick(
+                    formatNick(message.sender),
+                    message.content
+            ));
     }
 
     private void onBindKill(@NonNull MessageViewHolder holder, @NonNull Message message) {
         applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
-        holder.content.setText(message.toString());
+        if (message.content.contains(" "))
+            holder.content.setText(context.themeUtil().translations.formatKill(
+                    formatNick(message.sender),
+                    message.content.substring(0, message.content.indexOf(" ")),
+                    message.content.substring(message.content.indexOf(" ") + 1)
+            ));
+        else
+            holder.content.setText(context.themeUtil().translations.formatKill(
+                    formatNick(message.sender),
+                    message.content
+            ));
     }
 
     private void onBindServer(@NonNull MessageViewHolder holder, @NonNull Message message) {
         applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
-        holder.content.setText(message.toString());
+        holder.content.setText(message.content);
     }
 
     private void onBindInfo(@NonNull MessageViewHolder holder, @NonNull Message message) {
         applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
-        holder.content.setText(message.toString());
+        holder.content.setText(message.content);
     }
 
     private void onBindError(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
-        holder.content.setText(message.toString());
+        applyStyle(holder, errorStyle, highlightStyle, message.flags.Highlight);
+        holder.content.setText(message.content);
     }
 
     private void onBindDayChange(@NonNull MessageViewHolder holder, @NonNull Message message) {
@@ -216,8 +252,9 @@ public class ChatMessageRenderer {
     }
 
     private void onBindTopic(@NonNull MessageViewHolder holder, @NonNull Message message) {
+        System.out.println(message);
         applyStyle(holder, serverStyle, highlightStyle, message.flags.Highlight);
-        holder.content.setText(message.toString());
+        holder.content.setText(message.content);
     }
 
     private void onBindNetsplitJoin(@NonNull MessageViewHolder holder, @NonNull Message message) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
index ab349f567d6a1a7076d6fc87b3ea0a92d7e4a23d..5fc78b2f33fdeec993d39f5f3479057a14ba0b4a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
@@ -23,6 +23,7 @@ package de.kuschku.quasseldroid_ng.ui.chat.fragment;
 
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.support.design.widget.FloatingActionButton;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.DefaultItemAnimator;
 import android.support.v7.widget.LinearLayoutManager;
@@ -61,6 +62,9 @@ public class ChatFragment extends BoundFragment {
     @Bind(R.id.sliding_layout)
     SlidingUpPanelLayout sliderMain;
 
+    @Bind(R.id.scroll_down)
+    FloatingActionButton scrollDown;
+
     private MessageAdapter messageAdapter;
     private LinearLayoutManager layoutManager;
     private boolean loading = false;
@@ -91,6 +95,14 @@ public class ChatFragment extends BoundFragment {
                     backlogManager.requestMoreBacklog(client.backlogManager().open(), 20);
                     loading = true;
                 }
+                scrollDown.setVisibility(recyclerView.canScrollVertically(1) ? View.VISIBLE : View.GONE);
+            }
+        });
+
+        scrollDown.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                messages.smoothScrollToPosition(0);
             }
         });
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppTheme.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppTheme.java
index 7d757800620055e8e016d03974a80d4454fec4f8..c77e5bab80346070594220a0772f6035e7f77b85 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppTheme.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppTheme.java
@@ -30,8 +30,6 @@ import de.kuschku.quasseldroid_ng.R;
 public enum AppTheme {
     QUASSEL_LIGHT(R.style.Quassel_Light),
     QUASSEL_DARK(R.style.Quassel_Dark),
-    MATERIAL_DARK(R.style.Material_Dark),
-    MATERIAL_LIGHT(R.style.Material_Light),
     SOLARIZED_LIGHT(R.style.Solarized_Light),
     SOLARIZED_DARK(R.style.Solarized_Dark);
 
@@ -49,10 +47,6 @@ public enum AppTheme {
     public static AppTheme themeFromString(@Nullable String s) {
         if (s == null) s = "";
         switch (s) {
-            case "MATERIAL_DARK":
-                return MATERIAL_DARK;
-            case "MATERIAL_LIGHT":
-                return MATERIAL_LIGHT;
             case "QUASSEL_DARK":
                 return QUASSEL_DARK;
             case "SOLARIZED_LIGHT":
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java
index 0c649f6cc865d7ce44cf414a13899bb730385f88..481985a3177c3ba244b95b499658ad8b098a3084 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java
@@ -564,6 +564,9 @@ public class ThemeUtil {
         @AutoString(R.string.messageKill)
         public String messageKill;
 
+        @AutoString(R.string.messageKillExtra)
+        public String messageKillExtra;
+
         @AutoString(R.string.messageKick)
         public String messageKick;
 
@@ -585,6 +588,9 @@ public class ThemeUtil {
         @AutoString(R.string.messageAction)
         public String messageAction;
 
+        @AutoString(R.string.messageTopic)
+        public String messageTopic;
+
         @AutoString(R.string.labelStatusBuffer)
         public String titleStatusBuffer;
 
@@ -647,8 +653,13 @@ public class ThemeUtil {
         }
 
         @NonNull
-        public CharSequence formatKill(@NonNull CharSequence user, @NonNull CharSequence channel) {
-            return SpanFormatter.format(messageKill, user, channel);
+        public CharSequence formatKill(@NonNull CharSequence user, @NonNull CharSequence subject) {
+            return SpanFormatter.format(messageKill, user, subject);
+        }
+
+        @NonNull
+        public CharSequence formatKill(@NonNull CharSequence user, @NonNull CharSequence subject, @Nullable CharSequence reason) {
+            return SpanFormatter.format(messageKillExtra, user, subject, reason);
         }
 
         @NonNull
@@ -694,6 +705,11 @@ public class ThemeUtil {
         public CharSequence formatPlain(@NonNull CharSequence nick, @NonNull CharSequence message) {
             return SpanFormatter.format(messagePlain, nick, message);
         }
+
+        @NonNull
+        public CharSequence formatTopic(@NonNull CharSequence nick, @NonNull CharSequence channel, @NonNull CharSequence message) {
+            return SpanFormatter.format(messageTopic, nick, channel, message);
+        }
     }
 
     public static class Colors {
@@ -747,6 +763,10 @@ public class ThemeUtil {
         @ColorInt
         public int colorForegroundAction;
 
+        @AutoColor(R.attr.colorForegroundError)
+        @ColorInt
+        public int colorForegroundError;
+
         @AutoColor(R.attr.colorBackground)
         @ColorInt
         public int colorBackground;
diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml
index 1006263389777ff8a31a9627434bdbd562ddd80c..79ca8b88c3b8d339340b55915c086ff34e01d10e 100644
--- a/app/src/main/res/layout/fragment_chat.xml
+++ b/app/src/main/res/layout/fragment_chat.xml
@@ -34,11 +34,32 @@
     app:umanoShadowHeight="4dp"
     tools:showIn="@layout/activity_chat">
 
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/messages"
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:clickable="true" />
+        android:layout_height="match_parent">
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/messages"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:clickable="true" />
+
+        <android.support.design.widget.FloatingActionButton
+            android:id="@+id/scroll_down"
+            android:visibility="gone"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ic_scroll_down_dark"
+            app:fabSize="mini"
+            android:layout_marginRight="12dp"
+            android:layout_marginEnd="12dp"
+            android:layout_marginBottom="12dp"
+            app:backgroundTint="#8A808080"
+            app:elevation="0dip"
+            app:pressedTranslationZ="0dip"
+            android:layout_gravity="end|bottom" />
+
+    </FrameLayout>
 
     <include layout="@layout/widget_slider" />
 
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index b006f450829c06af18df88db73561130692b798a..b7b150121e50d0d71ac9a3e488eef898c65e99c5 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -64,7 +64,8 @@
     <attr name="colorForeground" format="color" />
     <attr name="colorForegroundHighlight" format="color" />
     <attr name="colorForegroundSecondary" format="color" />
-    <attr name="colorForegroundAction" />
+    <attr name="colorForegroundAction" format="color" />
+    <attr name="colorForegroundError" format="color" />
 
     <attr name="colorAccentFocus" format="color" />
     <attr name="colorDivider" format="color" />
diff --git a/app/src/main/res/values/strings_format.xml b/app/src/main/res/values/strings_format.xml
index 852d78f036ea0f1a41794883ba2aa124b1d24868..316a77e23d5dee0aa9d81cffc3b22fd0775cc70e 100644
--- a/app/src/main/res/values/strings_format.xml
+++ b/app/src/main/res/values/strings_format.xml
@@ -34,7 +34,8 @@
     <string name="messageQuit">%1$s has quit</string>
     <string name="messageQuitExtra">%1$s has quit (%2$s)</string>
 
-    <string name="messageKill">%1$s was killed: %2$s</string>
+    <string name="messageKill">%1$s has killed %2$s</string>
+    <string name="messageKillExtra">%1$s has killed %2$s: %3$s</string>
 
     <string name="messageKick">%1$s has kicked %2$s from %3$s</string>
     <string name="messageKickExtra">%1$s has kicked %2$s from %3$s: %4$s</string>
@@ -47,4 +48,6 @@
     <string name="messageDayChange">{ Day changed to %1$s }</string>
 
     <string name="messageAction">* %1$s %2$s</string>
+
+    <string name="messageTopic">%1$s has changed topic for %2$s to: "%3$s"</string>
 </resources>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 96528bf4e0f84312d13946369ca0feb33762308d..36fc79bf4e6a1b01ba07654ce6160571844debb6 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -21,106 +21,6 @@
   -->
 
 <resources>
-    <style name="Material_Light" parent="AppTheme.Light">
-        <item name="senderColor0">@color/md_pink_500</item>
-        <item name="senderColor1">@color/md_purple_500</item>
-        <item name="senderColor2">@color/md_red_500</item>
-        <item name="senderColor3">@color/md_green_500</item>
-        <item name="senderColor4">@color/md_cyan_500</item>
-        <item name="senderColor5">@color/md_deep_purple_500</item>
-        <item name="senderColor6">@color/md_amber_500</item>
-        <item name="senderColor7">@color/md_blue_500</item>
-        <item name="senderColor8">@color/md_pink_500</item>
-        <item name="senderColor9">@color/md_purple_500</item>
-        <item name="senderColorA">@color/md_red_500</item>
-        <item name="senderColorB">@color/md_green_500</item>
-        <item name="senderColorC">@color/md_cyan_500</item>
-        <item name="senderColorD">@color/md_deep_purple_500</item>
-        <item name="senderColorE">@color/md_amber_500</item>
-        <item name="senderColorF">@color/md_blue_500</item>
-
-        <item name="mircColor0">#f2f2f2</item>
-        <item name="mircColor1">#2c2c2c</item>
-        <item name="mircColor2">#2467be</item>
-        <item name="mircColor3">#568a34</item>
-        <item name="mircColor4">#ec5354</item>
-        <item name="mircColor5">#c3282d</item>
-        <item name="mircColor6">#6a2398</item>
-        <item name="mircColor7">#fc8e23</item>
-        <item name="mircColor8">#fc9f25</item>
-        <item name="mircColor9">#8cc251</item>
-        <item name="mircColorA">#17838e</item>
-        <item name="mircColorB">#39c6d9</item>
-        <item name="mircColorC">#6bb6f4</item>
-        <item name="mircColorD">#b96ac6</item>
-        <item name="mircColorE">#545454</item>
-        <item name="mircColorF">#e0e0e0</item>
-
-        <item name="colorForeground">@color/md_light_primary_text</item>
-        <item name="colorForegroundHighlight">@color/md_light_primary_text</item>
-        <item name="colorForegroundSecondary">@color/md_light_secondary</item>
-        <item name="colorForegroundAction">#1a237e</item>
-
-        <item name="colorBackground">@color/md_light_background</item>
-        <item name="colorBackgroundHighlight">#ff8811</item>
-        <item name="colorBackgroundSecondary">@android:color/transparent</item>
-        <item name="colorBackgroundCard">@color/md_light_cards</item>
-
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
-
-    <style name="Material_Dark" parent="AppTheme">
-        <item name="senderColor0">@color/md_pink_500</item>
-        <item name="senderColor1">@color/md_purple_500</item>
-        <item name="senderColor2">@color/md_red_500</item>
-        <item name="senderColor3">@color/md_green_500</item>
-        <item name="senderColor4">@color/md_cyan_500</item>
-        <item name="senderColor5">@color/md_deep_purple_500</item>
-        <item name="senderColor6">@color/md_amber_500</item>
-        <item name="senderColor7">@color/md_blue_500</item>
-        <item name="senderColor8">@color/md_pink_500</item>
-        <item name="senderColor9">@color/md_purple_500</item>
-        <item name="senderColorA">@color/md_red_500</item>
-        <item name="senderColorB">@color/md_green_500</item>
-        <item name="senderColorC">@color/md_cyan_500</item>
-        <item name="senderColorD">@color/md_deep_purple_500</item>
-        <item name="senderColorE">@color/md_amber_500</item>
-        <item name="senderColorF">@color/md_blue_500</item>
-
-        <item name="mircColor0">#f2f2f2</item>
-        <item name="mircColor1">#2c2c2c</item>
-        <item name="mircColor2">#2467be</item>
-        <item name="mircColor3">#568a34</item>
-        <item name="mircColor4">#ec5354</item>
-        <item name="mircColor5">#c3282d</item>
-        <item name="mircColor6">#6a2398</item>
-        <item name="mircColor7">#fc8e23</item>
-        <item name="mircColor8">#fc9f25</item>
-        <item name="mircColor9">#8cc251</item>
-        <item name="mircColorA">#17838e</item>
-        <item name="mircColorB">#39c6d9</item>
-        <item name="mircColorC">#6bb6f4</item>
-        <item name="mircColorD">#b96ac6</item>
-        <item name="mircColorE">#545454</item>
-        <item name="mircColorF">#e0e0e0</item>
-
-        <item name="colorForeground">@color/md_dark_primary_text</item>
-        <item name="colorForegroundHighlight">@color/md_dark_primary_text</item>
-        <item name="colorForegroundSecondary">@color/md_dark_secondary</item>
-        <item name="colorForegroundAction">#7986cb</item>
-
-        <item name="colorBackground">@color/md_dark_background</item>
-        <item name="colorBackgroundHighlight">#ff8811</item>
-        <item name="colorBackgroundSecondary">@android:color/transparent</item>
-        <item name="colorBackgroundCard">@color/md_dark_cards</item>
-
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
-
     <style name="Quassel_Light" parent="AppTheme.Light">
         <item name="senderColor0">#e90d7f</item>
         <item name="senderColor1">#8e55e9</item>
@@ -160,6 +60,7 @@
         <item name="colorForegroundHighlight">@color/md_light_primary_text</item>
         <item name="colorForegroundSecondary">@color/md_light_secondary</item>
         <item name="colorForegroundAction">#1a237e</item>
+        <item name="colorForegroundError">#800000</item>
 
         <item name="colorBackground">@color/md_light_background</item>
         <item name="colorBackgroundHighlight">#ff8811</item>
@@ -210,6 +111,7 @@
         <item name="colorForegroundHighlight">@color/md_dark_primary_text</item>
         <item name="colorForegroundSecondary">@color/md_dark_secondary</item>
         <item name="colorForegroundAction">#7986cb</item>
+        <item name="colorForegroundError">#800000</item>
 
         <item name="colorBackground">@color/md_dark_background</item>
         <item name="colorBackgroundHighlight">#ff8811</item>
@@ -266,6 +168,7 @@
         <item name="colorForegroundHighlight">#839495</item>
         <item name="colorForegroundSecondary">#576A66</item>
         <item name="colorForegroundAction">#268BD2</item>
+        <item name="colorForegroundError">#B00000</item>
 
         <item name="colorBackground">#FDF6E3</item>
         <item name="colorBackgroundHighlight">#268bd2</item>
@@ -321,6 +224,7 @@
         <item name="colorForegroundHighlight">#839495</item>
         <item name="colorForegroundSecondary">#576A66</item>
         <item name="colorForegroundAction">#268BD2</item>
+        <item name="colorForegroundError">#B00000</item>
 
         <item name="colorBackground">#002B36</item>
         <item name="colorBackgroundHighlight">#268bd2</item>