diff --git a/app/build.gradle b/app/build.gradle
index 7075e8a67857ee9cc1840553ef067159741f2bda..9ec02a7ea47771269300db9476813a2196544b3e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -89,6 +89,9 @@ android {
     dataBinding {
         enabled = true
     }
+    defaultConfig {
+        vectorDrawables.useSupportLibrary = true
+    }
     buildTypes {
         release {
             minifyEnabled true
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 93d2633799940040281e1ecf925c30b88b172ea9..cfb07f52d855f40d7651c19249297cd712770f8e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -102,6 +102,20 @@
             android:parentActivityName=".ui.coresettings.network.NetworkListActivity"
             android:theme="@style/AppTheme.Light" />
 
+        <activity
+            android:name=".ui.coresettings.network.server.NetworkServerListActivity"
+            android:label="Edit NetworkServers"
+            android:launchMode="singleTask"
+            android:parentActivityName=".ui.coresettings.network.NetworkEditActivity"
+            android:theme="@style/AppTheme.Light"/>
+
+        <activity
+            android:name=".ui.coresettings.network.server.NetworkServerEditActivity"
+            android:label="Edit NetworkServer"
+            android:launchMode="singleTask"
+            android:parentActivityName=".ui.coresettings.network.server.NetworkServerListActivity"
+            android:theme="@style/AppTheme.Light"/>
+
         <activity
             android:name=".ui.setup.AccountSetupActivity"
             android:label="Account Setup"
diff --git a/app/src/main/java/de/kuschku/libquassel/client/AClient.java b/app/src/main/java/de/kuschku/libquassel/client/AClient.java
index 8d78c74568a374431ea9daf10de66cd106310836..74d546fd3d648766b11fc0ffb8aeca3f66e5637b 100644
--- a/app/src/main/java/de/kuschku/libquassel/client/AClient.java
+++ b/app/src/main/java/de/kuschku/libquassel/client/AClient.java
@@ -24,12 +24,14 @@ package de.kuschku.libquassel.client;
 import android.support.annotation.NonNull;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
 import de.kuschku.libquassel.functions.types.HandshakeFunction;
 import de.kuschku.libquassel.objects.types.ClientLogin;
 import de.kuschku.libquassel.objects.types.Command;
+import de.kuschku.libquassel.primitives.QMetaType;
 import de.kuschku.libquassel.primitives.types.BufferInfo;
 import de.kuschku.libquassel.primitives.types.QVariant;
 import de.kuschku.libquassel.syncables.types.SyncableObject;
@@ -72,7 +74,7 @@ public abstract class AClient<T extends AClient<T>> extends SyncableObject<T> im
 
     @Override
     public void createNetwork(NetworkInfo info, List<String> persistentChannels) {
-        smartRpc("createNetwork(NetworkInfo,QStringList)", info, persistentChannels);
+        rpc("2createNetwork(NetworkInfo,QStringList)", Arrays.asList(new QVariant<>(info), new QVariant<>(QMetaType.Type.QStringList, persistentChannels)));
     }
 
     @Override
diff --git a/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java b/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java
index ca33f53b937ecb00cb64f6200a02e299b41aa605..89f9257527a576715e44579c2a3507dbc5be9559 100644
--- a/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java
+++ b/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java
@@ -38,6 +38,12 @@ public class IdentityManager {
     private final ObservableSortedList<QIdentity> identityList = new ObservableSortedList<>(QIdentity.class, new ObservableSortedList.ItemComparator<QIdentity>() {
         @Override
         public int compare(QIdentity o1, QIdentity o2) {
+            if (o1 == null && o2 == null)
+                return 0;
+            if (o1 == null)
+                return 1;
+            if (o2 == null)
+                return -1;
             return o1.id() - o2.id();
         }
 
diff --git a/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java b/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java
index 84351a543ae69fb4a2feec62cb2bb13e0714620a..fe93036a7d78f2c1708a67eeb11b80abcf3a89c3 100644
--- a/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java
+++ b/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java
@@ -92,6 +92,7 @@ public class NetworkManager extends Observable {
 
     public void createNetwork(@IntRange(from = 0) int networkId) {
         createNetwork(Network.create(networkId));
+        client.requestInitObject("Network", String.valueOf(networkId));
     }
 
     public void createNetwork(@NonNull QNetwork network) {
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/NetworkServerSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/NetworkServerSerializer.java
index 3aca99af8340be584b5fc33d955377b09ffa54a1..80d43e45474fd57b82fc42e6a276dbe56d41a5c0 100644
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/NetworkServerSerializer.java
+++ b/app/src/main/java/de/kuschku/libquassel/objects/serializers/NetworkServerSerializer.java
@@ -51,17 +51,17 @@ public class NetworkServerSerializer implements ObjectSerializer<NetworkServer>
     public Map<String, QVariant<Object>> toVariantMap(@NonNull NetworkServer data) {
         final Map<String, QVariant<Object>> map = new HashMap<>();
 
-        map.put("UseSSL", new QVariant<>(QMetaType.Type.Bool, data.UseSSL));
+        map.put("UseSSL", new QVariant<>(QMetaType.Type.Bool, data.useSSL));
         map.put("sslVersion", new QVariant<>(QMetaType.Type.Int, data.sslVersion));
-        map.put("Host", new QVariant<>(QMetaType.Type.QString, data.Host));
-        map.put("Port", new QVariant<>(QMetaType.Type.Int, data.Port));
-        map.put("Password", new QVariant<>(QMetaType.Type.QString, data.Password));
-        map.put("UseProxy", new QVariant<>(QMetaType.Type.Bool, data.UseProxy));
-        map.put("ProxyType", new QVariant<>(QMetaType.Type.Int, data.ProxyType));
-        map.put("ProxyHost", new QVariant<>(QMetaType.Type.QString, data.ProxyHost));
-        map.put("ProxyPort", new QVariant<>(QMetaType.Type.Int, data.ProxyPort));
-        map.put("ProxyUser", new QVariant<>(QMetaType.Type.QString, data.ProxyUser));
-        map.put("ProxyPass", new QVariant<>(QMetaType.Type.QString, data.ProxyPass));
+        map.put("Host", new QVariant<>(QMetaType.Type.QString, data.host));
+        map.put("Port", new QVariant<>(QMetaType.Type.Int, data.port));
+        map.put("Password", new QVariant<>(QMetaType.Type.QString, data.password));
+        map.put("UseProxy", new QVariant<>(QMetaType.Type.Bool, data.useProxy));
+        map.put("ProxyType", new QVariant<>(QMetaType.Type.Int, data.proxyType.id));
+        map.put("ProxyHost", new QVariant<>(QMetaType.Type.QString, data.proxyHost));
+        map.put("ProxyPort", new QVariant<>(QMetaType.Type.Int, data.proxyPort));
+        map.put("ProxyUser", new QVariant<>(QMetaType.Type.QString, data.proxyUser));
+        map.put("ProxyPass", new QVariant<>(QMetaType.Type.QString, data.proxyPass));
         return map;
     }
 
@@ -81,7 +81,7 @@ public class NetworkServerSerializer implements ObjectSerializer<NetworkServer>
                 (int) map.get("Port").data,
                 (String) map.get("Password").data,
                 (boolean) map.get("UseProxy").data,
-                (int) map.get("ProxyType").data,
+                NetworkServer.ProxyType.fromId((int) map.get("ProxyType").data),
                 (String) map.get("ProxyHost").data,
                 (int) map.get("ProxyPort").data,
                 (String) map.get("ProxyUser").data,
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/NetworkServer.java b/app/src/main/java/de/kuschku/libquassel/objects/types/NetworkServer.java
index 1e6b09efa468b77820aa0692293581105a369cb6..8f3d772862b4a532a48f1464a3c329208d72db0f 100644
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/NetworkServer.java
+++ b/app/src/main/java/de/kuschku/libquassel/objects/types/NetworkServer.java
@@ -25,55 +25,79 @@ import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 
 public class NetworkServer {
-    public final boolean UseSSL;
+    public final boolean useSSL;
     public final int sslVersion;
 
     @NonNull
-    public final String Host;
-    public final int Port;
+    public final String host;
+    public final int port;
     @Nullable
-    public final String Password;
+    public final String password;
 
-    public final boolean UseProxy;
-    public final int ProxyType;
+    public final boolean useProxy;
+    public final ProxyType proxyType;
     @Nullable
-    public final String ProxyHost;
-    public final int ProxyPort;
+    public final String proxyHost;
+    public final int proxyPort;
     @Nullable
-    public final String ProxyUser;
+    public final String proxyUser;
     @Nullable
-    public final String ProxyPass;
+    public final String proxyPass;
 
     public NetworkServer(boolean useSSL, int sslVersion, @NonNull String host, int port, @Nullable String password, boolean useProxy,
-                         int proxyType, @Nullable String proxyHost, int proxyPort, @Nullable String proxyUser, @Nullable String proxyPass) {
-        this.UseSSL = useSSL;
+                         ProxyType proxyType, @Nullable String proxyHost, int proxyPort, @Nullable String proxyUser, @Nullable String proxyPass) {
+        this.useSSL = useSSL;
         this.sslVersion = sslVersion;
-        this.Host = host;
-        this.Port = port;
-        this.Password = password;
-        this.UseProxy = useProxy;
-        this.ProxyType = proxyType;
-        this.ProxyHost = proxyHost;
-        this.ProxyPort = proxyPort;
-        this.ProxyUser = proxyUser;
-        this.ProxyPass = proxyPass;
+        this.host = host;
+        this.port = port;
+        this.password = password;
+        this.useProxy = useProxy;
+        this.proxyType = proxyType;
+        this.proxyHost = proxyHost;
+        this.proxyPort = proxyPort;
+        this.proxyUser = proxyUser;
+        this.proxyPass = proxyPass;
     }
 
     @NonNull
     @Override
     public String toString() {
         return "NetworkServer{" +
-                "UseSSL=" + UseSSL +
+                "UseSSL=" + useSSL +
                 ", sslVersion=" + sslVersion +
-                ", Host='" + Host + '\'' +
-                ", Port=" + Port +
-                ", Password='" + Password + '\'' +
-                ", UseProxy=" + UseProxy +
-                ", ProxyType=" + ProxyType +
-                ", ProxyHost='" + ProxyHost + '\'' +
-                ", ProxyPort=" + ProxyPort +
-                ", ProxyUser='" + ProxyUser + '\'' +
-                ", ProxyPass='" + ProxyPass + '\'' +
+                ", Host='" + host + '\'' +
+                ", Port=" + port +
+                ", Password='" + password + '\'' +
+                ", UseProxy=" + useProxy +
+                ", ProxyType=" + proxyType +
+                ", ProxyHost='" + proxyHost + '\'' +
+                ", ProxyPort=" + proxyPort +
+                ", ProxyUser='" + proxyUser + '\'' +
+                ", ProxyPass='" + proxyPass + '\'' +
                 '}';
     }
+
+    public enum ProxyType {
+        DefaultProxy(0),
+        Socks5Proxy(1),
+        HttpProxy(3);
+
+        public final int id;
+
+        ProxyType(int id) {
+            this.id = id;
+        }
+
+        public static ProxyType fromId(int id) {
+            switch (id) {
+                default:
+                case 0:
+                    return DefaultProxy;
+                case 1:
+                    return Socks5Proxy;
+                case 3:
+                    return HttpProxy;
+            }
+        }
+    }
 }
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringListSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringListSerializer.java
index 030cd72a3eefe9831fc617591dab7876cc3e1b2a..710683412bb5fa24e65b3fcd87082182d6dd3aa6 100644
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringListSerializer.java
+++ b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringListSerializer.java
@@ -22,6 +22,7 @@
 package de.kuschku.libquassel.primitives.serializers;
 
 import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -42,10 +43,14 @@ public class StringListSerializer implements PrimitiveSerializer<List<String>> {
     }
 
     @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final List<String> data) throws IOException {
-        IntSerializer.get().serialize(channel, data.size());
-        for (String element : data) {
-            StringSerializer.get().serialize(channel, element);
+    public void serialize(@NonNull final ByteChannel channel, @Nullable final List<String> data) throws IOException {
+        if (data == null) {
+            IntSerializer.get().serialize(channel, 0);
+        } else {
+            IntSerializer.get().serialize(channel, data.size());
+            for (String element : data) {
+                StringSerializer.get().serialize(channel, element);
+            }
         }
     }
 
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewConfigSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewConfigSerializer.java
index 58c63c43033b0008b3c6cbe626c2fbbcf18dc8c1..f240252795cc2c48c665722d223bf88200cc8caf 100644
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewConfigSerializer.java
+++ b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewConfigSerializer.java
@@ -33,6 +33,7 @@ import de.kuschku.libquassel.functions.types.UnpackedFunction;
 import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
 import de.kuschku.libquassel.primitives.types.QVariant;
 import de.kuschku.libquassel.syncables.types.impl.BufferViewConfig;
+import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
 
 @SuppressWarnings({"unchecked", "ConstantConditions"})
 public class BufferViewConfigSerializer implements ObjectSerializer<BufferViewConfig> {
@@ -60,7 +61,7 @@ public class BufferViewConfigSerializer implements ObjectSerializer<BufferViewCo
         map.put("disableDecoration", new QVariant<>(data.disableDecoration()));
         map.put("addNewBuffersAutomatically", new QVariant<>(data.addNewBuffersAutomatically()));
         map.put("networkId", new QVariant<>("NetworkId", data.networkId()));
-        map.put("minimumActivity", new QVariant<>(data.minimumActivity()));
+        map.put("minimumActivity", new QVariant<>(data.minimumActivity().id));
         map.put("hideInactiveBuffers", new QVariant<>(data.hideInactiveBuffers()));
         map.put("RemovedBuffers", new QVariant<>(data.removedBuffers()));
         return map;
@@ -85,7 +86,7 @@ public class BufferViewConfigSerializer implements ObjectSerializer<BufferViewCo
                 (boolean) map.get("disableDecoration").data,
                 (boolean) map.get("addNewBuffersAutomatically").data,
                 (int) map.get("networkId").data,
-                (int) map.get("minimumActivity").data,
+                QBufferViewConfig.MinimumActivity.fromId((int) map.get("minimumActivity").data),
                 (boolean) map.get("hideInactiveBuffers").data,
                 (List<Integer>) map.get("RemovedBuffers").data
         );
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewConfig.java
index ebb98ef1d7808084263a36336c6a18c9dd005db5..0eff25fce838dde4e2b140854e05bdaa71801c04 100644
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewConfig.java
+++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewConfig.java
@@ -59,9 +59,9 @@ public abstract class ABufferViewConfig extends SyncableObject<QBufferViewConfig
     }
 
     @Override
-    public void setMinimumActivity(int activity) {
+    public void setMinimumActivity(MinimumActivity activity) {
         _setMinimumActivity(activity);
-        syncVar("setMinimumActivity", activity);
+        syncVar("setMinimumActivity", activity.id);
     }
 
     @Override
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java
index bef5cf3544c26094421c42011eb2db3332387aaf..31beb359869d38a10dfd17a85941e805d5dc6af2 100644
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java
+++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java
@@ -62,11 +62,11 @@ public class BufferViewConfig extends ABufferViewConfig {
     private boolean sortAlphabetically;
     private boolean disableDecoration;
     private int allowedBufferTypes;
-    private int minimumActivity;
+    private MinimumActivity minimumActivity;
     private boolean hideInactiveBuffers;
     private boolean hideInactiveNetworks;
 
-    public BufferViewConfig(String bufferViewName, @NonNull List<Integer> temporarilyRemovedBuffers, boolean hideInactiveNetworks, @NonNull List<Integer> buffers, int allowedBufferTypes, boolean sortAlphabetically, boolean disableDecoration, boolean addNewBuffersAutomatically, int networkId, int minimumActivity, boolean hideInactiveBuffers, @NonNull List<Integer> removedBuffers) {
+    public BufferViewConfig(String bufferViewName, @NonNull List<Integer> temporarilyRemovedBuffers, boolean hideInactiveNetworks, @NonNull List<Integer> buffers, int allowedBufferTypes, boolean sortAlphabetically, boolean disableDecoration, boolean addNewBuffersAutomatically, int networkId, MinimumActivity minimumActivity, boolean hideInactiveBuffers, @NonNull List<Integer> removedBuffers) {
         this.bufferViewName = bufferViewName;
         this.temporarilyRemovedBuffers = new ObservableSet<>(temporarilyRemovedBuffers);
         this.hideInactiveNetworks = hideInactiveNetworks;
@@ -101,7 +101,7 @@ public class BufferViewConfig extends ABufferViewConfig {
                 false,
                 true,
                 -1,
-                0,
+                MinimumActivity.NONE,
                 false,
                 Collections.emptyList()
         );
@@ -252,12 +252,12 @@ public class BufferViewConfig extends ABufferViewConfig {
     }
 
     @Override
-    public int minimumActivity() {
+    public MinimumActivity minimumActivity() {
         return minimumActivity;
     }
 
     @Override
-    public void _setMinimumActivity(int activity) {
+    public void _setMinimumActivity(MinimumActivity activity) {
         this.minimumActivity = activity;
         _update();
     }
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewConfig.java
index d7bea989c721c4035a269fe3c72d0d53341ee634..2377b60bc43ba00044a6ac7bdff694c3396d5b32 100644
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewConfig.java
+++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewConfig.java
@@ -79,12 +79,12 @@ public interface QBufferViewConfig extends QSyncableObject<QBufferViewConfig> {
 
     void _setAllowedBufferTypes(int bufferTypes);
 
-    int minimumActivity();
+    MinimumActivity minimumActivity();
 
     @Synced
-    void setMinimumActivity(int activity);
+    void setMinimumActivity(MinimumActivity activity);
 
-    void _setMinimumActivity(int activity);
+    void _setMinimumActivity(MinimumActivity activity);
 
     boolean hideInactiveBuffers();
 
@@ -180,4 +180,31 @@ public interface QBufferViewConfig extends QSyncableObject<QBufferViewConfig> {
         TEMP_HIDDEN,
         PERM_HIDDEN
     }
+
+    enum MinimumActivity {
+        NONE(0),
+        OTHER(1),
+        MESSAGE(2),
+        HIGHLIGHT(4);
+
+        public final int id;
+
+        MinimumActivity(int id) {
+            this.id = id;
+        }
+
+        public static MinimumActivity fromId(int id) {
+            switch (id) {
+                default:
+                case 0:
+                    return NONE;
+                case 1:
+                    return OTHER;
+                case 2:
+                    return MESSAGE;
+                case 4:
+                    return HIGHLIGHT;
+            }
+        }
+    }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/service/ClientBackgroundThread.java b/app/src/main/java/de/kuschku/quasseldroid_ng/service/ClientBackgroundThread.java
index b66c9f5cbd54d901af12b33246825360d2f3250f..e3c1d3eaa43359ea6b36a6c4c038a1bc0be685c6 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/service/ClientBackgroundThread.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/service/ClientBackgroundThread.java
@@ -29,6 +29,9 @@ import org.greenrobot.eventbus.Subscribe;
 
 import java.io.IOException;
 import java.net.ConnectException;
+import java.net.SocketException;
+
+import javax.net.ssl.SSLException;
 
 import de.kuschku.libquassel.BusProvider;
 import de.kuschku.libquassel.QuasselClient;
@@ -106,7 +109,7 @@ public class ClientBackgroundThread implements Runnable {
 
     @Subscribe(sticky = true)
     public void onEvent(GeneralErrorEvent event) {
-        if (!(event.exception instanceof ConnectException))
+        if (!(event.exception instanceof ConnectException) && !(event.exception instanceof SSLException) && !(event.exception instanceof SocketException))
             ACRA.getErrorReporter().handleSilentException(event.exception);
 
         event.exception.printStackTrace();
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java
index 6ea7870fb48f694b1aa3b42c1ddc6cd1a92896fb..3091ec2b6f5b2bb0949e08166a849d91982a20e0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java
@@ -25,6 +25,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
+import android.support.v7.app.AppCompatDelegate;
 
 import de.kuschku.libquassel.localtypes.orm.ConnectedDatabase;
 import de.kuschku.quasseldroid_ng.ui.chat.MainActivity;
@@ -33,6 +34,10 @@ import de.kuschku.quasseldroid_ng.ui.setup.AccountSelectActivity;
 import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
 
 public class LoginActivity extends AppCompatActivity {
+    static {
+        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
+    }
+
     private AppContext context = new AppContext();
 
     private boolean firstStart = true;
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 4a825e1259d7246a7fca1c06ec96d06373815ef6..f973ec221175747124a1c9976a41d6656f4b6bfd 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
@@ -92,9 +92,11 @@ import de.kuschku.quasseldroid_ng.ui.settings.SettingsActivity;
 import de.kuschku.quasseldroid_ng.ui.setup.CoreSetupActivity;
 import de.kuschku.util.accounts.Account;
 import de.kuschku.util.accounts.AccountManager;
+import de.kuschku.util.annotationbind.AutoBinder;
 import de.kuschku.util.certificates.CertificateUtils;
 import de.kuschku.util.certificates.SQLiteCertificateManager;
 import de.kuschku.util.servicebound.BoundActivity;
+import de.kuschku.util.ui.MenuTint;
 import rx.android.schedulers.AndroidSchedulers;
 
 import static de.kuschku.util.AndroidAssert.assertNotNull;
@@ -168,6 +170,7 @@ public class MainActivity extends BoundActivity {
         chatList.setAdapter(chatListAdapter);
 
         chatListToolbar.inflateMenu(R.menu.chatlist);
+        MenuTint.colorIcons(chatListToolbar.getMenu(), AutoBinder.obtainColor(R.attr.colorFill, chatListToolbar.getContext().getTheme()));
         chatListToolbar.setOnMenuItemClickListener(item -> {
             switch (item.getItemId()) {
                 case R.id.action_show_all: {
@@ -378,9 +381,10 @@ public class MainActivity extends BoundActivity {
 
     @Override
     public void onBackPressed() {
-        if (!(currentFragment instanceof ChatFragment) || ((ChatFragment) currentFragment).onBackPressed()) {
-            super.onBackPressed();
+        if ((currentFragment instanceof ChatFragment && ((ChatFragment) currentFragment).onBackPressed())) {
+            return;
         }
+        super.onBackPressed();
     }
 
     protected void reconnect() {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java
index e66a61dee82781048f1bb4feb9367d8e550c6bc5..30e9041a15df3dfcfb0a0c3bfcb9e7809720a689 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java
@@ -318,7 +318,9 @@ public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkVi
             actionModeHandler.start();
 
         actionModeHandler.toggle(buffer);
-        bufferViewHolderMap.get(buffer.getInfo().id).setChecked(actionModeHandler.isChecked(buffer));
+        BufferViewHolder bufferViewHolder = bufferViewHolderMap.get(buffer.getInfo().id);
+        if (bufferViewHolder != null)
+            bufferViewHolder.setChecked(actionModeHandler.isChecked(buffer));
         return false;
     }
 
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 3b8a6301b7dfa8b3407e13f5d4c52ba24c920da4..29d9e7401541a3cf8d2c0d3bec3ce24a40a89512 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
@@ -68,6 +68,7 @@ public class ChatFragment extends BoundFragment {
 
     private MessageAdapter messageAdapter;
     private LinearLayoutManager layoutManager;
+    private SlidingPanelHandler slidingPanelHandler;
     private boolean loading = false;
 
     private int recyclerViewMeasuredHeight = 0;
@@ -77,7 +78,7 @@ public class ChatFragment extends BoundFragment {
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.fragment_chat, container, false);
         ButterKnife.bind(this, view);
-        new SlidingPanelHandler(getActivity(), sliderMain, context);
+        slidingPanelHandler = new SlidingPanelHandler(getActivity(), sliderMain, context);
 
         assertNotNull(messages);
 
@@ -109,12 +110,7 @@ public class ChatFragment extends BoundFragment {
             }
         });
 
-        scrollDown.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                messages.smoothScrollToPosition(0);
-            }
-        });
+        scrollDown.setOnClickListener(view1 -> messages.smoothScrollToPosition(0));
 
         return view;
     }
@@ -158,10 +154,14 @@ public class ChatFragment extends BoundFragment {
 
     public boolean onBackPressed() {
         if (sliderMain.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
-            sliderMain.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
-            return false;
+            if (slidingPanelHandler.onBackPressed()) {
+                return true;
+            } else {
+                sliderMain.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
+                return true;
+            }
         } else {
-            return true;
+            return false;
         }
     }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/SlidingPanelHandler.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/SlidingPanelHandler.java
index ef37d40daade5e85c5d116192358039beb4bb3c3..fe9a0158e857ad79fcea7c4ccf5666f9e946dd30 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/SlidingPanelHandler.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/SlidingPanelHandler.java
@@ -48,6 +48,8 @@ import de.kuschku.quasseldroid_ng.R;
 import de.kuschku.quasseldroid_ng.ui.editor.AdvancedEditor;
 import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
 import de.kuschku.quasseldroid_ng.ui.theme.ThemeUtil;
+import de.kuschku.util.annotationbind.AutoBinder;
+import de.kuschku.util.ui.MenuTint;
 
 import static de.kuschku.util.AndroidAssert.assertNotNull;
 
@@ -94,6 +96,9 @@ public class SlidingPanelHandler {
 
     private void setupFormattingMenu(Activity activity) {
         activity.getMenuInflater().inflate(R.menu.formatting, formattingMenu.getMenu());
+
+        MenuTint.colorIcons(formattingMenu.getMenu(), AutoBinder.obtainColor(R.attr.colorFill, formattingToolbar.getContext().getTheme()));
+
         formattingMenu.setOnMenuItemClickListener(item -> {
             switch (item.getItemId()) {
                 case R.id.format_bold:
@@ -108,6 +113,47 @@ public class SlidingPanelHandler {
                 case R.id.action_history:
                     openHistory();
                     return true;
+
+                case R.id.fill_clear:
+                    editor.toggleBackground(-1);
+                    return true;
+                case R.id.fill_mircColor0: editor.toggleBackground(0x0); return true;
+                case R.id.fill_mircColor1: editor.toggleBackground(0x1); return true;
+                case R.id.fill_mircColor2: editor.toggleBackground(0x2); return true;
+                case R.id.fill_mircColor3: editor.toggleBackground(0x3); return true;
+                case R.id.fill_mircColor4: editor.toggleBackground(0x4); return true;
+                case R.id.fill_mircColor5: editor.toggleBackground(0x5); return true;
+                case R.id.fill_mircColor6: editor.toggleBackground(0x6); return true;
+                case R.id.fill_mircColor7: editor.toggleBackground(0x7); return true;
+                case R.id.fill_mircColor8: editor.toggleBackground(0x8); return true;
+                case R.id.fill_mircColor9: editor.toggleBackground(0x9); return true;
+                case R.id.fill_mircColorA: editor.toggleBackground(0xA); return true;
+                case R.id.fill_mircColorB: editor.toggleBackground(0xB); return true;
+                case R.id.fill_mircColorC: editor.toggleBackground(0xC); return true;
+                case R.id.fill_mircColorD: editor.toggleBackground(0xD); return true;
+                case R.id.fill_mircColorE: editor.toggleBackground(0xE); return true;
+                case R.id.fill_mircColorF: editor.toggleBackground(0xF); return true;
+
+                case R.id.paint_clear:
+                    editor.toggleForeground(-1);
+                    return true;
+                case R.id.paint_mircColor0: editor.toggleForeground(0x0); return true;
+                case R.id.paint_mircColor1: editor.toggleForeground(0x1); return true;
+                case R.id.paint_mircColor2: editor.toggleForeground(0x2); return true;
+                case R.id.paint_mircColor3: editor.toggleForeground(0x3); return true;
+                case R.id.paint_mircColor4: editor.toggleForeground(0x4); return true;
+                case R.id.paint_mircColor5: editor.toggleForeground(0x5); return true;
+                case R.id.paint_mircColor6: editor.toggleForeground(0x6); return true;
+                case R.id.paint_mircColor7: editor.toggleForeground(0x7); return true;
+                case R.id.paint_mircColor8: editor.toggleForeground(0x8); return true;
+                case R.id.paint_mircColor9: editor.toggleForeground(0x9); return true;
+                case R.id.paint_mircColorA: editor.toggleForeground(0xA); return true;
+                case R.id.paint_mircColorB: editor.toggleForeground(0xB); return true;
+                case R.id.paint_mircColorC: editor.toggleForeground(0xC); return true;
+                case R.id.paint_mircColorD: editor.toggleForeground(0xD); return true;
+                case R.id.paint_mircColorE: editor.toggleForeground(0xE); return true;
+                case R.id.paint_mircColorF: editor.toggleForeground(0xF); return true;
+
                 default:
                     return false;
             }
@@ -221,4 +267,13 @@ public class SlidingPanelHandler {
     private void openHistory() {
         slidingLayoutHistory.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
     }
+
+    public boolean onBackPressed() {
+        if (slidingLayoutHistory.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
+            slidingLayoutHistory.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
+            return true;
+        } else {
+            return false;
+        }
+    }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListCreateActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListCreateActivity.java
index 6fcaf8ee0ba8677d2739086ce3efab515308d755..67f6280fa76e624db2921cf90dc9628ab58802aa 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListCreateActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListCreateActivity.java
@@ -39,6 +39,7 @@ import de.kuschku.libquassel.syncables.types.impl.BufferViewConfig;
 import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
 import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
 import de.kuschku.quasseldroid_ng.R;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.NetworkSpinnerAdapter;
 import de.kuschku.util.servicebound.BoundActivity;
 
 public class ChatListCreateActivity extends BoundActivity {
@@ -73,7 +74,8 @@ public class ChatListCreateActivity extends BoundActivity {
     @Bind(R.id.minimumActivity)
     Spinner minimumActivity;
 
-    QBufferViewManager bufferViewManager;
+    private QBufferViewManager bufferViewManager;
+    private NetworkSpinnerAdapter networkSpinnerAdapter;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -82,11 +84,19 @@ public class ChatListCreateActivity extends BoundActivity {
         setContentView(R.layout.activity_chatlist_edit);
         ButterKnife.bind(this);
 
+        networkSpinnerAdapter = new NetworkSpinnerAdapter(this);
+        network.setAdapter(networkSpinnerAdapter);
+
+        minimumActivity.setAdapter(new MinimumActivityAdapter(context));
+
         setSupportActionBar(toolbar);
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 
-        //network
-        //minimumActivity
+        initializeDefaults();
+    }
+
+    private void initializeDefaults() {
+
     }
 
     @Override
@@ -110,7 +120,7 @@ public class ChatListCreateActivity extends BoundActivity {
                             false,
                             true,
                             0,
-                            0,
+                            QBufferViewConfig.MinimumActivity.NONE,
                             false,
                             Collections.<Integer>emptyList()
                     );
@@ -122,6 +132,8 @@ public class ChatListCreateActivity extends BoundActivity {
                     config._setHideInactiveNetworks(this.hideInactiveNetworks.isChecked());
                     config._setAddNewBuffersAutomatically(this.addAutomatically.isChecked());
                     config._setSortAlphabetically(this.sortAlphabetically.isChecked());
+                    config._setNetworkId((int) network.getSelectedItemId());
+                    config._setMinimumActivity(QBufferViewConfig.MinimumActivity.fromId((int) minimumActivity.getSelectedItemId()));
 
                     bufferViewManager.createBufferView(config);
                 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListEditActivity.java
index d7403d5fd833d043e9717b9da7e02a7bd3922a69..3671bb75ed6c7ffc11a33c3fe8ef7a46a0945b7b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListEditActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListEditActivity.java
@@ -73,9 +73,10 @@ public class ChatListEditActivity extends BoundActivity {
     @Bind(R.id.minimumActivity)
     Spinner minimumActivity;
 
-    int id;
+    private int id;
     private QBufferViewConfig config;
     private NetworkSpinnerAdapter networkSpinnerAdapter;
+    private MinimumActivityAdapter minimumActivityAdapter;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -95,6 +96,9 @@ public class ChatListEditActivity extends BoundActivity {
         networkSpinnerAdapter = new NetworkSpinnerAdapter(this);
         network.setAdapter(networkSpinnerAdapter);
 
+        minimumActivityAdapter = new MinimumActivityAdapter(context);
+        minimumActivity.setAdapter(minimumActivityAdapter);
+
         setSupportActionBar(toolbar);
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
     }
@@ -117,6 +121,9 @@ public class ChatListEditActivity extends BoundActivity {
                     if (config.networkId() != (int) network.getSelectedItemId())
                         config.setNetworkId((int) network.getSelectedItemId());
 
+                    if (config.minimumActivity() != QBufferViewConfig.MinimumActivity.fromId((int) minimumActivity.getSelectedItemId()))
+                        config.setMinimumActivity(QBufferViewConfig.MinimumActivity.fromId((int) minimumActivity.getSelectedItemId()));
+
                     int allowedBufferTypes = config.allowedBufferTypes();
                     config.setBufferTypeAllowed(BufferInfo.Type.CHANNEL, this.showChannels.isChecked());
                     config.setBufferTypeAllowed(BufferInfo.Type.QUERY, this.showQueries.isChecked());
@@ -166,7 +173,7 @@ public class ChatListEditActivity extends BoundActivity {
             hideInactiveNetworks.setChecked(config.hideInactiveNetworks());
             addAutomatically.setChecked(config.addNewBuffersAutomatically());
             sortAlphabetically.setChecked(config.sortAlphabetically());
-            //minimumActivity
+            minimumActivity.setSelection(minimumActivityAdapter.indexOf(config.minimumActivity()));
         }
     }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListListActivity.java
index bb39606ab0d2997ec70b23f22a59e0a3451911e2..73723f657f793aa31049a2e0ec65c61c450ec45a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListListActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListListActivity.java
@@ -25,7 +25,6 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.AppCompatImageButton;
 import android.support.v7.widget.DefaultItemAnimator;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -64,11 +63,6 @@ public class ChatListListActivity extends BoundActivity {
             startActivity(intent);
         }
     };
-    OnQBufferViewConfigDeleteListener deleteListener = config -> {
-        if (manager != null && config != null) {
-            manager.deleteBufferView(config.bufferViewId());
-        }
-    };
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -105,10 +99,6 @@ public class ChatListListActivity extends BoundActivity {
         void onClick(QBufferViewConfig config);
     }
 
-    interface OnQBufferViewConfigDeleteListener {
-        void onDelete(QBufferViewConfig config);
-    }
-
     private class ChatListAdapter extends RecyclerView.Adapter<ChatListViewHolder> {
         QBufferViewManager manager;
         AdapterUICallbackWrapper wrapper = new AdapterUICallbackWrapper(this);
@@ -146,16 +136,12 @@ public class ChatListListActivity extends BoundActivity {
         @Bind(R.id.chatlist_name)
         TextView name;
 
-        @Bind(R.id.chatlist_delete)
-        AppCompatImageButton delete;
-
         private QBufferViewConfig config;
 
         public ChatListViewHolder(View itemView) {
             super(itemView);
             ButterKnife.bind(this, itemView);
             itemView.setOnClickListener(view -> clickListener.onClick(config));
-            delete.setOnClickListener(view -> deleteListener.onDelete(config));
         }
 
         public void bind(QBufferViewConfig config) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/MinimumActivityAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/MinimumActivityAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..e0d86acf3f5b75316dd4c72e8dceeadb2496e3b4
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/MinimumActivityAdapter.java
@@ -0,0 +1,117 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.chatlist;
+
+import android.database.DataSetObserver;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.SpinnerAdapter;
+import android.widget.TextView;
+
+import java.util.Arrays;
+import java.util.List;
+
+import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
+import de.kuschku.quasseldroid_ng.R;
+import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
+
+class MinimumActivityAdapter implements SpinnerAdapter {
+    List<QBufferViewConfig.MinimumActivity> list = Arrays.asList(
+            QBufferViewConfig.MinimumActivity.NONE,
+            QBufferViewConfig.MinimumActivity.OTHER,
+            QBufferViewConfig.MinimumActivity.MESSAGE,
+            QBufferViewConfig.MinimumActivity.HIGHLIGHT
+    );
+    private AppContext context;
+
+    public MinimumActivityAdapter(AppContext context) {
+        this.context = context;
+    }
+
+    @Override
+    public View getDropDownView(int position, View convertView, ViewGroup parent) {
+        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
+        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
+        QBufferViewConfig.MinimumActivity minimumActivity = getItem(position);
+        view.setText(minimumActivity == null ? "" : context.themeUtil().translations.minimumActivity(minimumActivity));
+        return view;
+    }
+
+    @Override
+    public void registerDataSetObserver(DataSetObserver observer) {
+
+    }
+
+    @Override
+    public void unregisterDataSetObserver(DataSetObserver observer) {
+
+    }
+
+    @Override
+    public int getCount() {
+        return list.size();
+    }
+
+    @Override
+    public QBufferViewConfig.MinimumActivity getItem(int position) {
+        return list.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return getItem(position).id;
+    }
+
+    @Override
+    public boolean hasStableIds() {
+        return true;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
+        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
+        QBufferViewConfig.MinimumActivity minimumActivity = getItem(position);
+        view.setText(minimumActivity == null ? "" : context.themeUtil().translations.minimumActivity(minimumActivity));
+        return view;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return 0;
+    }
+
+    @Override
+    public int getViewTypeCount() {
+        return 1;
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return list.isEmpty();
+    }
+
+    public int indexOf(QBufferViewConfig.MinimumActivity minimumActivity) {
+        return list.indexOf(minimumActivity);
+    }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkCreateActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkCreateActivity.java
index 7df0ba42d81bafcb0b5987a478ecb661fb146742..4d0eb3deada47b217a23d9b12f0e7199be96bdfa 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkCreateActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkCreateActivity.java
@@ -23,29 +23,41 @@ package de.kuschku.quasseldroid_ng.ui.coresettings.network;
 
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.Parcelable;
 import android.support.annotation.Nullable;
 import android.support.v7.widget.SwitchCompat;
 import android.support.v7.widget.Toolbar;
+import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
-import android.view.View;
 import android.view.ViewGroup;
-import android.view.animation.Animation;
-import android.view.animation.Transformation;
+import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
 import android.widget.EditText;
 import android.widget.Spinner;
 
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
 import butterknife.Bind;
 import butterknife.ButterKnife;
+import de.kuschku.libquassel.objects.types.NetworkServer;
 import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
 import de.kuschku.quasseldroid_ng.R;
 import de.kuschku.quasseldroid_ng.ui.coresettings.identity.IdentitySpinnerAdapter;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.NetworkServerListActivity;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.NetworkServerSerializeHelper;
+import de.kuschku.util.backports.NumberHelper;
 import de.kuschku.util.servicebound.BoundActivity;
+import de.kuschku.util.ui.AnimationHelper;
 
 public class NetworkCreateActivity extends BoundActivity {
 
+    private static final int REQUEST_SERVER_LIST = 1;
+    private static final int REQUEST_PERFORM = 2;
+
     @Bind(R.id.toolbar)
     Toolbar toolbar;
 
@@ -59,6 +71,9 @@ public class NetworkCreateActivity extends BoundActivity {
     @Bind(R.id.rejoinChannels)
     CheckBox rejoinChannels;
 
+    @Bind(R.id.servers)
+    Button servers;
+
     @Bind(R.id.useCustomCodecs)
     SwitchCompat useCustomCodecs;
     @Bind(R.id.groupCustomCodecs)
@@ -101,60 +116,8 @@ public class NetworkCreateActivity extends BoundActivity {
 
     int id;
     IdentitySpinnerAdapter spinnerAdapter = new IdentitySpinnerAdapter();
-    private NetworkInfo networkInfo;
-
-    public static void expand(final ViewGroup v) {
-        v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        final int targetHeight = v.getMeasuredHeight();
-
-        // Older versions of android (pre API 21) cancel animations for views with a height of 0.
-        v.getLayoutParams().height = 1;
-        v.setVisibility(View.VISIBLE);
-        Animation a = new Animation() {
-            @Override
-            protected void applyTransformation(float interpolatedTime, Transformation t) {
-                v.getLayoutParams().height = interpolatedTime == 1
-                        ? ViewGroup.LayoutParams.WRAP_CONTENT
-                        : (int) (targetHeight * interpolatedTime);
-                v.setAlpha(interpolatedTime);
-                v.requestLayout();
-            }
 
-            @Override
-            public boolean willChangeBounds() {
-                return true;
-            }
-        };
-
-        // 1dp/ms
-        a.setDuration((int) (targetHeight / v.getContext().getResources().getDisplayMetrics().density));
-        v.startAnimation(a);
-    }
-
-    public static void collapse(final ViewGroup v) {
-        final int initialHeight = v.getMeasuredHeight();
-
-        Animation a = new Animation() {
-            @Override
-            protected void applyTransformation(float interpolatedTime, Transformation t) {
-                if (interpolatedTime == 1) {
-                    v.setVisibility(View.GONE);
-                } else {
-                    v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
-                    v.setAlpha(1 - interpolatedTime);
-                    v.requestLayout();
-                }
-            }
-
-            @Override
-            public boolean willChangeBounds() {
-                return true;
-            }
-        };
-
-        a.setDuration((int) (initialHeight / v.getContext().getResources().getDisplayMetrics().density));
-        v.startAnimation(a);
-    }
+    private List<NetworkServer> serverList = null;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -187,8 +150,46 @@ public class NetworkCreateActivity extends BoundActivity {
 
         useAutoReconnect.setOnCheckedChangeListener(this::updateAutoReconnectVisible);
         updateAutoReconnectVisible(null, useAutoReconnect.isChecked());
+
+        unlimitedAutoReconnectRetries.setOnCheckedChangeListener(this::updateAutoReconnectRetriesUnlimited);
+        updateAutoReconnectRetriesUnlimited(null, unlimitedAutoReconnectRetries.isChecked());
+
+        servers.setOnClickListener(v -> {
+            Intent intent1 = new Intent(NetworkCreateActivity.this, NetworkServerListActivity.class);
+            if (serverList != null)
+                intent1.putExtra("servers", NetworkServerSerializeHelper.serialize(serverList));
+            startActivityForResult(intent1, REQUEST_SERVER_LIST, null);
+        });
+
+        initializeWithDefaults();
+    }
+
+    public void initializeWithDefaults() {
+        useAutoReconnect.setChecked(true);
+        autoReconnectRetries.setText("20");
+        autoReconnectInterval.setText("60");
+        rejoinChannels.setChecked(true);
     }
 
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (resultCode == RESULT_OK) {
+            switch (requestCode) {
+                case REQUEST_PERFORM: {
+
+                } break;
+                case REQUEST_SERVER_LIST: {
+                    Parcelable[] servers = data.getParcelableArrayExtra("servers");
+                    Log.d("DEBUG", Arrays.toString(servers));
+                    if (servers != null) {
+                        serverList = NetworkServerSerializeHelper.deserialize(servers);
+                    }
+                } break;
+            }
+        }
+    }
+
+
     private void updateCustomCodecsVisible(CompoundButton button, boolean visible) {
         codecForServer.setEnabled(visible);
         codecForEncoding.setEnabled(visible);
@@ -219,52 +220,15 @@ public class NetworkCreateActivity extends BoundActivity {
         updateViewGroupStatus(this.groupAutoReconnect, visible);
     }
 
-    private void updateViewGroupStatus(final ViewGroup group, boolean visible) {
+    private void updateAutoReconnectRetriesUnlimited(CompoundButton button, boolean visible) {
+        autoReconnectRetries.setEnabled(!visible);
+    }
+
+    private void updateViewGroupStatus(ViewGroup group, boolean visible) {
         if (visible) {
-            group.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-            final int targetHeight = group.getMeasuredHeight();
-
-            group.getLayoutParams().height = 1;
-            group.setVisibility(View.VISIBLE);
-            Animation a = new Animation() {
-                @Override
-                protected void applyTransformation(float interpolatedTime, Transformation t) {
-                    group.getLayoutParams().height = interpolatedTime == 1
-                            ? ViewGroup.LayoutParams.WRAP_CONTENT
-                            : (int) (targetHeight * interpolatedTime);
-                    group.requestLayout();
-                }
-
-                @Override
-                public boolean willChangeBounds() {
-                    return true;
-                }
-            };
-
-            a.setDuration((int) (targetHeight / group.getContext().getResources().getDisplayMetrics().density));
-            group.startAnimation(a);
+            AnimationHelper.expand(group);
         } else {
-            final int initialHeight = group.getMeasuredHeight();
-
-            Animation a = new Animation() {
-                @Override
-                protected void applyTransformation(float interpolatedTime, Transformation t) {
-                    if (interpolatedTime == 1) {
-                        group.setVisibility(View.GONE);
-                    } else {
-                        group.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
-                        group.requestLayout();
-                    }
-                }
-
-                @Override
-                public boolean willChangeBounds() {
-                    return true;
-                }
-            };
-
-            a.setDuration((int) (initialHeight / group.getContext().getResources().getDisplayMetrics().density));
-            group.startAnimation(a);
+            AnimationHelper.collapse(group);
         }
     }
 
@@ -278,34 +242,32 @@ public class NetworkCreateActivity extends BoundActivity {
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.action_confirm: {
-                if (networkInfo != null) {
-                    NetworkInfo after = new NetworkInfo(
-                            0,
-                            networkName.getText().toString(),
-                            0,
-                            useCustomCodecs.isChecked() ? this.codecForServer.getText().toString() : null,
-                            useCustomCodecs.isChecked() ? this.codecForEncoding.getText().toString() : null,
-                            useCustomCodecs.isChecked() ? this.codecForDecoding.getText().toString() : null,
-                            null,
-                            true,
-                            null,
-                            useAutoIdentify.isChecked(),
-                            autoIdentifyService.getText().toString(),
-                            autoIdentifyPassword.getText().toString(),
-                            useSasl.isChecked(),
-                            saslAccount.getText().toString(),
-                            saslPassword.getText().toString(),
-                            useAutoReconnect.isChecked(),
-                            Integer.parseInt(autoReconnectInterval.getText().toString()),
-                            Short.parseShort(autoReconnectRetries.getText().toString()),
-                            unlimitedAutoReconnectRetries.isChecked(),
-                            rejoinChannels.isChecked()
-                    );
-                    if (context.client() != null)
-                        context.client().createNetwork(after);
-
-                    finish();
-                }
+                NetworkInfo after = new NetworkInfo(
+                        0,
+                        networkName.getText().toString(),
+                        0,
+                        useCustomCodecs.isChecked() ? this.codecForServer.getText().toString() : null,
+                        useCustomCodecs.isChecked() ? this.codecForEncoding.getText().toString() : null,
+                        useCustomCodecs.isChecked() ? this.codecForDecoding.getText().toString() : null,
+                        serverList == null ? Collections.emptyList() : serverList,
+                        true,
+                        null,
+                        useAutoIdentify.isChecked(),
+                        autoIdentifyService.getText().toString(),
+                        autoIdentifyPassword.getText().toString(),
+                        useSasl.isChecked(),
+                        saslAccount.getText().toString(),
+                        saslPassword.getText().toString(),
+                        useAutoReconnect.isChecked(),
+                        NumberHelper.parseInt(autoReconnectInterval.getText().toString(), 0),
+                        NumberHelper.parseShort(autoReconnectRetries.getText().toString(), (short) 0),
+                        unlimitedAutoReconnectRetries.isChecked(),
+                        rejoinChannels.isChecked()
+                );
+                if (context.client() != null)
+                    context.client().createNetwork(after);
+
+                finish();
             }
             return true;
             default:
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkEditActivity.java
index b61ea8b7f57a9fe087b79d8dfb5583bfd091feb1..a9d8cca6060e5b6653459a7fb54959314a6cf476 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkEditActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkEditActivity.java
@@ -23,32 +23,43 @@ package de.kuschku.quasseldroid_ng.ui.coresettings.network;
 
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.Parcelable;
 import android.support.annotation.Nullable;
 import android.support.v7.widget.SwitchCompat;
 import android.support.v7.widget.Toolbar;
+import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
-import android.view.View;
 import android.view.ViewGroup;
-import android.view.animation.Animation;
-import android.view.animation.Transformation;
+import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
 import android.widget.EditText;
 import android.widget.Spinner;
 
+import java.util.Arrays;
+import java.util.List;
+
 import butterknife.Bind;
 import butterknife.ButterKnife;
+import de.kuschku.libquassel.objects.types.NetworkServer;
 import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
 import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
 import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
 import de.kuschku.quasseldroid_ng.R;
 import de.kuschku.quasseldroid_ng.ui.coresettings.identity.IdentitySpinnerAdapter;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.NetworkServerListActivity;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.NetworkServerSerializeHelper;
+import de.kuschku.util.backports.NumberHelper;
 import de.kuschku.util.backports.Objects;
 import de.kuschku.util.servicebound.BoundActivity;
+import de.kuschku.util.ui.AnimationHelper;
 
 public class NetworkEditActivity extends BoundActivity {
 
+    private static final int REQUEST_SERVER_LIST = 1;
+    private static final int REQUEST_PERFORM = 2;
+
     @Bind(R.id.toolbar)
     Toolbar toolbar;
 
@@ -62,6 +73,9 @@ public class NetworkEditActivity extends BoundActivity {
     @Bind(R.id.rejoinChannels)
     CheckBox rejoinChannels;
 
+    @Bind(R.id.servers)
+    Button servers;
+
     @Bind(R.id.useCustomCodecs)
     SwitchCompat useCustomCodecs;
     @Bind(R.id.groupCustomCodecs)
@@ -106,58 +120,7 @@ public class NetworkEditActivity extends BoundActivity {
     IdentitySpinnerAdapter spinnerAdapter = new IdentitySpinnerAdapter();
     private QNetwork network;
 
-    public static void expand(final ViewGroup v) {
-        v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        final int targetHeight = v.getMeasuredHeight();
-
-        // Older versions of android (pre API 21) cancel animations for views with a height of 0.
-        v.getLayoutParams().height = 1;
-        v.setVisibility(View.VISIBLE);
-        Animation a = new Animation() {
-            @Override
-            protected void applyTransformation(float interpolatedTime, Transformation t) {
-                v.getLayoutParams().height = interpolatedTime == 1
-                        ? ViewGroup.LayoutParams.WRAP_CONTENT
-                        : (int) (targetHeight * interpolatedTime);
-                v.setAlpha(interpolatedTime);
-                v.requestLayout();
-            }
-
-            @Override
-            public boolean willChangeBounds() {
-                return true;
-            }
-        };
-
-        // 1dp/ms
-        a.setDuration((int) (targetHeight / v.getContext().getResources().getDisplayMetrics().density));
-        v.startAnimation(a);
-    }
-
-    public static void collapse(final ViewGroup v) {
-        final int initialHeight = v.getMeasuredHeight();
-
-        Animation a = new Animation() {
-            @Override
-            protected void applyTransformation(float interpolatedTime, Transformation t) {
-                if (interpolatedTime == 1) {
-                    v.setVisibility(View.GONE);
-                } else {
-                    v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
-                    v.setAlpha(1 - interpolatedTime);
-                    v.requestLayout();
-                }
-            }
-
-            @Override
-            public boolean willChangeBounds() {
-                return true;
-            }
-        };
-
-        a.setDuration((int) (initialHeight / v.getContext().getResources().getDisplayMetrics().density));
-        v.startAnimation(a);
-    }
+    private List<NetworkServer> serverList = null;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -190,6 +153,31 @@ public class NetworkEditActivity extends BoundActivity {
 
         useAutoReconnect.setOnCheckedChangeListener(this::updateAutoReconnectVisible);
         updateAutoReconnectVisible(null, useAutoReconnect.isChecked());
+
+        unlimitedAutoReconnectRetries.setOnCheckedChangeListener(this::updateAutoReconnectRetriesUnlimited);
+        updateAutoReconnectRetriesUnlimited(null, unlimitedAutoReconnectRetries.isChecked());
+
+        servers.setOnClickListener(v -> {
+            Intent intent1 = new Intent(NetworkEditActivity.this, NetworkServerListActivity.class);
+            intent1.putExtra("servers", NetworkServerSerializeHelper.serialize(network.serverList()));
+            startActivityForResult(intent1, REQUEST_SERVER_LIST, null);
+        });
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        switch (requestCode) {
+            case REQUEST_PERFORM: {
+
+            } break;
+            case REQUEST_SERVER_LIST: {
+                Parcelable[] servers = data.getParcelableArrayExtra("servers");
+                Log.d("DEBUG", Arrays.toString(servers));
+                if (servers != null) {
+                    serverList = NetworkServerSerializeHelper.deserialize(servers);
+                }
+            } break;
+        }
     }
 
     private void updateCustomCodecsVisible(CompoundButton button, boolean visible) {
@@ -214,6 +202,10 @@ public class NetworkEditActivity extends BoundActivity {
         updateViewGroupStatus(groupSasl, visible);
     }
 
+    private void updateAutoReconnectRetriesUnlimited(CompoundButton button, boolean visible) {
+        autoReconnectRetries.setEnabled(!visible);
+    }
+
     private void updateAutoReconnectVisible(CompoundButton button, boolean visible) {
         autoReconnectInterval.setEnabled(visible);
         autoReconnectRetries.setEnabled(visible);
@@ -224,9 +216,9 @@ public class NetworkEditActivity extends BoundActivity {
 
     private void updateViewGroupStatus(ViewGroup group, boolean visible) {
         if (visible) {
-            expand(group);
+            AnimationHelper.expand(group);
         } else {
-            collapse(group);
+            AnimationHelper.collapse(group);
         }
     }
 
@@ -245,13 +237,11 @@ public class NetworkEditActivity extends BoundActivity {
                     NetworkInfo after = new NetworkInfo(
                             networkInfo.networkId(),
                             networkName.getText().toString(),
-                            //FIXME: IMPLEMENT
-                            networkInfo.identity(),
+                            (int) identity.getSelectedItemId(),
                             useCustomCodecs.isChecked() ? this.codecForServer.getText().toString() : null,
                             useCustomCodecs.isChecked() ? this.codecForEncoding.getText().toString() : null,
                             useCustomCodecs.isChecked() ? this.codecForDecoding.getText().toString() : null,
-                            //FIXME: IMPLEMENT
-                            networkInfo.serverList(),
+                            serverList == null ? networkInfo.serverList() : serverList,
                             networkInfo.useRandomServer(),
                             //FIXME: IMPLEMENT
                             networkInfo.perform(),
@@ -262,8 +252,8 @@ public class NetworkEditActivity extends BoundActivity {
                             saslAccount.getText().toString(),
                             saslPassword.getText().toString(),
                             useAutoReconnect.isChecked(),
-                            Integer.parseInt(autoReconnectInterval.getText().toString()),
-                            Short.parseShort(autoReconnectRetries.getText().toString()),
+                            NumberHelper.parseInt(autoReconnectInterval.getText().toString(), 0),
+                            NumberHelper.parseShort(autoReconnectRetries.getText().toString(), (short) 0),
                             unlimitedAutoReconnectRetries.isChecked(),
                             rejoinChannels.isChecked()
                     );
@@ -273,8 +263,7 @@ public class NetworkEditActivity extends BoundActivity {
 
                     finish();
                 }
-            }
-            return true;
+            } return true;
             default:
                 return super.onOptionsItemSelected(item);
         }
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkListActivity.java
index 9ce432d2122180f4bd1e2412a56ee975b2acf479..1ff3434c6ba96ab5a709bd6f06a10f2fbd7a4a4c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkListActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkListActivity.java
@@ -25,7 +25,6 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.AppCompatImageButton;
 import android.support.v7.widget.DefaultItemAnimator;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -64,11 +63,6 @@ public class NetworkListActivity extends BoundActivity {
             startActivity(intent);
         }
     };
-    OnQNetworkDeleteListener deleteListener = network -> {
-        if (manager != null && network != null) {
-            context.client().removeNetwork(network.networkId());
-        }
-    };
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -105,10 +99,6 @@ public class NetworkListActivity extends BoundActivity {
         void onClick(QNetwork network);
     }
 
-    interface OnQNetworkDeleteListener {
-        void onDelete(QNetwork network);
-    }
-
     private class ChatListAdapter extends RecyclerView.Adapter<NetworkViewHolder> {
         NetworkManager manager;
         AdapterUICallbackWrapper wrapper = new AdapterUICallbackWrapper(this);
@@ -146,16 +136,12 @@ public class NetworkListActivity extends BoundActivity {
         @Bind(R.id.network_name)
         TextView name;
 
-        @Bind(R.id.network_delete)
-        AppCompatImageButton delete;
-
         private QNetwork network;
 
         public NetworkViewHolder(View itemView) {
             super(itemView);
             ButterKnife.bind(this, itemView);
             itemView.setOnClickListener(view -> clickListener.onClick(network));
-            delete.setOnClickListener(view -> deleteListener.onDelete(network));
         }
 
         public void bind(QNetwork network) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9a565de82ac24b054f682eaf5c6d0f53a173813
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerAdapter.java
@@ -0,0 +1,131 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.network.server;
+
+import android.graphics.Color;
+import android.graphics.drawable.Drawable;
+import android.support.v4.content.res.ResourcesCompat;
+import android.support.v4.view.MotionEventCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.Bind;
+import butterknife.ButterKnife;
+import de.kuschku.libquassel.objects.types.NetworkServer;
+import de.kuschku.quasseldroid_ng.R;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.ItemTouchHelperAdapter;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.ItemTouchHelperViewHolder;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.OnStartDragListener;
+import de.kuschku.util.annotationbind.AutoBinder;
+
+public class NetworkServerAdapter
+        extends RecyclerView.Adapter<NetworkServerAdapter.NetworkServerViewHolder> implements ItemTouchHelperAdapter {
+
+    private final List<NetworkServer> servers;
+    private final OnStartDragListener dragStartListener;
+    private NetworkServerListActivity.OnNetworkServerClickListener onItemClickListener;
+
+    public NetworkServerAdapter(List<NetworkServer> servers, OnStartDragListener dragStartListener) {
+        this.servers = servers;
+        this.dragStartListener = dragStartListener;
+    }
+
+    @Override
+    public NetworkServerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
+        View view = inflater.inflate(R.layout.widget_networkserver, parent, false);
+        return new NetworkServerViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(NetworkServerViewHolder holder, int position) {
+        holder.bind(servers.get(position));
+        holder.drag_handle.setOnTouchListener((v, event) -> {
+            if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) {
+                dragStartListener.onStartDrag(holder);
+                holder.itemView.setSelected(true);
+            }
+            return false;
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return servers.size();
+    }
+
+    @Override
+    public boolean onItemMove(int fromPosition, int toPosition) {
+        Collections.swap(servers, fromPosition, toPosition);
+        notifyItemMoved(fromPosition, toPosition);
+        return true;
+    }
+
+    public void setOnItemClickListener(NetworkServerListActivity.OnNetworkServerClickListener onItemClickListener) {
+        this.onItemClickListener = onItemClickListener;
+    }
+
+    class NetworkServerViewHolder extends RecyclerView.ViewHolder implements ItemTouchHelperViewHolder {
+
+        @Bind(R.id.text)
+        TextView text;
+
+        @Bind(R.id.lock)
+        ImageView lock;
+
+        @Bind(R.id.drag_handle)
+        ImageView drag_handle;
+        private NetworkServer server;
+
+        public NetworkServerViewHolder(View itemView) {
+            super(itemView);
+            ButterKnife.bind(this, itemView);
+            itemView.setOnClickListener(v -> onItemClickListener.onClick(server));
+        }
+
+        public void bind(NetworkServer server) {
+            this.server = server;
+            text.setText(server == null ? "" : String.format(Locale.US, "%s:%d", server.host, server.port));
+            Drawable drawable = ResourcesCompat.getDrawable(itemView.getContext().getResources(), server != null && server.useSSL ? R.drawable.ic_lock : R.drawable.ic_lock_open, itemView.getContext().getTheme());
+            lock.setImageDrawable(drawable);
+        }
+
+        @Override
+        public void onItemSelected() {
+            itemView.setBackgroundColor(AutoBinder.obtainColor(R.attr.colorBackground, itemView.getContext().getTheme()));
+        }
+
+        @Override
+        public void onItemClear() {
+            itemView.setBackgroundColor(Color.TRANSPARENT);
+        }
+    }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerEditActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..7cb8e7c854206f1ead07e0a16fb5c16a1fbfa5cf
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerEditActivity.java
@@ -0,0 +1,265 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.network.server;
+
+import android.content.Intent;
+import android.database.DataSetObserver;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.SwitchCompat;
+import android.support.v7.widget.Toolbar;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.Spinner;
+import android.widget.SpinnerAdapter;
+import android.widget.TextView;
+
+import java.util.Arrays;
+import java.util.List;
+
+import butterknife.Bind;
+import butterknife.ButterKnife;
+import de.kuschku.libquassel.objects.types.NetworkServer;
+import de.kuschku.quasseldroid_ng.R;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.NetworkServerSerializeHelper;
+import de.kuschku.util.backports.NumberHelper;
+import de.kuschku.util.servicebound.BoundActivity;
+import de.kuschku.util.ui.AnimationHelper;
+
+public class NetworkServerEditActivity extends BoundActivity {
+
+    @Bind(R.id.toolbar)
+    Toolbar toolbar;
+
+
+    @Bind(R.id.host)
+    EditText host;
+
+    @Bind(R.id.port)
+    EditText port;
+
+    @Bind(R.id.useSSL)
+    CheckBox useSSL;
+
+    @Bind(R.id.password)
+    EditText password;
+
+
+    @Bind(R.id.useProxy)
+    SwitchCompat useProxy;
+    @Bind(R.id.groupProxy)
+    ViewGroup groupProxy;
+    @Bind(R.id.proxyHost)
+    EditText proxyHost;
+    @Bind(R.id.proxyPort)
+    EditText proxyPort;
+    @Bind(R.id.proxyType)
+    Spinner proxyType;
+    @Bind(R.id.proxyUser)
+    EditText proxyUser;
+    @Bind(R.id.proxyPassword)
+    EditText proxyPassword;
+
+    int id;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.activity_networkserver_edit);
+        ButterKnife.bind(this);
+
+        setSupportActionBar(toolbar);
+        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+        useProxy.setOnCheckedChangeListener(this::updateProxyVisible);
+        updateProxyVisible(null, useProxy.isChecked());
+
+        ProxyTypeAdapter adapter = new ProxyTypeAdapter();
+        proxyType.setAdapter(adapter);
+
+        Intent intent;
+        Bundle bundle = null;
+        if ((intent = getIntent()) != null) {
+            id = intent.getIntExtra("id", -1);
+
+            bundle = intent.getBundleExtra("server");
+        }
+
+        if (bundle != null) {
+            NetworkServer server = NetworkServerSerializeHelper.deserialize(bundle);
+
+            host.setText(server.host);
+            port.setText(String.valueOf(server.port));
+            useSSL.setChecked(server.useSSL);
+            password.setText(server.password);
+            useProxy.setChecked(server.useProxy);
+            proxyHost.setText(server.proxyHost);
+            proxyPort.setText(String.valueOf(server.proxyPort));
+            proxyUser.setText(server.proxyUser);
+            proxyPassword.setText(server.proxyPass);
+            proxyType.setSelection(adapter.indexOf(server.proxyType));
+        } else {
+            port.setText("6667");
+        }
+
+        useSSL.setOnCheckedChangeListener((buttonView, isChecked) -> {
+            if (isChecked) {
+                if (port.getText().toString().trim().equals("6667"))
+                    port.setText("6697");
+            } else {
+                if (port.getText().toString().trim().equals("6697"))
+                    port.setText("6667");
+            }
+        });
+    }
+
+    private void updateProxyVisible(CompoundButton button, boolean visible) {
+        proxyHost.setEnabled(visible);
+        proxyPort.setEnabled(visible);
+        proxyUser.setEnabled(visible);
+        proxyPassword.setEnabled(visible);
+
+        updateViewGroupStatus(groupProxy, visible);
+    }
+
+    private void updateViewGroupStatus(ViewGroup group, boolean visible) {
+        if (visible) {
+            AnimationHelper.expand(group);
+        } else {
+            AnimationHelper.collapse(group);
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.editor, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.action_confirm: {
+                Intent intent = new Intent();
+                intent.putExtra("server", NetworkServerSerializeHelper.serialize(new NetworkServer(
+                        useSSL.isChecked(),
+                        0,
+                        host.getText().toString(),
+                        NumberHelper.parseInt(port.getText().toString(), -1),
+                        password.getText().toString(),
+                        useProxy.isChecked(),
+                        NetworkServer.ProxyType.fromId((int) proxyType.getSelectedItemId()),
+                        proxyHost.getText().toString(),
+                        NumberHelper.parseInt(proxyPort.getText().toString(), -1),
+                        proxyUser.getText().toString(),
+                        proxyPassword.getText().toString()
+                )));
+                intent.putExtra("id", id);
+                setResult(RESULT_OK, intent);
+                finish();
+            } return true;
+            default:
+                return super.onOptionsItemSelected(item);
+        }
+    }
+
+    private class ProxyTypeAdapter implements SpinnerAdapter {
+        List<NetworkServer.ProxyType> list = Arrays.asList(
+                NetworkServer.ProxyType.Socks5Proxy,
+                NetworkServer.ProxyType.HttpProxy
+        );
+
+        @Override
+        public View getDropDownView(int position, View convertView, ViewGroup parent) {
+            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
+            TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
+            NetworkServer.ProxyType type = getItem(position);
+            view.setText(type == null ? "" : context.themeUtil().translations.proxyType(type));
+            return view;
+        }
+
+        @Override
+        public void registerDataSetObserver(DataSetObserver observer) {
+
+        }
+
+        @Override
+        public void unregisterDataSetObserver(DataSetObserver observer) {
+
+        }
+
+        @Override
+        public int getCount() {
+            return list.size();
+        }
+
+        @Override
+        public NetworkServer.ProxyType getItem(int position) {
+            return list.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return getItem(position).id;
+        }
+
+        @Override
+        public boolean hasStableIds() {
+            return true;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
+            TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
+            NetworkServer.ProxyType type = getItem(position);
+            view.setText(type == null ? "" : context.themeUtil().translations.proxyType(type));
+            return view;
+        }
+
+        @Override
+        public int getItemViewType(int position) {
+            return 0;
+        }
+
+        @Override
+        public int getViewTypeCount() {
+            return 1;
+        }
+
+        @Override
+        public boolean isEmpty() {
+            return list.isEmpty();
+        }
+
+        public int indexOf(NetworkServer.ProxyType proxyType) {
+            return list.indexOf(proxyType);
+        }
+    }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerListActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..9fd1ae7764a844009a21a86456040440d8ec4473
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerListActivity.java
@@ -0,0 +1,156 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.network.server;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.support.annotation.Nullable;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.Toolbar;
+import android.support.v7.widget.helper.ItemTouchHelper;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import butterknife.Bind;
+import butterknife.ButterKnife;
+import de.kuschku.libquassel.objects.types.NetworkServer;
+import de.kuschku.quasseldroid_ng.R;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.NetworkServerSerializeHelper;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.OnStartDragListener;
+import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.SimpleItemTouchHelperCallback;
+import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
+import de.kuschku.util.observables.lists.ObservableList;
+import de.kuschku.util.servicebound.BoundActivity;
+
+public class NetworkServerListActivity extends BoundActivity implements OnStartDragListener {
+
+    @Bind(R.id.list)
+    RecyclerView list;
+
+    @Bind(R.id.add)
+    FloatingActionButton add;
+
+    @Bind(R.id.toolbar)
+    Toolbar toolbar;
+
+    NetworkServerAdapter adapter;
+    ItemTouchHelper itemTouchHelper;
+    ObservableList<NetworkServer> servers;
+    OnNetworkServerClickListener clickListener = server -> {
+        if (server != null) {
+            Intent intent1 = new Intent(this, NetworkServerEditActivity.class);
+            intent1.putExtra("server", NetworkServerSerializeHelper.serialize(server));
+            intent1.putExtra("id", servers.indexOf(server));
+            startActivityForResult(intent1, 0, null);
+        }
+    };
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_network_list);
+        ButterKnife.bind(this);
+
+        Intent intent = getIntent();
+        Parcelable[] serverList;
+        if (intent != null && (serverList = intent.getParcelableArrayExtra("servers")) != null) {
+            servers = new ObservableList<>(NetworkServerSerializeHelper.deserialize(serverList));
+        } else {
+            servers = new ObservableList<>();
+        }
+        adapter = new NetworkServerAdapter(servers, this);
+        servers.addCallback(new AdapterUICallbackWrapper(adapter));
+
+        list.setAdapter(adapter);
+        list.setHasFixedSize(true);
+        list.setLayoutManager(new LinearLayoutManager(this));
+        adapter.setOnItemClickListener(clickListener);
+
+        ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter);
+        itemTouchHelper = new ItemTouchHelper(callback);
+        itemTouchHelper.attachToRecyclerView(list);
+
+        add.setOnClickListener(v -> {
+            Intent intent1 = new Intent(NetworkServerListActivity.this, NetworkServerEditActivity.class);
+            startActivityForResult(intent1, 0, null);
+        });
+
+        setSupportActionBar(toolbar);
+        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.editor, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.action_confirm: {
+                Intent intent = new Intent();
+                intent.putExtra("servers", NetworkServerSerializeHelper.serialize(servers));
+                setResult(RESULT_OK, intent);
+                finish();
+            } return true;
+            default:
+                return super.onOptionsItemSelected(item);
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        Bundle bundle;
+        if (resultCode == RESULT_OK && data != null && (bundle = data.getBundleExtra("server")) != null) {
+            NetworkServer server = NetworkServerSerializeHelper.deserialize(bundle);
+            Log.d("DEBUG", server.toString());
+            int id = data.getIntExtra("id", -1);
+            Log.d("DEBUG", String.valueOf(id));
+            if (id == -1) {
+                servers.add(server);
+            } else {
+                servers.remove(id);
+                servers.add(id, server);
+            }
+        }
+        super.onActivityResult(requestCode, resultCode, data);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+    }
+
+    @Override
+    public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
+        itemTouchHelper.startDrag(viewHolder);
+    }
+
+    interface OnNetworkServerClickListener {
+        void onClick(NetworkServer network);
+    }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..7411dae159f293511f6f28ecd26bccddcc5a88ce
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperAdapter.java
@@ -0,0 +1,64 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * Copyright (C) 2015 Paul Burke
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
+
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.helper.ItemTouchHelper;
+
+/**
+ * Interface to listen for a move or dismissal event from a {@link ItemTouchHelper.Callback}.
+ *
+ * @author Paul Burke (ipaulpro)
+ */
+public interface ItemTouchHelperAdapter {
+
+    /**
+     * Called when an item has been dragged far enough to trigger a move. This is called every time
+     * an item is shifted, and <strong>not</strong> at the end of a "drop" event.<br/>
+     * <br/>
+     * Implementations should call {@link RecyclerView.Adapter#notifyItemMoved(int, int)} after
+     * adjusting the underlying data to reflect this move.
+     *
+     * @param fromPosition The start position of the moved item.
+     * @param toPosition   Then resolved position of the moved item.
+     * @return True if the item was moved to the new adapter position.
+     * @see RecyclerView#getAdapterPositionFor(RecyclerView.ViewHolder)
+     * @see RecyclerView.ViewHolder#getAdapterPosition()
+     */
+    boolean onItemMove(int fromPosition, int toPosition);
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperViewHolder.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperViewHolder.java
new file mode 100644
index 0000000000000000000000000000000000000000..1657e4d995e74f65be58f4eaef7e99ba879ec731
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperViewHolder.java
@@ -0,0 +1,62 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * Copyright (C) 2015 Paul Burke
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
+
+import android.support.v7.widget.helper.ItemTouchHelper;
+
+/**
+ * Interface to notify an item ViewHolder of relevant callbacks from {@link
+ * android.support.v7.widget.helper.ItemTouchHelper.Callback}.
+ *
+ * @author Paul Burke (ipaulpro)
+ */
+public interface ItemTouchHelperViewHolder {
+
+    /**
+     * Called when the {@link ItemTouchHelper} first registers an item as being moved or swiped.
+     * Implementations should update the item view to indicate it's active state.
+     */
+    void onItemSelected();
+
+
+    /**
+     * Called when the {@link ItemTouchHelper} has completed the move or swipe, and the active item
+     * state should be cleared.
+     */
+    void onItemClear();
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/NetworkServerSerializeHelper.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/NetworkServerSerializeHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a070316774e089846d4418e2c477b754f80488f
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/NetworkServerSerializeHelper.java
@@ -0,0 +1,87 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
+
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.support.annotation.NonNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.kuschku.libquassel.objects.types.NetworkServer;
+
+public class NetworkServerSerializeHelper {
+    public static Bundle[] serialize(List<NetworkServer> servers) {
+        Bundle[] list = new Bundle[servers.size()];
+        for (int i = 0; i < servers.size(); i++) {
+            NetworkServer server = servers.get(i);
+            Bundle bundle = serialize(server);
+            list[i] = bundle;
+        }
+        return list;
+    }
+
+    @NonNull
+    public static Bundle serialize(NetworkServer server) {
+        Bundle bundle = new Bundle();
+        bundle.putBoolean("useSSL", server.useSSL);
+        bundle.putInt("sslVersion", server.sslVersion);
+        bundle.putString("host", server.host);
+        bundle.putInt("port", server.port);
+        bundle.putString("password", server.password);
+        bundle.putBoolean("useProxy", server.useProxy);
+        bundle.putInt("proxyType", server.proxyType.id);
+        bundle.putString("proxyHost", server.proxyHost);
+        bundle.putInt("proxyPort", server.proxyPort);
+        bundle.putString("proxyUser", server.proxyUser);
+        bundle.putString("proxyPass", server.proxyPass);
+        return bundle;
+    }
+
+    @NonNull
+    public static List<NetworkServer> deserialize(Parcelable[] serverList) {
+        List<NetworkServer> servers = new ArrayList<>(serverList.length);
+        for (Parcelable parcelable : serverList) {
+            Bundle bundle = (Bundle) parcelable;
+            servers.add(deserialize(bundle));
+        }
+        return servers;
+    }
+
+    @NonNull
+    public static NetworkServer deserialize(Bundle bundle) {
+        return new NetworkServer(
+                bundle.getBoolean("useSSL"),
+                bundle.getInt("sslVersion"),
+                bundle.getString("host"),
+                bundle.getInt("port"),
+                bundle.getString("password"),
+                bundle.getBoolean("useProxy"),
+                NetworkServer.ProxyType.fromId(bundle.getInt("proxyType")),
+                bundle.getString("proxyHost"),
+                bundle.getInt("proxyPort"),
+                bundle.getString("proxyUser"),
+                bundle.getString("proxyPass")
+        );
+    }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/OnStartDragListener.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/OnStartDragListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..2fb08cc038a9493205d96251b053e0004b091a0a
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/OnStartDragListener.java
@@ -0,0 +1,54 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * Copyright (C) 2015 Paul Burke
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
+
+import android.support.v7.widget.RecyclerView;
+
+/**
+ * Listener for manual initiation of a drag.
+ */
+public interface OnStartDragListener {
+
+    /**
+     * Called when a view is requesting a start of a drag.
+     *
+     * @param viewHolder The holder of the view to drag.
+     */
+    void onStartDrag(RecyclerView.ViewHolder viewHolder);
+
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/SimpleItemTouchHelperCallback.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/SimpleItemTouchHelperCallback.java
new file mode 100644
index 0000000000000000000000000000000000000000..8d74c627c52099686c49a450804baf31a1f01689
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/SimpleItemTouchHelperCallback.java
@@ -0,0 +1,142 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * Copyright (C) 2015 Paul Burke
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
+
+import android.graphics.Canvas;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.helper.ItemTouchHelper;
+
+/**
+ * An implementation of {@link ItemTouchHelper.Callback} that enables basic drag & drop and
+ * swipe-to-dismiss. Drag events are automatically started by an item long-press.<br/>
+ * </br/>
+ * Expects the <code>RecyclerView.Adapter</code> to listen for {@link
+ * ItemTouchHelperAdapter} callbacks and the <code>RecyclerView.ViewHolder</code> to implement
+ * {@link ItemTouchHelperViewHolder}.
+ *
+ * @author Paul Burke (ipaulpro)
+ */
+public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {
+
+    public static final float ALPHA_FULL = 1.0f;
+
+    private final ItemTouchHelperAdapter mAdapter;
+
+    public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter adapter) {
+        mAdapter = adapter;
+    }
+
+    @Override
+    public boolean isLongPressDragEnabled() {
+        return true;
+    }
+
+    @Override
+    public boolean isItemViewSwipeEnabled() {
+        return false;
+    }
+
+    @Override
+    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
+        // Set movement flags based on the layout manager
+        if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {
+            final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
+            final int swipeFlags = 0;
+            return makeMovementFlags(dragFlags, swipeFlags);
+        } else {
+            final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
+            final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
+            return makeMovementFlags(dragFlags, swipeFlags);
+        }
+    }
+
+    @Override
+    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) {
+        if (source.getItemViewType() != target.getItemViewType()) {
+            return false;
+        }
+
+        // Notify the adapter of the move
+        mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition());
+        return true;
+    }
+
+    @Override
+    public void onSwiped(RecyclerView.ViewHolder viewHolder, int i) {
+    }
+
+    @Override
+    public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
+        if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
+            // Fade out the view as it is swiped out of the parent's bounds
+            final float alpha = ALPHA_FULL - Math.abs(dX) / (float) viewHolder.itemView.getWidth();
+            viewHolder.itemView.setAlpha(alpha);
+            viewHolder.itemView.setTranslationX(dX);
+        } else {
+            super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
+        }
+    }
+
+    @Override
+    public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
+        // We only want the active item to change
+        if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
+            if (viewHolder instanceof ItemTouchHelperViewHolder) {
+                // Let the view holder know that this item is being moved or dragged
+                ItemTouchHelperViewHolder itemViewHolder = (ItemTouchHelperViewHolder) viewHolder;
+                itemViewHolder.onItemSelected();
+            }
+        }
+
+        super.onSelectedChanged(viewHolder, actionState);
+    }
+
+    @Override
+    public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
+        super.clearView(recyclerView, viewHolder);
+
+        viewHolder.itemView.setAlpha(ALPHA_FULL);
+
+        if (viewHolder instanceof ItemTouchHelperViewHolder) {
+            // Tell the view holder it's time to restore the idle state
+            ItemTouchHelperViewHolder itemViewHolder = (ItemTouchHelperViewHolder) viewHolder;
+            itemViewHolder.onItemClear();
+        }
+    }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/editor/AdvancedEditor.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/editor/AdvancedEditor.java
index 4293222e4e664fb8e10d4fde5affc5f404c4abef..9df8fb9ce7a2f20af3b70e2d01c6ae1324e88179 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/editor/AdvancedEditor.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/editor/AdvancedEditor.java
@@ -21,18 +21,26 @@
 
 package de.kuschku.quasseldroid_ng.ui.editor;
 
+import android.graphics.Typeface;
 import android.support.annotation.ColorInt;
 import android.support.annotation.IntRange;
 import android.support.annotation.NonNull;
 import android.text.Spanned;
 import android.text.style.BackgroundColorSpan;
 import android.text.style.ForegroundColorSpan;
+import android.text.style.StyleSpan;
 import android.text.style.UnderlineSpan;
 import android.widget.EditText;
 
+import com.google.common.base.Function;
+
 import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.irc.format.BoldSpan;
-import de.kuschku.util.irc.format.ItalicSpan;
+import de.kuschku.util.irc.format.spans.Copyable;
+import de.kuschku.util.irc.format.spans.IrcBackgroundColorSpan;
+import de.kuschku.util.irc.format.spans.IrcBoldSpan;
+import de.kuschku.util.irc.format.spans.IrcForegroundColorSpan;
+import de.kuschku.util.irc.format.spans.IrcItalicSpan;
+import de.kuschku.util.irc.format.spans.IrcUnderlineSpan;
 
 public class AdvancedEditor {
     private final AppContext context;
@@ -48,17 +56,18 @@ public class AdvancedEditor {
     }
 
     public void toggleUnderline(int start, int end) {
-        boolean isUnderline = false;
-        for (UnderlineSpan span : editText.getText().getSpans(start, end, UnderlineSpan.class)) {
-            if ((editText.getText().getSpanFlags(span) & Spanned.SPAN_COMPOSING) != 0) continue;
-
-            isUnderline = (editText.getText().getSpanStart(span) == start && editText.getText().getSpanEnd(span) == end);
-            editText.getText().removeSpan(span);
-
-            if (isUnderline) break;
-        }
+        if (start == end)
+            return;
+
+        boolean isUnderline = removeSpans(start, end, UnderlineSpan.class, styleSpan -> {
+            if (styleSpan instanceof IrcUnderlineSpan) {
+                return (IrcUnderlineSpan) styleSpan;
+            } else {
+                return new IrcUnderlineSpan();
+            }
+        }, false);
         if (!isUnderline) {
-            editText.getText().setSpan(new UnderlineSpan(), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+            editText.getText().setSpan(new IrcUnderlineSpan(), start, end, Spanned.SPAN_MARK_MARK);
         }
     }
 
@@ -68,17 +77,18 @@ public class AdvancedEditor {
     }
 
     public void toggleBold(int start, int end) {
-        boolean isBold = false;
-        for (BoldSpan span : editText.getText().getSpans(start, end, BoldSpan.class)) {
-            if ((editText.getText().getSpanFlags(span) & Spanned.SPAN_COMPOSING) != 0) continue;
-
-            isBold = (editText.getText().getSpanStart(span) == start && editText.getText().getSpanEnd(span) == end);
-            editText.getText().removeSpan(span);
-
-            if (isBold) break;
-        }
+        if (start == end)
+            return;
+
+        boolean isBold = removeSpans(start, end, StyleSpan.class, styleSpan -> {
+            if (styleSpan instanceof IrcBoldSpan) {
+                return (IrcBoldSpan) styleSpan;
+            } else {
+                return styleSpan.getStyle() == Typeface.BOLD ? new IrcBoldSpan() : null;
+            }
+        }, false);
         if (!isBold) {
-            editText.getText().setSpan(new BoldSpan(), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+            editText.getText().setSpan(new IrcBoldSpan(), start, end, Spanned.SPAN_MARK_MARK);
         }
     }
 
@@ -87,55 +97,113 @@ public class AdvancedEditor {
     }
 
     public void toggleItalic(int start, int end) {
-        boolean isItalic = false;
-        for (ItalicSpan span : editText.getText().getSpans(start, end, ItalicSpan.class)) {
-            if ((editText.getText().getSpanFlags(span) & Spanned.SPAN_COMPOSING) != 0) continue;
-
-            isItalic = (editText.getText().getSpanStart(span) == start && editText.getText().getSpanEnd(span) == end);
-            editText.getText().removeSpan(span);
-
-            if (isItalic) break;
-        }
+        if (start == end)
+            return;
+
+        boolean isItalic = removeSpans(start, end, StyleSpan.class, styleSpan -> {
+            if (styleSpan instanceof IrcItalicSpan) {
+                return (IrcItalicSpan) styleSpan;
+            } else {
+                return styleSpan.getStyle() == Typeface.ITALIC ? new IrcItalicSpan() : null;
+            }
+        }, false);
         if (!isItalic) {
-            editText.getText().setSpan(new ItalicSpan(), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+            editText.getText().setSpan(new IrcItalicSpan(), start, end, Spanned.SPAN_MARK_MARK);
         }
     }
 
-    public void toggleForeground(@IntRange(from = 0, to = 15) int color) {
+    public void toggleForeground(@IntRange(from = -1, to = 15) int color) {
         toggleForeground(editText.getSelectionStart(), editText.getSelectionEnd(), color);
     }
 
-    public void toggleForeground(int start, int end, @ColorInt int color) {
-        boolean isColored = false;
-        for (ForegroundColorSpan span : editText.getText().getSpans(start, end, ForegroundColorSpan.class)) {
-            if ((editText.getText().getSpanFlags(span) & Spanned.SPAN_COMPOSING) != 0) continue;
-
-            isColored = span.getForegroundColor() == color && (editText.getText().getSpanStart(span) == start && editText.getText().getSpanEnd(span) == end);
-            editText.getText().removeSpan(span);
-
-            if (isColored) break;
+    public void toggleForeground(int start, int end, int color) {
+        removeSpans(start, end, ForegroundColorSpan.class, foregroundColorSpan -> {
+            if ((foregroundColorSpan instanceof IrcForegroundColorSpan)) {
+                return (IrcForegroundColorSpan) foregroundColorSpan;
+            } else {
+                int id = context.themeUtil().res.colorToId(foregroundColorSpan.getForegroundColor());
+                if (id != -1) {
+                    return new IrcForegroundColorSpan(id, context.themeUtil().res.mircColors[id]);
+                } else {
+                    return null;
+                }
+            }
+        }, true);
+
+        if (color != -1) {
+            editText.getText().setSpan(new IrcForegroundColorSpan(color, context.themeUtil().res.mircColors[color]), start, end, Spanned.SPAN_MARK_MARK);
         }
-        if (!isColored) {
-            editText.getText().setSpan(new ForegroundColorSpan(color), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+    }
+
+    private <T extends Copyable<T>, U> boolean removeSpans(int start, int end, Class<U> group, Function<U, T> transformer, boolean removeInvalid) {
+        if (start == end)
+            return false;
+
+        boolean removedAny = false;
+
+        for (U raw : editText.getText().getSpans(start, end, group)) {
+            int spanFlags = editText.getText().getSpanFlags(raw);
+            if ((spanFlags & Spanned.SPAN_COMPOSING) != 0) continue;
+
+            int spanEnd = editText.getText().getSpanEnd(raw);
+            int spanStart = editText.getText().getSpanStart(raw);
+
+            T span = transformer.apply(raw);
+            if (span != raw) {
+                if (span == null) {
+                    if (removeInvalid)
+                        editText.getText().removeSpan(raw);
+                    continue;
+                } else {
+                    editText.getText().removeSpan(raw);
+                    editText.getText().setSpan(span, spanStart, spanEnd, spanFlags);
+                }
+            }
+
+            boolean endIsIn = (spanEnd <= end && spanEnd >= start);
+            boolean endIsAfter = (spanEnd >= end);
+
+            boolean startIsIn = (spanStart <= end && spanStart >= start);
+            boolean startIsBefore = (spanStart < start);
+
+            if (endIsIn && startIsIn) {
+                editText.getText().removeSpan(span);
+                removedAny = true;
+            } else if (endIsIn) {
+                editText.getText().setSpan(span, spanStart, start, spanFlags);
+                removedAny = true;
+            } else if (startIsIn) {
+                editText.getText().setSpan(span, end, spanEnd, spanFlags);
+                removedAny = true;
+            } else if (startIsBefore && endIsAfter) {
+                editText.getText().setSpan(span, spanStart, start, spanFlags);
+                editText.getText().setSpan(span.copy(), end, spanEnd, spanFlags);
+                removedAny = true;
+            }
         }
+        return removedAny;
     }
 
-    public void toggleBackground(@IntRange(from = 0, to = 15) int color) {
+    public void toggleBackground(@IntRange(from = -1, to = 15) int color) {
         toggleBackground(editText.getSelectionStart(), editText.getSelectionEnd(), color);
     }
 
     public void toggleBackground(int start, int end, @ColorInt int color) {
-        boolean isColored = false;
-        for (BackgroundColorSpan span : editText.getText().getSpans(start, end, BackgroundColorSpan.class)) {
-            if ((editText.getText().getSpanFlags(span) & Spanned.SPAN_COMPOSING) != 0) continue;
-
-            isColored = span.getBackgroundColor() == color && (editText.getText().getSpanStart(span) == start && editText.getText().getSpanEnd(span) == end);
-            editText.getText().removeSpan(span);
-
-            if (isColored) break;
-        }
-        if (!isColored) {
-            editText.getText().setSpan(new BackgroundColorSpan(color), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+        removeSpans(start, end, BackgroundColorSpan.class, backgroundColorSpan -> {
+            if ((backgroundColorSpan instanceof IrcBackgroundColorSpan)) {
+                return (IrcBackgroundColorSpan) backgroundColorSpan;
+            } else {
+                int id = context.themeUtil().res.colorToId(backgroundColorSpan.getBackgroundColor());
+                if (id != -1) {
+                    return new IrcBackgroundColorSpan(id, context.themeUtil().res.mircColors[id]);
+                } else {
+                    return null;
+                }
+            }
+        }, true);
+
+        if (color != -1) {
+            editText.getText().setSpan(new IrcBackgroundColorSpan(color, context.themeUtil().res.mircColors[color]), start, end, Spanned.SPAN_MARK_MARK);
         }
     }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java
index fb126b55e2a19cf46ef7ecfd7324586798c608e2..3985ebbbff65d8dbfe7664ddee1efcad7326413f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java
@@ -29,6 +29,7 @@ import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.AppCompatActivity;
+import android.support.v7.app.AppCompatDelegate;
 import android.view.View;
 
 import butterknife.Bind;
@@ -38,6 +39,9 @@ import de.kuschku.quasseldroid_ng.ui.setup.slides.AccountSelectSlide;
 import de.kuschku.quasseldroid_ng.ui.setup.slides.SlideFragment;
 
 public class AccountSelectActivity extends AppCompatActivity {
+    static {
+        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
+    }
     @Bind(R.id.view_pager)
     ViewPager viewPager;
     @Bind(R.id.btn)
@@ -54,7 +58,7 @@ public class AccountSelectActivity extends AppCompatActivity {
         viewPager.setAdapter(slidePagerAdapter);
         slidePagerAdapter.notifyDataSetChanged();
         updateValidity(slidePagerAdapter.item.isValid());
-        btn.setImageResource(R.drawable.ic_check_dark);
+        btn.setImageResource(R.drawable.ic_check);
         slidePagerAdapter.item.addChangeListener(this::updateValidity);
         btn.setOnClickListener(v -> {
             Bundle bundle = new Bundle();
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSetupActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSetupActivity.java
index c3919a788cf828189d3ca0c92978d543e5de70e3..7834a184d311184df38bbf281ccc741905e2fd9a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSetupActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSetupActivity.java
@@ -29,6 +29,7 @@ import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.AppCompatActivity;
+import android.support.v7.app.AppCompatDelegate;
 import android.view.View;
 
 import java.util.ArrayList;
@@ -46,6 +47,9 @@ import de.kuschku.util.accounts.Account;
 import de.kuschku.util.accounts.AccountManager;
 
 public class AccountSetupActivity extends AppCompatActivity implements ValidUpdateCallback {
+    static {
+        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
+    }
 
     @Bind(R.id.view_pager)
     ViewPager viewPager;
@@ -95,9 +99,9 @@ public class AccountSetupActivity extends AppCompatActivity implements ValidUpda
                 slideFragment.addChangeListener(AccountSetupActivity.this);
                 updateValidity(slideFragment.isValid());
                 if (viewPager.getCurrentItem() == slidePagerAdapter.list.size() - 1) {
-                    btn.setImageResource(R.drawable.ic_check_dark);
+                    btn.setImageResource(R.drawable.ic_check);
                 } else {
-                    btn.setImageResource(R.drawable.ic_arrow_right_dark);
+                    btn.setImageResource(R.drawable.ic_arrow_right);
                 }
             }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CoreSetupActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CoreSetupActivity.java
index 6101150239eb2c426c450ab57791b0b7bcc66171..58675d57dc2be8dec87f98443b62dbbb1bf6759a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CoreSetupActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CoreSetupActivity.java
@@ -29,6 +29,7 @@ import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.AppCompatActivity;
+import android.support.v7.app.AppCompatDelegate;
 import android.view.View;
 
 import java.util.ArrayList;
@@ -42,6 +43,9 @@ import de.kuschku.quasseldroid_ng.ui.setup.slides.CoreBackendSetupSlide;
 import de.kuschku.quasseldroid_ng.ui.setup.slides.SlideFragment;
 
 public class CoreSetupActivity extends AppCompatActivity implements ValidUpdateCallback {
+    static {
+        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
+    }
 
     @Bind(R.id.view_pager)
     ViewPager viewPager;
@@ -105,9 +109,9 @@ public class CoreSetupActivity extends AppCompatActivity implements ValidUpdateC
                 slidePagerAdapter.getItem(position).setData(bundle);
                 updateValidity(slideFragment.isValid());
                 if (viewPager.getCurrentItem() == slidePagerAdapter.list.size() - 1) {
-                    btn.setImageResource(R.drawable.ic_check_dark);
+                    btn.setImageResource(R.drawable.ic_check);
                 } else {
-                    btn.setImageResource(R.drawable.ic_arrow_right_dark);
+                    btn.setImageResource(R.drawable.ic_arrow_right);
                 }
             }
 
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 84520269965f8fbb72aea1088753326fd4546ef3..1ae3d86c4ee67bf672a2a6122e7adfb55f915864 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
@@ -22,6 +22,7 @@
 package de.kuschku.quasseldroid_ng.ui.theme;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.support.annotation.ColorInt;
 import android.support.annotation.NonNull;
@@ -29,18 +30,24 @@ import android.support.annotation.Nullable;
 import android.support.annotation.UiThread;
 import android.support.v4.graphics.drawable.DrawableCompat;
 import android.support.v7.view.ContextThemeWrapper;
+import android.util.SparseIntArray;
 
 import de.kuschku.libquassel.events.ConnectionChangeEvent;
+import de.kuschku.libquassel.objects.types.NetworkServer;
 import de.kuschku.libquassel.primitives.types.BufferInfo;
+import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
 import de.kuschku.quasseldroid_ng.R;
 import de.kuschku.util.annotationbind.AutoBinder;
 import de.kuschku.util.annotationbind.AutoColor;
 import de.kuschku.util.annotationbind.AutoDimen;
+import de.kuschku.util.annotationbind.AutoInt;
 import de.kuschku.util.annotationbind.AutoString;
 import de.kuschku.util.irc.chanmodes.ChanMode;
 import de.kuschku.util.ui.DateTimeFormatHelper;
 import de.kuschku.util.ui.SpanFormatter;
 
+import static android.support.v4.content.res.ResourcesCompat.getDrawable;
+
 public class ThemeUtil {
     @NonNull
     public final Colors res = new Colors();
@@ -58,20 +65,23 @@ public class ThemeUtil {
     public final StatusDrawables statusDrawables;
 
     public ThemeUtil(@NonNull Context ctx) {
-        initColors(new ContextThemeWrapper(ctx, ctx.getTheme()));
-        statusDrawables = new StatusDrawables(ctx, res);
+        ContextThemeWrapper themeWrapper = new ContextThemeWrapper(ctx, ctx.getTheme());
+        initColors(themeWrapper);
+        statusDrawables = new StatusDrawables(ctx, res, themeWrapper.getTheme());
         formatter = new DateTimeFormatHelper(ctx);
     }
 
     public ThemeUtil(@NonNull Context ctx, @NonNull AppTheme theme) {
-        initColors(new ContextThemeWrapper(ctx, theme.themeId));
-        statusDrawables = new StatusDrawables(ctx, res);
+        ContextThemeWrapper themeWrapper = new ContextThemeWrapper(ctx, theme.themeId);
+        initColors(themeWrapper);
+        statusDrawables = new StatusDrawables(ctx, res, themeWrapper.getTheme());
         formatter = new DateTimeFormatHelper(ctx);
     }
 
     @UiThread
     public void initColors(@NonNull ContextThemeWrapper wrapper) {
         try {
+            res.colors = null;
             AutoBinder.bind(res, wrapper);
             AutoBinder.bind(translations, wrapper);
             AutoBinder.bind(chanModes, wrapper);
@@ -104,15 +114,19 @@ public class ThemeUtil {
         public final Drawable channelOnline;
         public final Drawable channelOffline;
 
-        public StatusDrawables(Context ctx, Colors colors) {
-            online = ctx.getResources().getDrawable(R.drawable.ic_status);
+        public StatusDrawables(Context ctx, Colors colors, Resources.Theme theme) {
+            Resources resources = ctx.getResources();
+            online = getDrawable(resources, R.drawable.ic_status, theme);
             DrawableCompat.setTint(online, colors.colorAccent);
-            away = ctx.getResources().getDrawable(R.drawable.ic_status);
-            offline = ctx.getResources().getDrawable(R.drawable.ic_status_offline);
+            away = getDrawable(resources, R.drawable.ic_status, theme);
+            DrawableCompat.setTint(away, colors.colorAway);
+            offline = getDrawable(resources, R.drawable.ic_status_offline, theme);
+            DrawableCompat.setTint(offline, colors.colorOffline);
 
-            channelOnline = ctx.getResources().getDrawable(R.drawable.ic_status_channel);
+            channelOnline = getDrawable(resources, R.drawable.ic_status_channel, theme);
             DrawableCompat.setTint(channelOnline, colors.colorAccent);
-            channelOffline = ctx.getResources().getDrawable(R.drawable.ic_status_channel_offline);
+            channelOffline = getDrawable(resources, R.drawable.ic_status_channel_offline, theme);
+            DrawableCompat.setTint(channelOffline, colors.colorOffline);
         }
 
         public Drawable of(BufferInfo.Type type, BufferInfo.BufferStatus status) {
@@ -704,6 +718,32 @@ public class ThemeUtil {
         public CharSequence formatPlain(@NonNull CharSequence nick, @NonNull CharSequence message) {
             return SpanFormatter.format(messagePlain, nick, message);
         }
+
+        public String proxyType(NetworkServer.ProxyType type) {
+            switch (type) {
+                default:
+                case DefaultProxy:
+                    return "No Proxy";
+                case Socks5Proxy:
+                    return "Socks5";
+                case HttpProxy:
+                    return "Http";
+            }
+        }
+
+        public String minimumActivity(QBufferViewConfig.MinimumActivity minimumActivity) {
+            switch (minimumActivity) {
+                default:
+                case NONE:
+                    return "No Activity";
+                case OTHER:
+                    return "Other Activity";
+                case MESSAGE:
+                    return "Message";
+                case HIGHLIGHT:
+                    return "Highlight";
+            }
+        }
     }
 
     public static class Colors {
@@ -727,6 +767,21 @@ public class ThemeUtil {
         @ColorInt
         public int colorAccentFocus;
 
+        @AutoColor(R.attr.colorFill)
+        @ColorInt
+        public int colorFill;
+
+        @AutoColor(R.attr.colorOffline)
+        @ColorInt
+        public int colorOffline;
+
+        @AutoColor(R.attr.colorAway)
+        @ColorInt
+        public int colorAway;
+
+        @AutoInt(R.attr.colorForegroundMirc)
+        public int colorForegroundMirc;
+
         @AutoColor({R.attr.senderColor0, R.attr.senderColor1, R.attr.senderColor2, R.attr.senderColor3,
                 R.attr.senderColor4, R.attr.senderColor5, R.attr.senderColor6, R.attr.senderColor7,
                 R.attr.senderColor8, R.attr.senderColor9, R.attr.senderColorA, R.attr.senderColorB,
@@ -796,5 +851,18 @@ public class ThemeUtil {
         @AutoDimen(R.attr.actionBarSize)
         @ColorInt
         public int actionBarSize;
+
+        private SparseIntArray colors;
+
+        public int colorToId(int foregroundColor) {
+            if (colors == null) {
+                colors = new SparseIntArray(16);
+                for (int i = 0; i < mircColors.length; i++) {
+                    colors.put(mircColors[i], i);
+                }
+            }
+
+            return colors.get(foregroundColor, -1);
+        }
     }
 }
diff --git a/app/src/main/java/de/kuschku/util/annotationbind/AutoBinder.java b/app/src/main/java/de/kuschku/util/annotationbind/AutoBinder.java
index a0c5ed385791f7210e1b34d26958eca8d3c4d2fe..8a75c3f95de90547df93e0438c7f1a95b433b362 100644
--- a/app/src/main/java/de/kuschku/util/annotationbind/AutoBinder.java
+++ b/app/src/main/java/de/kuschku/util/annotationbind/AutoBinder.java
@@ -75,10 +75,27 @@ public class AutoBinder {
                     f.set(o, dimens[0]);
                 else
                     throw new IllegalAccessException("Field length does not correspond to argument length");
+            } else if (f.isAnnotationPresent(AutoInt.class)) {
+                int[] ints = obtainInts(f.getAnnotation(AutoInt.class).value(), theme);
+                if (f.getType().isArray())
+                    f.set(o, ints);
+                else if (ints.length == 1)
+                    f.set(o, ints[0]);
+                else
+                    throw new IllegalAccessException("Field length does not correspond to argument length");
             }
         }
     }
 
+    @ColorInt
+    public static int obtainColor(int res, @NonNull Resources.Theme theme) {
+        int result;
+        TypedArray t = theme.obtainStyledAttributes(new int[]{res});
+        result = t.getColor(0, 0x00000000);
+        t.recycle();
+        return result;
+    }
+
     @NonNull
     @ColorInt
     private static int[] obtainColors(@NonNull int[] res, @NonNull Resources.Theme theme) {
@@ -110,4 +127,15 @@ public class AutoBinder {
         t.recycle();
         return result;
     }
+
+    @NonNull
+    private static int[] obtainInts(@NonNull int[] res, @NonNull Resources.Theme theme) {
+        int[] result = new int[res.length];
+        TypedArray t = theme.obtainStyledAttributes(res);
+        for (int i = 0; i < res.length; i++) {
+            result[i] = t.getInt(i, 0x00000000);
+        }
+        t.recycle();
+        return result;
+    }
 }
diff --git a/app/src/main/java/de/kuschku/util/annotationbind/AutoInt.java b/app/src/main/java/de/kuschku/util/annotationbind/AutoInt.java
new file mode 100644
index 0000000000000000000000000000000000000000..66bb0e879523f3e3e37f03b3c0ee840f6de949fe
--- /dev/null
+++ b/app/src/main/java/de/kuschku/util/annotationbind/AutoInt.java
@@ -0,0 +1,33 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.util.annotationbind;
+
+import android.support.annotation.AnyRes;
+import android.support.annotation.NonNull;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface AutoInt {
+    @NonNull @AnyRes int[] value() default {};
+}
diff --git a/app/src/main/java/de/kuschku/util/backports/NumberHelper.java b/app/src/main/java/de/kuschku/util/backports/NumberHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..cecc76ab6d5f0127b88efa95854c90220dfc1b12
--- /dev/null
+++ b/app/src/main/java/de/kuschku/util/backports/NumberHelper.java
@@ -0,0 +1,48 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.util.backports;
+
+public class NumberHelper {
+    public static int parseInt(String text, int or) {
+        try {
+            return Integer.parseInt(text);
+        } catch (NumberFormatException e) {
+            return or;
+        }
+    }
+
+    public static short parseShort(String text, short or) {
+        try {
+            return Short.parseShort(text);
+        } catch (NumberFormatException e) {
+            return or;
+        }
+    }
+
+    public static long parseLong(String text, long or) {
+        try {
+            return Long.parseLong(text);
+        } catch (NumberFormatException e) {
+            return or;
+        }
+    }
+}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatDeserializer.java b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatDeserializer.java
index 530cdcb5e1c3df29b52c5cdbf17d9c13b0ef5873..d67fe3eee06026cd347ea258c98bf3607aa6cca6 100644
--- a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatDeserializer.java
+++ b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatDeserializer.java
@@ -22,13 +22,10 @@
 package de.kuschku.util.irc.format;
 
 
-import android.support.annotation.ColorInt;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.text.SpannableStringBuilder;
 import android.text.Spanned;
-import android.text.style.BackgroundColorSpan;
-import android.text.style.ForegroundColorSpan;
 import android.text.style.UnderlineSpan;
 
 import java.util.Arrays;
@@ -36,6 +33,10 @@ import java.util.HashSet;
 import java.util.Set;
 
 import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
+import de.kuschku.util.irc.format.spans.IrcBackgroundColorSpan;
+import de.kuschku.util.irc.format.spans.IrcBoldSpan;
+import de.kuschku.util.irc.format.spans.IrcForegroundColorSpan;
+import de.kuschku.util.irc.format.spans.IrcItalicSpan;
 
 import static de.kuschku.util.AndroidAssert.assertNotNull;
 
@@ -276,11 +277,6 @@ public class IrcFormatDeserializer {
         byte id();
     }
 
-    public interface ColorSupplier {
-        @ColorInt
-        int ircColor(byte color);
-    }
-
     private static class FormatDescription {
         public final int start;
         @NonNull
@@ -299,7 +295,7 @@ public class IrcFormatDeserializer {
     private static class ItalicIrcFormat implements IrcFormat {
         @Override
         public void applyTo(@NonNull SpannableStringBuilder editable, int from, int to) {
-            editable.setSpan(new ItalicSpan(), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+            editable.setSpan(new IrcItalicSpan(), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
         }
 
         @Override
@@ -323,7 +319,7 @@ public class IrcFormatDeserializer {
     private static class BoldIrcFormat implements IrcFormat {
         @Override
         public void applyTo(@NonNull SpannableStringBuilder editable, int from, int to) {
-            editable.setSpan(new BoldSpan(), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+            editable.setSpan(new IrcBoldSpan(), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
         }
 
         @Override
@@ -344,11 +340,11 @@ public class IrcFormatDeserializer {
         @Override
         public void applyTo(@NonNull SpannableStringBuilder editable, int from, int to) {
             int[] mircColors = context.themeUtil().res.mircColors;
-            if (foreground != -1) {
-                editable.setSpan(new ForegroundColorSpan(mircColors[foreground % 16]), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+            if (foreground != -1 && foreground != 99) {
+                editable.setSpan(new IrcForegroundColorSpan(foreground, mircColors[foreground % 16]), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
             }
-            if (background != -1) {
-                editable.setSpan(new BackgroundColorSpan(mircColors[background % 16]), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+            if (background != -1 && background != 99) {
+                editable.setSpan(new IrcBackgroundColorSpan(background, mircColors[background % 16]), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
             }
         }
 
diff --git a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatSerializer.java b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatSerializer.java
index df9bcc4dbc979bf3f012039df391112eb8740012..ab95459fe704d77e4ec10658fde8da0ba13ef5eb 100644
--- a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatSerializer.java
+++ b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatSerializer.java
@@ -27,12 +27,25 @@ import android.text.style.BackgroundColorSpan;
 import android.text.style.CharacterStyle;
 import android.text.style.ForegroundColorSpan;
 import android.text.style.UnderlineSpan;
+import android.util.Log;
 
+import java.util.Arrays;
 import java.util.Locale;
 
 import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
+import de.kuschku.util.irc.format.spans.IrcBackgroundColorSpan;
+import de.kuschku.util.irc.format.spans.IrcBoldSpan;
+import de.kuschku.util.irc.format.spans.IrcForegroundColorSpan;
+import de.kuschku.util.irc.format.spans.IrcItalicSpan;
 
 public class IrcFormatSerializer {
+    public static final char CODE_BOLD = 0x02;
+    public static final char CODE_COLOR = 0x03;
+    public static final char CODE_ITALIC = 0x1D;
+    public static final char CODE_UNDERLINE = 0x1F;
+    public static final char CODE_SWAP = 0x16;
+    public static final char CODE_RESET = 0x0F;
+
     private final AppContext context;
 
     public IrcFormatSerializer(AppContext context) {
@@ -46,94 +59,130 @@ public class IrcFormatSerializer {
         return out.toString();
     }
 
-    public int colorToId(int color) {
-        int[] colors = context.themeUtil().res.mircColors;
-        for (int i = 0; i < colors.length; i++) {
-            if (colors[i] == color)
-                return i;
-        }
-        return 0;
-    }
-
     private void withinParagraph(@NonNull StringBuilder out, @NonNull Spanned text,
                                  int start, int end) {
         int next;
+        int foreground = -1;
+        int background = -1;
+        boolean bold = false;
+        boolean underline = false;
+        boolean italic = false;
+
+        testLog(text);
+
         for (int i = start; i < end; i = next) {
             next = text.nextSpanTransition(i, end, CharacterStyle.class);
-            CharacterStyle[] style = text.getSpans(i, next,
-                    CharacterStyle.class);
+            CharacterStyle[] style = text.getSpans(i, next, CharacterStyle.class);
 
-            boolean jump = false;
+            Log.d("IrcFormat", "i is " + i);
+            Log.d("IrcFormat", "Next is " + next);
+            Log.d("IrcFormat", "Spans inbetween: " + Arrays.toString(style));
 
-            for (int j = 0; j < style.length; j++) {
-                if (jump) {
-                    jump = false;
-                } else {
-                    if ((text.getSpanFlags(style[j]) & Spanned.SPAN_COMPOSING) != 0)
-                        continue;
-
-                    if (style[j] instanceof BoldSpan) {
-                        out.append((char) 0x02);
-                    } else if (style[j] instanceof ItalicSpan) {
-                        out.append((char) 0x1D);
-                    } else if (style[j] instanceof UnderlineSpan) {
-                        out.append((char) 0x1F);
-                    } else if (style[j] instanceof ForegroundColorSpan) {
-                        int fg;
-                        int bg;
-                        fg = colorToId(((ForegroundColorSpan) style[j]).getForegroundColor());
-
-                        if ((j + 1 < style.length) && (style[j + 1] instanceof BackgroundColorSpan)) {
-                            bg = colorToId(((BackgroundColorSpan) style[j + 1]).getBackgroundColor());
-                        } else {
-                            bg = 99;
-                        }
+            int afterForeground = -1;
+            int afterBackground = -1;
+            boolean afterBold = false;
+            boolean afterUnderline = false;
+            boolean afterItalic = false;
+
+            for (CharacterStyle aStyle : style) {
+                if ((text.getSpanFlags(aStyle) & Spanned.SPAN_COMPOSING) != 0)
+                    continue;
 
-                        out.append((char) 0x03);
-                        out.append(String.format(Locale.US, "%02d,%02d", fg, bg));
+                if (aStyle instanceof IrcBoldSpan) {
+                    afterBold = true;
+                } else if (aStyle instanceof IrcItalicSpan) {
+                    afterItalic = true;
+                } else if (aStyle instanceof UnderlineSpan) {
+                    afterUnderline = true;
+                } else if (aStyle instanceof IrcForegroundColorSpan) {
+                    afterForeground = ((IrcForegroundColorSpan) aStyle).mircColor;
+                } else if (aStyle instanceof IrcBackgroundColorSpan) {
+                    afterBackground = ((IrcBackgroundColorSpan) aStyle).mircColor;
+                } else if (aStyle instanceof ForegroundColorSpan) {
+                    afterForeground = context.themeUtil().res.colorToId(((ForegroundColorSpan) aStyle).getForegroundColor());
+                } else if (aStyle instanceof BackgroundColorSpan) {
+                    afterBackground = context.themeUtil().res.colorToId(((BackgroundColorSpan) aStyle).getBackgroundColor());
+                }
+            }
 
-                        jump = true;
-                    } else if (style[j] instanceof BackgroundColorSpan) {
-                        int fg;
-                        int bg;
-                        if ((j + 1 < style.length) && (style[j + 1] instanceof ForegroundColorSpan)) {
-                            fg = colorToId(((ForegroundColorSpan) style[j + 1]).getForegroundColor());
-                        } else {
-                            fg = 99;
-                        }
+            if (afterBold != bold) {
+                Log.d("IrcFormat", "Changing bold from " + bold + " to " + afterBold);
+                out.append(CODE_BOLD);
+            }
 
-                        bg = colorToId(((BackgroundColorSpan) style[j]).getBackgroundColor());
+            if (afterUnderline != underline) {
+                Log.d("IrcFormat", "Changing underline from " + underline + " to " + afterUnderline);
+                out.append(CODE_UNDERLINE);
+            }
 
-                        out.append((char) 0x03);
-                        out.append(String.format(Locale.US, "%02d,%02d", fg, bg));
+            if (afterItalic != italic) {
+                Log.d("IrcFormat", "Changing italic from " + italic + " to " + afterItalic);
+                out.append(CODE_ITALIC);
+            }
 
-                        jump = true;
+            if (afterForeground != foreground || afterBackground != background) {
+                Log.d("IrcFormat", "Changing foreground from " + foreground + " to " + afterForeground);
+                Log.d("IrcFormat", "Changing background from " + background + " to " + afterBackground);
+                if (afterForeground == background && afterBackground == foreground) {
+                    out.append(CODE_SWAP);
+                } else {
+                    out.append(CODE_COLOR);
+                    if (background == afterBackground) {
+                        if (afterForeground != -1) {
+                            out.append(String.format(Locale.US, "%02d", afterForeground));
+                        } else {
+                            out.append(String.format(Locale.US, "%02d", context.themeUtil().res.colorForegroundMirc));
+                        }
+                    } else {
+                        if (afterBackground == -1) {
+                            if (afterForeground != -1) {
+                                out.append(CODE_COLOR);
+                                out.append(String.format(Locale.US, "%02d", afterForeground));
+                            } else {
+                                // Foreground changed from a value to null, we don’t set any new foreground
+                                // Background changed from a value to null, we don’t set any new background
+                            }
+                        } else {
+                            if (afterForeground != -1) {
+                                out.append(String.format(Locale.US, "%02d,%02d", afterForeground, afterBackground));
+                            } else {
+                                out.append(String.format(Locale.US, "%02d,%02d", context.themeUtil().res.colorForegroundMirc, afterBackground));
+                            }
+                        }
                     }
                 }
             }
 
             out.append(text.subSequence(i, next));
 
-            for (int j = style.length - 1; j >= 0; j--) {
-                if ((text.getSpanFlags(style[j]) & Spanned.SPAN_COMPOSING) != 0)
-                    continue;
+            bold = afterBold;
+            italic = afterItalic;
+            underline = afterUnderline;
+            background = afterBackground;
+            foreground = afterForeground;
+        }
 
-                if (style[j] instanceof ForegroundColorSpan) {
-                    out.append((char) 0x03);
-                }
-                if (style[j] instanceof BackgroundColorSpan) {
-                    out.append((char) 0x03);
-                }
-                if (style[j] instanceof UnderlineSpan) {
-                    out.append((char) 0x1F);
-                }
-                if (style[j] instanceof BoldSpan) {
-                    out.append((char) 0x02);
-                }
-                if (style[j] instanceof ItalicSpan) {
-                    out.append((char) 0x1D);
-                }
+        if (bold || italic || underline || background != -1 || foreground != -1)
+            out.append(CODE_RESET);
+    }
+
+    private void testLog(Spanned text) {
+        StringBuilder out = new StringBuilder();
+        int next;
+        for (int i = 0; i < text.length(); i = next) {
+            next = text.nextSpanTransition(i, text.length(), CharacterStyle.class);
+            CharacterStyle[] styles = text.getSpans(i, next, CharacterStyle.class);
+
+            for (CharacterStyle style : styles) {
+                out.append("<").append(style.getClass().getSimpleName()).append(">");
+            }
+
+            out.append(text.subSequence(i, next));
+
+            for (int i1 = styles.length - 1; i1 >= 0; i1--) {
+                out.append("</").append(styles[i1].getClass().getSimpleName()).append(">");
             }
         }
+        Log.e("IrcFormat", String.valueOf(out));
     }
 }
diff --git a/app/src/main/java/de/kuschku/util/irc/format/ItalicSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/Copyable.java
similarity index 80%
rename from app/src/main/java/de/kuschku/util/irc/format/ItalicSpan.java
rename to app/src/main/java/de/kuschku/util/irc/format/spans/Copyable.java
index 96c93a85bab7518dae76af5640f29ddc189a038d..45307ac8b51b8bc9a694a047a54ea678c4dd255e 100644
--- a/app/src/main/java/de/kuschku/util/irc/format/ItalicSpan.java
+++ b/app/src/main/java/de/kuschku/util/irc/format/spans/Copyable.java
@@ -19,13 +19,8 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-package de.kuschku.util.irc.format;
+package de.kuschku.util.irc.format.spans;
 
-import android.graphics.Typeface;
-import android.text.style.StyleSpan;
-
-public class ItalicSpan extends StyleSpan {
-    public ItalicSpan() {
-        super(Typeface.ITALIC);
-    }
+public interface Copyable<T> {
+    T copy();
 }
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBackgroundColorSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBackgroundColorSpan.java
new file mode 100644
index 0000000000000000000000000000000000000000..758408fcddf04dd8926254310bda0f965611e684
--- /dev/null
+++ b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBackgroundColorSpan.java
@@ -0,0 +1,39 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.util.irc.format.spans;
+
+import android.support.annotation.ColorInt;
+import android.text.style.BackgroundColorSpan;
+
+public class IrcBackgroundColorSpan extends BackgroundColorSpan implements Copyable<IrcBackgroundColorSpan> {
+    public final int mircColor;
+
+    public IrcBackgroundColorSpan(int mircColor, @ColorInt int color) {
+        super(color);
+        this.mircColor = mircColor;
+    }
+
+    @Override
+    public IrcBackgroundColorSpan copy() {
+        return new IrcBackgroundColorSpan(mircColor, getBackgroundColor());
+    }
+}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/BoldSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBoldSpan.java
similarity index 80%
rename from app/src/main/java/de/kuschku/util/irc/format/BoldSpan.java
rename to app/src/main/java/de/kuschku/util/irc/format/spans/IrcBoldSpan.java
index 3e1342368972f08923e90c65409750d02cf852a3..aa4361ddfde85fb5b95dea04c39d9222bd77c153 100644
--- a/app/src/main/java/de/kuschku/util/irc/format/BoldSpan.java
+++ b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBoldSpan.java
@@ -19,13 +19,18 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-package de.kuschku.util.irc.format;
+package de.kuschku.util.irc.format.spans;
 
 import android.graphics.Typeface;
 import android.text.style.StyleSpan;
 
-public class BoldSpan extends StyleSpan {
-    public BoldSpan() {
+public class IrcBoldSpan extends StyleSpan implements Copyable<IrcBoldSpan> {
+    public IrcBoldSpan() {
         super(Typeface.BOLD);
     }
+
+    @Override
+    public IrcBoldSpan copy() {
+        return new IrcBoldSpan();
+    }
 }
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcForegroundColorSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcForegroundColorSpan.java
new file mode 100644
index 0000000000000000000000000000000000000000..5cf8c7ebb72356d5f6f6527b0ae7f6b18f471be6
--- /dev/null
+++ b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcForegroundColorSpan.java
@@ -0,0 +1,39 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.util.irc.format.spans;
+
+import android.support.annotation.ColorInt;
+import android.text.style.ForegroundColorSpan;
+
+public class IrcForegroundColorSpan extends ForegroundColorSpan implements Copyable<IrcForegroundColorSpan> {
+    public final int mircColor;
+
+    public IrcForegroundColorSpan(int mircColor, @ColorInt int color) {
+        super(color);
+        this.mircColor = mircColor;
+    }
+
+    @Override
+    public IrcForegroundColorSpan copy() {
+        return new IrcForegroundColorSpan(mircColor, getForegroundColor());
+    }
+}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcItalicSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcItalicSpan.java
new file mode 100644
index 0000000000000000000000000000000000000000..149a4012daa3f349837d38718c3a47d63ee2a16f
--- /dev/null
+++ b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcItalicSpan.java
@@ -0,0 +1,36 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.util.irc.format.spans;
+
+import android.graphics.Typeface;
+import android.text.style.StyleSpan;
+
+public class IrcItalicSpan extends StyleSpan implements Copyable<IrcItalicSpan> {
+    public IrcItalicSpan() {
+        super(Typeface.ITALIC);
+    }
+
+    @Override
+    public IrcItalicSpan copy() {
+        return new IrcItalicSpan();
+    }
+}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcUnderlineSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcUnderlineSpan.java
new file mode 100644
index 0000000000000000000000000000000000000000..1eef3ebada5a266e728c05c67d6f195502b2f269
--- /dev/null
+++ b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcUnderlineSpan.java
@@ -0,0 +1,31 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.util.irc.format.spans;
+
+import android.text.style.UnderlineSpan;
+
+public class IrcUnderlineSpan extends UnderlineSpan implements Copyable<IrcUnderlineSpan> {
+    @Override
+    public IrcUnderlineSpan copy() {
+        return new IrcUnderlineSpan();
+    }
+}
diff --git a/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java b/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java
index e4bfdfec4df137eda30cd425d666e02812440444..10180761b48a184a740b98b1fc546965431aed13 100644
--- a/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java
+++ b/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java
@@ -28,20 +28,29 @@ import android.os.IBinder;
 import android.support.annotation.Nullable;
 import android.support.annotation.StyleRes;
 import android.support.v7.app.AppCompatActivity;
+import android.support.v7.app.AppCompatDelegate;
+import android.view.Menu;
 
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
 import de.kuschku.libquassel.BusProvider;
 import de.kuschku.libquassel.events.ConnectionChangeEvent;
+import de.kuschku.quasseldroid_ng.R;
 import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread;
 import de.kuschku.quasseldroid_ng.service.QuasselService;
 import de.kuschku.quasseldroid_ng.ui.chat.util.ServiceHelper;
 import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
 import de.kuschku.quasseldroid_ng.ui.theme.AppTheme;
 import de.kuschku.util.accounts.Account;
+import de.kuschku.util.annotationbind.AutoBinder;
+import de.kuschku.util.ui.MenuTint;
 
 public abstract class BoundActivity extends AppCompatActivity {
+    static {
+        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
+    }
+
     protected AppContext context = new AppContext();
     protected QuasselService.LocalBinder binder;
     @StyleRes
@@ -127,6 +136,13 @@ public abstract class BoundActivity extends AppCompatActivity {
             onDisconnected();
     }
 
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        boolean value = super.onCreateOptionsMenu(menu);
+        MenuTint.colorIcons(this, menu, AutoBinder.obtainColor(R.attr.colorFill, getSupportActionBar().getThemedContext().getTheme()));
+        return value;
+    }
+
     protected void stopConnection() {
         if (binder != null) {
             binder.stopBackgroundThread();
diff --git a/app/src/main/java/de/kuschku/util/ui/AnimationHelper.java b/app/src/main/java/de/kuschku/util/ui/AnimationHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e68b3dfd584634c4477400aed8551ac3d471ff0
--- /dev/null
+++ b/app/src/main/java/de/kuschku/util/ui/AnimationHelper.java
@@ -0,0 +1,82 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.util.ui;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.Transformation;
+
+public class AnimationHelper {
+    public static void expand(final ViewGroup v) {
+        v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+        final int targetHeight = v.getMeasuredHeight();
+
+        // Older versions of android (pre API 21) cancel animations for views with a height of 0.
+        v.getLayoutParams().height = 1;
+        v.setVisibility(View.VISIBLE);
+        Animation a = new Animation() {
+            @Override
+            protected void applyTransformation(float interpolatedTime, Transformation t) {
+                v.getLayoutParams().height = interpolatedTime == 1
+                        ? ViewGroup.LayoutParams.WRAP_CONTENT
+                        : (int) (targetHeight * interpolatedTime);
+                v.setAlpha(interpolatedTime);
+                v.requestLayout();
+            }
+
+            @Override
+            public boolean willChangeBounds() {
+                return true;
+            }
+        };
+
+        // 1dp/ms
+        a.setDuration((int) (targetHeight / v.getContext().getResources().getDisplayMetrics().density));
+        v.startAnimation(a);
+    }
+
+    public static void collapse(final ViewGroup v) {
+        final int initialHeight = v.getMeasuredHeight();
+
+        Animation a = new Animation() {
+            @Override
+            protected void applyTransformation(float interpolatedTime, Transformation t) {
+                if (interpolatedTime == 1) {
+                    v.setVisibility(View.GONE);
+                } else {
+                    v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
+                    v.setAlpha(1 - interpolatedTime);
+                    v.requestLayout();
+                }
+            }
+
+            @Override
+            public boolean willChangeBounds() {
+                return true;
+            }
+        };
+
+        a.setDuration((int) (initialHeight / v.getContext().getResources().getDisplayMetrics().density));
+        v.startAnimation(a);
+    }
+}
diff --git a/app/src/main/java/de/kuschku/util/ui/MenuTint.java b/app/src/main/java/de/kuschku/util/ui/MenuTint.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd524c779dfec4f8906e92a33bbe114dd73214dd
--- /dev/null
+++ b/app/src/main/java/de/kuschku/util/ui/MenuTint.java
@@ -0,0 +1,630 @@
+/*
+ * QuasselDroid - Quassel client for Android
+ * Copyright (C) 2016 Janne Koschinski
+ * Copyright (C) 2016 Ken Børge Viktil
+ * Copyright (C) 2016 Magnus Fjell
+ * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * Copyright (C) 2015. Jared Rummler <jared.rummler@gmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package de.kuschku.util.ui;
+
+import android.app.Activity;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.view.menu.MenuItemImpl;
+import android.support.v7.widget.ActionMenuView;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MenuItem.OnActionExpandListener;
+import android.view.SubMenu;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.SearchView;
+
+import java.lang.reflect.Method;
+
+/**
+ * <p>Apply colors and/or transparency to menu icons in a {@link Menu}.</p>
+ * <p>
+ * <p>Example usage:</p>
+ * <p>
+ * <pre class="prettyprint">
+ * public boolean onCreateOptionsMenu(Menu menu) {
+ * ...
+ * int color = getResources().getColor(R.color.your_awesome_color);
+ * int alpha = 204; // 80% transparency
+ * MenuTint.on(menu).setMenuItemIconColor(color).setMenuItemIconAlpha(alpha).apply(this);
+ * ...
+ * }
+ * </pre>
+ */
+public class MenuTint {
+
+    private static final String TAG = "MenuTint";
+
+    private static Method nativeIsActionButton;
+    private final Menu menu;
+    private final Integer originalMenuItemIconColor;
+    private final Integer menuItemIconAlpha;
+    private final Integer subMenuIconColor;
+    private final Integer subMenuIconAlpha;
+    private final Integer overflowDrawableId;
+    private final boolean reApplyOnChange;
+    private final boolean forceIcons;
+    private Integer menuItemIconColor;
+    private ImageView overflowButton;
+    private ViewGroup actionBarView;
+
+    private MenuTint(Builder builder) {
+        menu = builder.menu;
+        originalMenuItemIconColor = builder.originalMenuItemIconColor;
+        menuItemIconColor = builder.menuItemIconColor;
+        menuItemIconAlpha = builder.menuItemIconAlpha;
+        subMenuIconColor = builder.subMenuIconColor;
+        subMenuIconAlpha = builder.subMenuIconAlpha;
+        overflowDrawableId = builder.overflowDrawableId;
+        reApplyOnChange = builder.reApplyOnChange;
+        forceIcons = builder.forceIcons;
+    }
+
+    /**
+     * Check if an item is showing (not in the overflow menu).
+     *
+     * @param item the MenuItem.
+     * @return {@code true} if the MenuItem is visible on the ActionBar.
+     */
+    public static boolean isActionButton(MenuItem item) {
+        if (item instanceof MenuItemImpl) {
+            return ((MenuItemImpl) item).isActionButton();
+        }
+        if (nativeIsActionButton == null) {
+            try {
+                Class<?> MenuItemImpl = Class.forName("com.android.internal.view.menu.MenuItemImpl");
+                nativeIsActionButton = MenuItemImpl.getDeclaredMethod("isActionButton");
+                if (!nativeIsActionButton.isAccessible()) {
+                    nativeIsActionButton.setAccessible(true);
+                }
+            } catch (Exception ignored) {
+            }
+        }
+        try {
+            return (boolean) nativeIsActionButton.invoke(item, (Object[]) null);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return true;
+    }
+
+    /**
+     * Check if an item is in the overflow menu.
+     *
+     * @param item the MenuItem
+     * @return {@code true} if the MenuItem is in the overflow menu.
+     * @see #isActionButton(MenuItem)
+     */
+    public static boolean isInOverflow(MenuItem item) {
+        return !isActionButton(item);
+    }
+
+    /**
+     * Sets the color filter and/or the alpha transparency on a {@link MenuItem}'s icon.
+     *
+     * @param menuItem The {@link MenuItem} to theme.
+     * @param color    The color to set for the color filter or {@code null} for no changes.
+     * @param alpha    The alpha value (0...255) to set on the icon or {@code null} for no changes.
+     */
+    public static void colorMenuItem(MenuItem menuItem, Integer color, Integer alpha) {
+        if (color == null && alpha == null) {
+            return; // nothing to do.
+        }
+        Drawable drawable = menuItem.getIcon();
+        if (drawable != null) {
+            // If we don't mutate the drawable, then all drawables with this id will have the ColorFilter
+            drawable.mutate();
+            if (color != null) {
+                drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
+            }
+            if (alpha != null) {
+                drawable.setAlpha(alpha);
+            }
+        }
+    }
+
+    /**
+     * Set the menu to show MenuItem icons in the overflow window.
+     *
+     * @param menu the menu to force icons to show
+     */
+    public static void forceMenuIcons(Menu menu) {
+        try {
+            Class<?> MenuBuilder = menu.getClass();
+            Method setOptionalIconsVisible =
+                    MenuBuilder.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
+            if (!setOptionalIconsVisible.isAccessible()) {
+                setOptionalIconsVisible.setAccessible(true);
+            }
+            setOptionalIconsVisible.invoke(menu, true);
+        } catch (Exception ignored) {
+        }
+    }
+
+    public static Builder on(Menu menu) {
+        return new Builder(menu);
+    }
+
+    /**
+     * Apply a ColorFilter with the specified color to all icons in the menu.
+     *
+     * @param menu  the menu after items have been added.
+     * @param color the color for the ColorFilter.
+     */
+    public static void colorIcons(Menu menu, int color) {
+        MenuTint.on(menu).setMenuItemIconColor(color).apply();
+    }
+
+    public static void colorIcons(Activity activity, Menu menu, int color) {
+        MenuTint.on(menu).setMenuItemIconColor(color).apply(activity);
+    }
+
+    /**
+     * @param activity the Activity
+     * @return the OverflowMenuButton or {@code null} if it doesn't exist.
+     */
+    public static ImageView getOverflowMenuButton(Activity activity) {
+        return findOverflowMenuButton(activity, findActionBar(activity));
+    }
+
+    private static ImageView findOverflowMenuButton(Activity activity, ViewGroup viewGroup) {
+        if (viewGroup == null) {
+            return null;
+        }
+        ImageView overflow = null;
+        for (int i = 0, count = viewGroup.getChildCount(); i < count; i++) {
+            View v = viewGroup.getChildAt(i);
+            if (v instanceof ImageView
+                    && (v.getClass().getSimpleName().equals("OverflowMenuButton")
+                    || v instanceof ActionMenuView.ActionMenuChildView)) {
+                overflow = (ImageView) v;
+            } else if (v instanceof ViewGroup) {
+                overflow = findOverflowMenuButton(activity, (ViewGroup) v);
+            }
+            if (overflow != null) {
+                break;
+            }
+        }
+        return overflow;
+    }
+
+    private static ViewGroup findActionBar(Activity activity) {
+        int id = activity.getResources().getIdentifier("action_bar", "id", "android");
+        ViewGroup actionBar = null;
+        if (id != 0) {
+            actionBar = (ViewGroup) activity.findViewById(id);
+        }
+        if (actionBar == null) {
+            actionBar = findToolbar((ViewGroup)
+                    activity.findViewById(android.R.id.content).getRootView());
+        }
+        return actionBar;
+    }
+
+    private static ViewGroup findToolbar(ViewGroup viewGroup) {
+        ViewGroup toolbar = null;
+        for (int i = 0, len = viewGroup.getChildCount(); i < len; i++) {
+            View view = viewGroup.getChildAt(i);
+            if (view.getClass() == android.support.v7.widget.Toolbar.class
+                    || view.getClass().getName().equals("android.widget.Toolbar")) {
+                toolbar = (ViewGroup) view;
+            } else if (view instanceof ViewGroup) {
+                toolbar = findToolbar((ViewGroup) view);
+            }
+            if (toolbar != null) {
+                break;
+            }
+        }
+        return toolbar;
+    }
+
+    public void apply() {
+        if (forceIcons) {
+            forceMenuIcons(menu);
+        }
+
+        for (int i = 0, size = menu.size(); i < size; i++) {
+            MenuItem item = menu.getItem(i);
+            colorMenuItem(item, menuItemIconColor, menuItemIconAlpha);
+            if (reApplyOnChange) {
+                View view = item.getActionView();
+                if (view != null) {
+                    if (item instanceof MenuItemImpl) {
+                        ((MenuItemImpl) item).setSupportOnActionExpandListener(
+                                new SupportActionExpandListener(this));
+                    } else {
+                        item.setOnActionExpandListener(new NativeActionExpandListener(this));
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * <p>Sets a ColorFilter and/or alpha on all the {@link MenuItem}s in the menu, including the
+     * OverflowMenuButton.</p>
+     * <p>
+     * <p>Call this method after inflating/creating your menu in
+     * {@link Activity#onCreateOptionsMenu(Menu)}.</p>
+     * <p>
+     * <p>Note: This is targeted for the native ActionBar/Toolbar, not AppCompat.</p>
+     */
+    public void apply(Activity activity) {
+        apply();
+        actionBarView = findActionBar(activity);
+        if (actionBarView == null) {
+            Log.w(TAG, "Could not find the ActionBar");
+            return;
+        }
+
+        // We must wait for the view to be created to set a color filter on the drawables.
+        actionBarView.post(new Runnable() {
+
+            @Override
+            public void run() {
+                for (int i = 0, size = menu.size(); i < size; i++) {
+                    MenuItem menuItem = menu.getItem(i);
+                    if (isInOverflow(menuItem)) {
+                        colorMenuItem(menuItem, subMenuIconColor, subMenuIconAlpha);
+                    }
+                    if (menuItem.hasSubMenu()) {
+                        SubMenu subMenu = menuItem.getSubMenu();
+                        for (int j = 0; j < subMenu.size(); j++) {
+                            colorMenuItem(subMenu.getItem(j), subMenuIconColor, subMenuIconAlpha);
+                        }
+                    }
+                }
+                if (menuItemIconColor != null || menuItemIconAlpha != null) {
+                    overflowButton = findOverflowMenuButton(activity, actionBarView);
+                    colorOverflowMenuItem(overflowButton);
+                }
+            }
+        });
+    }
+
+    /**
+     * <p>Sets a ColorFilter and/or alpha on all the {@link MenuItem}s in the menu, including the
+     * OverflowMenuButton.</p>
+     * <p>
+     * <p>This should only be called after calling {@link #apply(Activity)}. It is useful for when
+     * {@link MenuItem}s might be re-arranged due to an action view being collapsed or expanded.</p>
+     */
+    public void reapply() {
+
+        for (int i = 0, size = menu.size(); i < size; i++) {
+            MenuItem item = menu.getItem(i);
+            if (isActionButton(item)) {
+                colorMenuItem(menu.getItem(i), menuItemIconColor, menuItemIconAlpha);
+            }
+        }
+
+        if (actionBarView == null) {
+            return;
+        }
+
+        actionBarView.post(new Runnable() {
+
+            @Override
+            public void run() {
+                for (int i = 0, size = menu.size(); i < size; i++) {
+                    MenuItem menuItem = menu.getItem(i);
+                    if (isInOverflow(menuItem)) {
+                        colorMenuItem(menuItem, subMenuIconColor, subMenuIconAlpha);
+                    } else {
+                        colorMenuItem(menu.getItem(i), menuItemIconColor, menuItemIconAlpha);
+                    }
+                    if (menuItem.hasSubMenu()) {
+                        SubMenu subMenu = menuItem.getSubMenu();
+                        for (int j = 0; j < subMenu.size(); j++) {
+                            colorMenuItem(subMenu.getItem(j), subMenuIconColor, subMenuIconAlpha);
+                        }
+                    }
+                }
+                if (menuItemIconColor != null || menuItemIconAlpha != null) {
+                    colorOverflowMenuItem(overflowButton);
+                }
+            }
+
+        });
+    }
+
+    private void colorOverflowMenuItem(ImageView overflow) {
+        if (overflow != null) {
+            if (overflowDrawableId != null) {
+                overflow.setImageResource(overflowDrawableId);
+            }
+            if (menuItemIconColor != null) {
+                overflow.setColorFilter(menuItemIconColor);
+            }
+            if (menuItemIconAlpha != null) {
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+                    overflow.setImageAlpha(menuItemIconAlpha);
+                } else {
+                    overflow.setAlpha(menuItemIconAlpha);
+                }
+            }
+        }
+    }
+
+    public Menu getMenu() {
+        return menu;
+    }
+
+    public ImageView getOverflowMenuButton() {
+        return overflowButton;
+    }
+
+    public void setMenuItemIconColor(Integer color) {
+        menuItemIconColor = color;
+    }
+
+    public static class NativeActionExpandListener implements OnActionExpandListener {
+
+        private final MenuTint menuTint;
+
+        public NativeActionExpandListener(MenuTint menuTint) {
+            this.menuTint = menuTint;
+        }
+
+        @Override
+        public boolean onMenuItemActionExpand(MenuItem item) {
+            int color = menuTint.originalMenuItemIconColor == null ? menuTint.menuItemIconColor :
+                    menuTint.originalMenuItemIconColor;
+            menuTint.setMenuItemIconColor(color);
+            menuTint.reapply();
+            return true;
+        }
+
+        @Override
+        public boolean onMenuItemActionCollapse(MenuItem item) {
+            int color = menuTint.originalMenuItemIconColor == null ? menuTint.menuItemIconColor :
+                    menuTint.originalMenuItemIconColor;
+            menuTint.setMenuItemIconColor(color);
+            menuTint.reapply();
+            return true;
+        }
+
+    }
+
+    public static class SupportActionExpandListener implements
+            MenuItemCompat.OnActionExpandListener {
+
+        private final MenuTint menuTint;
+
+        public SupportActionExpandListener(MenuTint menuTint) {
+            this.menuTint = menuTint;
+        }
+
+        @Override
+        public boolean onMenuItemActionExpand(MenuItem item) {
+            int color = menuTint.originalMenuItemIconColor == null ? menuTint.menuItemIconColor :
+                    menuTint.originalMenuItemIconColor;
+            menuTint.setMenuItemIconColor(color);
+            menuTint.reapply();
+            return true;
+        }
+
+        @Override
+        public boolean onMenuItemActionCollapse(MenuItem item) {
+            int color = menuTint.originalMenuItemIconColor == null ? menuTint.menuItemIconColor :
+                    menuTint.originalMenuItemIconColor;
+            menuTint.setMenuItemIconColor(color);
+            menuTint.reapply();
+            return true;
+        }
+
+    }
+
+    // --------------------------------------------------------------------------------------------
+
+    public static final class Builder {
+
+        private final Menu menu;
+        private Integer menuItemIconColor;
+        private Integer menuItemIconAlpha;
+        private Integer subMenuIconColor;
+        private Integer subMenuIconAlpha;
+        private Integer overflowDrawableId;
+        private Integer originalMenuItemIconColor;
+        private boolean reApplyOnChange;
+        private boolean forceIcons;
+
+        private Builder(Menu menu) {
+            this.menu = menu;
+        }
+
+        /**
+         * <p>Sets an {@link OnActionExpandListener} on all {@link MenuItem}s with views, so when the
+         * menu is updated, the colors will be also.</p>
+         * <p>
+         * <p>This is useful when the overflow menu is showing icons and {@link MenuItem}s might be
+         * pushed to the overflow menu when a action view is expanded e.g. android.widget.SearchView.
+         * </p>
+         *
+         * @param reapply {@code true} to set the listeners on all {@link MenuItem}s with action views.
+         * @return this Builder object to allow for chaining of calls to set methods
+         */
+        public Builder reapplyOnChange(boolean reapply) {
+            reApplyOnChange = reapply;
+            return this;
+        }
+
+        /**
+         * Specify an alpha value for visible MenuItem icons, including the OverflowMenuButton.
+         *
+         * @param alpha the alpha value for the drawable. 0 means fully transparent, and 255 means fully
+         *              opaque.
+         * @return this Builder object to allow for chaining of calls to set methods
+         */
+        public Builder setMenuItemIconAlpha(int alpha) {
+            menuItemIconAlpha = alpha;
+            return this;
+        }
+
+        /**
+         * Specify a color for visible MenuItem icons, including the OverflowMenuButton.
+         *
+         * @param color the color to apply on visible MenuItem icons, including the OverflowMenuButton.
+         * @return this Builder object to allow for chaining of calls to set methods
+         */
+        public Builder setMenuItemIconColor(int color) {
+            menuItemIconColor = color;
+            return this;
+        }
+
+        /**
+         * Specify a color that is applied when an action view is expanded or collapsed.
+         *
+         * @param color the color to apply on MenuItems when an action-view is expanded or collapsed.
+         * @return this Builder object to allow for chaining of calls to set methods
+         */
+        public Builder setOriginalMenuItemIconColor(int color) {
+            originalMenuItemIconColor = color;
+            return this;
+        }
+
+        /**
+         * Set the drawable id to set on the OverflowMenuButton.
+         *
+         * @param drawableId the resource identifier of the drawable
+         * @return this Builder object to allow for chaining of calls to set methods
+         */
+        public Builder setOverflowDrawableId(int drawableId) {
+            overflowDrawableId = drawableId;
+            return this;
+        }
+
+        /**
+         * Specify an alpha value for MenuItems that are in a SubMenu or in the Overflow menu.
+         *
+         * @param alpha the alpha value for the drawable. 0 means fully transparent, and 255 means fully
+         *              opaque.
+         * @return this Builder object to allow for chaining of calls to set methods
+         */
+        public Builder setSubMenuIconAlpha(int alpha) {
+            subMenuIconAlpha = alpha;
+            return this;
+        }
+
+        /**
+         * Specify a color for MenuItems that are in a SubMenu or in the Overflow menu.
+         *
+         * @param color the color to apply on visible MenuItem icons, including the OverflowMenuButton.
+         * @return this Builder object to allow for chaining of calls to set methods
+         */
+        public Builder setSubMenuIconColor(int color) {
+            subMenuIconColor = color;
+            return this;
+        }
+
+        /**
+         * Set the menu to show MenuItem icons in the overflow window.
+         *
+         * @return this Builder object to allow for chaining of calls to set methods
+         */
+        public Builder forceIcons() {
+            forceIcons = true;
+            return this;
+        }
+
+        /**
+         * <p>Sets a ColorFilter and/or alpha on all the MenuItems in the menu, including the
+         * OverflowMenuButton.</p>
+         * <p>
+         * <p>Call this method after inflating/creating your menu in</p>
+         * {@link Activity#onCreateOptionsMenu(Menu)}.</p>
+         * <p>
+         * <p>Note: This is targeted for the native ActionBar/Toolbar, not AppCompat.</p>
+         */
+        public MenuTint apply() {
+            MenuTint theme = new MenuTint(this);
+            theme.apply();
+            return theme;
+        }
+
+        public MenuTint apply(Activity activity) {
+            MenuTint theme = new MenuTint(this);
+            theme.apply(activity);
+            return theme;
+        }
+
+        /**
+         * <p>Creates a {@link MenuTint} with the arguments supplied to this builder.</p>
+         * <p>
+         * <p>It does not apply the theme. Call {@link MenuTint#apply(Activity)} to do so.</p>
+         *
+         * @see #apply(Activity)
+         */
+        public MenuTint create() {
+            return new MenuTint(this);
+        }
+
+    }
+
+    // --------------------------------------------------------------------------------------------
+
+    /**
+     * Auto collapses the SearchView when the soft keyboard is dismissed.
+     */
+    public static class SearchViewFocusListener implements View.OnFocusChangeListener {
+
+        private final MenuItem item;
+
+        public SearchViewFocusListener(MenuItem item) {
+            this.item = item;
+        }
+
+        @Override
+        public void onFocusChange(View v, boolean hasFocus) {
+            if (!hasFocus && item != null) {
+                item.collapseActionView();
+                if (v instanceof SearchView) {
+                    ((SearchView) v).setQuery("", false);
+                }
+            }
+        }
+
+    }
+
+}
diff --git a/app/src/main/res/drawable-hdpi/ic_arrow_right_dark.png b/app/src/main/res/drawable-hdpi/ic_arrow_right_dark.png
deleted file mode 100644
index b0d7b5de459915e9495a781693cf1e88d653644f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_arrow_right_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_arrow_right_light.png b/app/src/main/res/drawable-hdpi/ic_arrow_right_light.png
deleted file mode 100644
index 65248d20b30ebc08bdaae70baf78c9d02fc8a43f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_arrow_right_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_bug_dark.png b/app/src/main/res/drawable-hdpi/ic_bug_dark.png
deleted file mode 100644
index 8ccf722e84632fba9d1ecb63026e6419e56522e0..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_bug_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_bug_light.png b/app/src/main/res/drawable-hdpi/ic_bug_light.png
deleted file mode 100644
index c604df5a4fb4f7bc5274b44d9fa1e6505762b606..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_bug_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_check_dark.png b/app/src/main/res/drawable-hdpi/ic_check_dark.png
deleted file mode 100644
index 6adfa198b63624fae6de340de17ea5e8b8a4a61e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_check_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_check_light.png b/app/src/main/res/drawable-hdpi/ic_check_light.png
deleted file mode 100644
index 9e4a0b2b345fd838bf05b06ab39910b58a2131a0..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_check_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_delete_dark.png b/app/src/main/res/drawable-hdpi/ic_delete_dark.png
deleted file mode 100644
index 921e56198a8d784c09185f26ff4c0353c2c235a7..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_delete_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_delete_light.png b/app/src/main/res/drawable-hdpi/ic_delete_light.png
deleted file mode 100644
index 29415958a21b2f0514eddc1ba3b452032a9e88d2..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_delete_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_filter_dark.png b/app/src/main/res/drawable-hdpi/ic_filter_dark.png
deleted file mode 100644
index cd32743d1373bceb23abe67682c6e32e90f85050..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_filter_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_filter_light.png b/app/src/main/res/drawable-hdpi/ic_filter_light.png
deleted file mode 100644
index f0d8398f255f0ed47c5870e6c5d7862d43dbc4c9..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_filter_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_bold_dark.png b/app/src/main/res/drawable-hdpi/ic_format_bold_dark.png
deleted file mode 100644
index 0990216d2ef22cc8da6770cb38939e15fa9263d9..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_bold_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_bold_light.png b/app/src/main/res/drawable-hdpi/ic_format_bold_light.png
deleted file mode 100644
index 2dcb664aef2419b187d37fe5c7e2adf91e4b5ad6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_bold_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_fill_dark.png b/app/src/main/res/drawable-hdpi/ic_format_fill_dark.png
deleted file mode 100644
index 1cf459f319782b66e3c6beccd7b34ea22d561dde..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_fill_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_fill_light.png b/app/src/main/res/drawable-hdpi/ic_format_fill_light.png
deleted file mode 100644
index edb8ffb3db2ac9b9def5cc29ddff8eca50800cab..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_fill_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_italic_dark.png b/app/src/main/res/drawable-hdpi/ic_format_italic_dark.png
deleted file mode 100644
index e3a092bcec82be561970c5b84c7cfff1a5a3687d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_italic_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_italic_light.png b/app/src/main/res/drawable-hdpi/ic_format_italic_light.png
deleted file mode 100644
index 27e7088ce8bf50decb87561a5d78ddeb92f9978d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_italic_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_paint_dark.png b/app/src/main/res/drawable-hdpi/ic_format_paint_dark.png
deleted file mode 100644
index 8531992066bef9b168e0281e9348071825b309a0..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_paint_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_paint_light.png b/app/src/main/res/drawable-hdpi/ic_format_paint_light.png
deleted file mode 100644
index 9bb93297b5de6c2ffba90f7e6d555911171e11f2..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_paint_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_underline_dark.png b/app/src/main/res/drawable-hdpi/ic_format_underline_dark.png
deleted file mode 100644
index 8432f789f23156c8d3eb62bbd6885263dd629336..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_underline_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_format_underline_light.png b/app/src/main/res/drawable-hdpi/ic_format_underline_light.png
deleted file mode 100644
index 77711cfdff28047d42c6c49deaf1b02fbf663590..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_format_underline_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_history_dark.png b/app/src/main/res/drawable-hdpi/ic_history_dark.png
deleted file mode 100644
index c7a3cdb9b8eb54c669d21767df881167eab49fff..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_history_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_history_light.png b/app/src/main/res/drawable-hdpi/ic_history_light.png
deleted file mode 100644
index fac21d1528a99f130fd0b8bfed132c0b230c2781..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_history_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_pencil_dark.png b/app/src/main/res/drawable-hdpi/ic_pencil_dark.png
deleted file mode 100644
index 1ca8fa1001ecc784dc4d2ad3a9147d37e97e69f2..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_pencil_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_pencil_light.png b/app/src/main/res/drawable-hdpi/ic_pencil_light.png
deleted file mode 100644
index 7adfd5509904cf534a498e14e7c70fb2dc296141..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_pencil_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_plus_dark.png b/app/src/main/res/drawable-hdpi/ic_plus_dark.png
deleted file mode 100644
index e5565772a094e4554dde22234f3831e96fd08d34..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_plus_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_plus_light.png b/app/src/main/res/drawable-hdpi/ic_plus_light.png
deleted file mode 100644
index 5a4cd64e14ea8766c8177043517452442fd96fab..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_plus_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_scroll_down_dark.png b/app/src/main/res/drawable-hdpi/ic_scroll_down_dark.png
deleted file mode 100644
index 7f6781bcaa655589357c311e364d171671333272..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_scroll_down_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_send.png b/app/src/main/res/drawable-hdpi/ic_send.png
deleted file mode 100644
index 507560cc5fcaffe5cde07080439a3a91dd022e16..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_send.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_server_dark.png b/app/src/main/res/drawable-hdpi/ic_server_dark.png
deleted file mode 100644
index e2297ff9379be18af83bb1b96582c7a06e3afe5e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_server_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_server_light.png b/app/src/main/res/drawable-hdpi/ic_server_light.png
deleted file mode 100644
index c8f2e39c61efef2f2360da54939fa0ed5cd2354f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_server_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_status.png b/app/src/main/res/drawable-hdpi/ic_status.png
deleted file mode 100644
index 126f7e3bc6413f00f9f6d4620d7aca18ff4ea88a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_status.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_status_channel.png b/app/src/main/res/drawable-hdpi/ic_status_channel.png
deleted file mode 100644
index 58c0588c3b1e256d324c4d5032d5e52aca6606ed..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_status_channel.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_status_channel_offline.png b/app/src/main/res/drawable-hdpi/ic_status_channel_offline.png
deleted file mode 100644
index ca57231b4f22de2c20af8eb3c823728698d9402d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_status_channel_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_status_offline.png b/app/src/main/res/drawable-hdpi/ic_status_offline.png
deleted file mode 100644
index ffcfa75a3b409228444ec30c0d0e4a77517f9bfb..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_status_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_arrow_right_dark.png b/app/src/main/res/drawable-mdpi/ic_arrow_right_dark.png
deleted file mode 100644
index 5e98cc7508e3ab33d0c8e80ee40509eaf9ad33d7..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_arrow_right_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_arrow_right_light.png b/app/src/main/res/drawable-mdpi/ic_arrow_right_light.png
deleted file mode 100644
index dd79fff4ab4f7f2f9cdc07ef80cd01255b0531f5..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_arrow_right_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_bug_dark.png b/app/src/main/res/drawable-mdpi/ic_bug_dark.png
deleted file mode 100644
index 0b77bd002d44ba065ba1ca89dfd5f90a05c01bd8..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_bug_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_bug_light.png b/app/src/main/res/drawable-mdpi/ic_bug_light.png
deleted file mode 100644
index f67662876ba13731f17a58bdd21990a0aa552e3e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_bug_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_check_dark.png b/app/src/main/res/drawable-mdpi/ic_check_dark.png
deleted file mode 100644
index 7298777f18e359b6ada165c7d3ced70e22b4b695..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_check_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_check_light.png b/app/src/main/res/drawable-mdpi/ic_check_light.png
deleted file mode 100644
index 4ea8af1fe97bea31625ec101aba650bac33d1d21..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_check_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_delete_dark.png b/app/src/main/res/drawable-mdpi/ic_delete_dark.png
deleted file mode 100644
index 24bc02fd69949cff749fa2c8e871a51b4dd75e93..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_delete_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_delete_light.png b/app/src/main/res/drawable-mdpi/ic_delete_light.png
deleted file mode 100644
index a2e4dacbf5eb4661aaea1bcfcb63cf9292382f4f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_delete_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_filter_dark.png b/app/src/main/res/drawable-mdpi/ic_filter_dark.png
deleted file mode 100644
index ca32e41de952b2a2131e2fdac992b4598cd58e25..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_filter_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_filter_light.png b/app/src/main/res/drawable-mdpi/ic_filter_light.png
deleted file mode 100644
index 41160593a9b8752613e16fe4e073052eadc33f65..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_filter_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_bold_dark.png b/app/src/main/res/drawable-mdpi/ic_format_bold_dark.png
deleted file mode 100644
index db1cdff130960a8baeefc5b365d0ed0755c12e3d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_bold_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_bold_light.png b/app/src/main/res/drawable-mdpi/ic_format_bold_light.png
deleted file mode 100644
index 39dd8cf6ede5ac4efaed354ebfc2944baf888124..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_bold_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_fill_dark.png b/app/src/main/res/drawable-mdpi/ic_format_fill_dark.png
deleted file mode 100644
index 8d931ec33afcc75445cf48e56765e4f48d7f580a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_fill_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_fill_light.png b/app/src/main/res/drawable-mdpi/ic_format_fill_light.png
deleted file mode 100644
index 29811863c7d0479792cf0bb94fe3a9a56fbcf72b..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_fill_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_italic_dark.png b/app/src/main/res/drawable-mdpi/ic_format_italic_dark.png
deleted file mode 100644
index 7e1c1b0d95711a5a6f35fc98a948f6abad82b202..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_italic_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_italic_light.png b/app/src/main/res/drawable-mdpi/ic_format_italic_light.png
deleted file mode 100644
index 92bb92fb0ce84bf18f59017675a0baddd30660c6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_italic_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_paint_dark.png b/app/src/main/res/drawable-mdpi/ic_format_paint_dark.png
deleted file mode 100644
index e80112a61b84b735700c46840f959003047d37c0..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_paint_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_paint_light.png b/app/src/main/res/drawable-mdpi/ic_format_paint_light.png
deleted file mode 100644
index 6c420df832cfd6ba5a6320622333cfd8e847f5f2..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_paint_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_underline_dark.png b/app/src/main/res/drawable-mdpi/ic_format_underline_dark.png
deleted file mode 100644
index 16bb0a7d21a018c3160a30384318c6c1b4bac9a6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_underline_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_format_underline_light.png b/app/src/main/res/drawable-mdpi/ic_format_underline_light.png
deleted file mode 100644
index 963103bc81bc4db3b47cf97956d955450c7d10a1..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_format_underline_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_history_dark.png b/app/src/main/res/drawable-mdpi/ic_history_dark.png
deleted file mode 100644
index 17471d7125fa16b8b57fdb4b1425925e8c2c65a5..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_history_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_history_light.png b/app/src/main/res/drawable-mdpi/ic_history_light.png
deleted file mode 100644
index d7688a31ec8a8eb864672b82727e296c3282df48..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_history_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_pencil_dark.png b/app/src/main/res/drawable-mdpi/ic_pencil_dark.png
deleted file mode 100644
index 8c7ec3c17cf425cf71e956d806ab46dc241c9d4f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_pencil_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_pencil_light.png b/app/src/main/res/drawable-mdpi/ic_pencil_light.png
deleted file mode 100644
index 55baeb235e3da82767e85367a305cab983c4ef0a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_pencil_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_plus_dark.png b/app/src/main/res/drawable-mdpi/ic_plus_dark.png
deleted file mode 100644
index 36a5b40fcfb623a5984401c29614b32b0bc7f374..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_plus_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_plus_light.png b/app/src/main/res/drawable-mdpi/ic_plus_light.png
deleted file mode 100644
index bc3fd7e379c9db3583f17af658cb0413fe6bccab..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_plus_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_scroll_down_dark.png b/app/src/main/res/drawable-mdpi/ic_scroll_down_dark.png
deleted file mode 100644
index f54abcd97c90cd222ff465af2ae67242913ebc0d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_scroll_down_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_send.png b/app/src/main/res/drawable-mdpi/ic_send.png
deleted file mode 100644
index c53f0b6b63cacb065e77ac642b5385b3ac51f89c..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_send.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_server_dark.png b/app/src/main/res/drawable-mdpi/ic_server_dark.png
deleted file mode 100644
index 7e52ba4e7c398276cf3134ce88f9f1465f7530ea..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_server_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_server_light.png b/app/src/main/res/drawable-mdpi/ic_server_light.png
deleted file mode 100644
index 3f73cc6f8a531641aaaab0d24abf73050f39b1f6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_server_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_status.png b/app/src/main/res/drawable-mdpi/ic_status.png
deleted file mode 100644
index 9a2f5645af8ae4010302f06b81226ee6e98dbc60..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_status.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_status_channel.png b/app/src/main/res/drawable-mdpi/ic_status_channel.png
deleted file mode 100644
index 4c2b79128c7794b3f9b165bad6ef9639fc730ee6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_status_channel.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_status_channel_offline.png b/app/src/main/res/drawable-mdpi/ic_status_channel_offline.png
deleted file mode 100644
index b1ecb06ddf863a27b6be255bb180a96d317a8840..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_status_channel_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_status_offline.png b/app/src/main/res/drawable-mdpi/ic_status_offline.png
deleted file mode 100644
index 715bb40732bf3cac53a0e5a85f8c3a79436edad8..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/ic_status_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-nodpi/bg1.png b/app/src/main/res/drawable-nodpi/bg1.png
deleted file mode 100644
index c9c8c89140661192388d9e2e76300e2077b73f92..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-nodpi/bg1.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_arrow_right_dark.png b/app/src/main/res/drawable-xhdpi/ic_arrow_right_dark.png
deleted file mode 100644
index 0463e5cecfcc9b2561a359f689808c3aa6f65e4c..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_arrow_right_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_arrow_right_light.png b/app/src/main/res/drawable-xhdpi/ic_arrow_right_light.png
deleted file mode 100644
index d2fd86fad0fd9c32a64cb24a45e164567f9e858a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_arrow_right_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_bug_dark.png b/app/src/main/res/drawable-xhdpi/ic_bug_dark.png
deleted file mode 100644
index d2525e2a51158c111781ce2b93d0615d2012c388..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_bug_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_bug_light.png b/app/src/main/res/drawable-xhdpi/ic_bug_light.png
deleted file mode 100644
index fb22d85760d37129ecd3c4f78d68784b1ea4022e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_bug_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_check_dark.png b/app/src/main/res/drawable-xhdpi/ic_check_dark.png
deleted file mode 100644
index 4eb240b352597fe8b8363b7adf64e8029bb2d01e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_check_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_check_light.png b/app/src/main/res/drawable-xhdpi/ic_check_light.png
deleted file mode 100644
index 3f9b108fc05fe842db406ee6f716e25895a8edcc..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_check_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_delete_dark.png b/app/src/main/res/drawable-xhdpi/ic_delete_dark.png
deleted file mode 100644
index 9b0e2dbd298fb15dc3cb05b60d0003338de2b521..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_delete_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_delete_light.png b/app/src/main/res/drawable-xhdpi/ic_delete_light.png
deleted file mode 100644
index 0f2aacd502bb97e49b3274bc4253c461d9d3635e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_delete_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_filter_dark.png b/app/src/main/res/drawable-xhdpi/ic_filter_dark.png
deleted file mode 100644
index 0bf7bd655ac6930741df031f3d6e576cf4890025..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_filter_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_filter_light.png b/app/src/main/res/drawable-xhdpi/ic_filter_light.png
deleted file mode 100644
index f2ac8e1dada9f09656facb872716029a865b0db0..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_filter_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_bold_dark.png b/app/src/main/res/drawable-xhdpi/ic_format_bold_dark.png
deleted file mode 100644
index a4ef362a85f972be2b28c007d8aeb33969b162a6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_bold_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_bold_light.png b/app/src/main/res/drawable-xhdpi/ic_format_bold_light.png
deleted file mode 100644
index b1ad374d0538f4c3490151605820401a12b0576a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_bold_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_fill_dark.png b/app/src/main/res/drawable-xhdpi/ic_format_fill_dark.png
deleted file mode 100644
index dacbf849c1d23bdecabc6ce6f92186a41b089510..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_fill_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_fill_light.png b/app/src/main/res/drawable-xhdpi/ic_format_fill_light.png
deleted file mode 100644
index 9ac52e4061d92012500c7e569370998bb2ea3ed0..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_fill_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_italic_dark.png b/app/src/main/res/drawable-xhdpi/ic_format_italic_dark.png
deleted file mode 100644
index 71501f700b873a7370054770b64913f383bfe615..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_italic_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_italic_light.png b/app/src/main/res/drawable-xhdpi/ic_format_italic_light.png
deleted file mode 100644
index 01a46f70866f9344ac7dbec05465a37b9c351507..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_italic_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_paint_dark.png b/app/src/main/res/drawable-xhdpi/ic_format_paint_dark.png
deleted file mode 100644
index 0164e3b76c8e03bae6cc1e10b1579a97791444a2..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_paint_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_paint_light.png b/app/src/main/res/drawable-xhdpi/ic_format_paint_light.png
deleted file mode 100644
index 02fec67f6a45f0d78995ef3d8a3b5354b2807b4d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_paint_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_underline_dark.png b/app/src/main/res/drawable-xhdpi/ic_format_underline_dark.png
deleted file mode 100644
index ec4461c341c2b7b595b70c19d6663d631c173cb3..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_underline_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_format_underline_light.png b/app/src/main/res/drawable-xhdpi/ic_format_underline_light.png
deleted file mode 100644
index 21f82a034d07668cc4137c72a63f40783caaab91..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_format_underline_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_history_dark.png b/app/src/main/res/drawable-xhdpi/ic_history_dark.png
deleted file mode 100644
index 4f522284be2483e773223d6974364a2edafe56ca..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_history_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_history_light.png b/app/src/main/res/drawable-xhdpi/ic_history_light.png
deleted file mode 100644
index f03e984c589546175279b704d498c0753f8faab7..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_history_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_pencil_dark.png b/app/src/main/res/drawable-xhdpi/ic_pencil_dark.png
deleted file mode 100644
index 7c6a745434e309d6fa9e2ba6e756b33dca0943f5..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_pencil_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_pencil_light.png b/app/src/main/res/drawable-xhdpi/ic_pencil_light.png
deleted file mode 100644
index fceffdae9bc3030362b54a2dfc2c1b1fac0e6b2c..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_pencil_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_plus_dark.png b/app/src/main/res/drawable-xhdpi/ic_plus_dark.png
deleted file mode 100644
index 265017dceb955b9ac5d463e48d4487d7377536bc..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_plus_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_plus_light.png b/app/src/main/res/drawable-xhdpi/ic_plus_light.png
deleted file mode 100644
index 949186c670f5bcd3c5c6c3c31c0b91b9352e296c..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_plus_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_scroll_down_dark.png b/app/src/main/res/drawable-xhdpi/ic_scroll_down_dark.png
deleted file mode 100644
index a4f169cfbd494beffab362b1eea18c656f7ad0d4..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_scroll_down_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_send.png b/app/src/main/res/drawable-xhdpi/ic_send.png
deleted file mode 100644
index 55f6ddb7737eac71bd830d743a66e5e41648178e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_send.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_server_dark.png b/app/src/main/res/drawable-xhdpi/ic_server_dark.png
deleted file mode 100644
index 4fbab9929f287d38fb184e76e972c20cb72ad973..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_server_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_server_light.png b/app/src/main/res/drawable-xhdpi/ic_server_light.png
deleted file mode 100644
index 8fe4a593ea480191f652f40fc62be104d65cbe7f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_server_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_status.png b/app/src/main/res/drawable-xhdpi/ic_status.png
deleted file mode 100644
index 40f42e3eb97d061f5a66d20415a140e04ad8d0e3..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_status.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_status_channel.png b/app/src/main/res/drawable-xhdpi/ic_status_channel.png
deleted file mode 100644
index 9c33fe2e2a928ba3832371f962b8604cdcceb63e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_status_channel.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_status_channel_offline.png b/app/src/main/res/drawable-xhdpi/ic_status_channel_offline.png
deleted file mode 100644
index a3d13b7af54a526f8fed2a07479ae21bb2f08678..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_status_channel_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_status_offline.png b/app/src/main/res/drawable-xhdpi/ic_status_offline.png
deleted file mode 100644
index 4ff0d84596a81e013cf3ecdb5380707802e67f88..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_status_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_arrow_right_dark.png b/app/src/main/res/drawable-xxhdpi/ic_arrow_right_dark.png
deleted file mode 100644
index 770d53315bec425a36eb7d0e775d81bed1be6904..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_arrow_right_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_arrow_right_light.png b/app/src/main/res/drawable-xxhdpi/ic_arrow_right_light.png
deleted file mode 100644
index 7f3a9f19a5e6b14e1199d80879bd538e86eee454..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_arrow_right_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_bug_dark.png b/app/src/main/res/drawable-xxhdpi/ic_bug_dark.png
deleted file mode 100644
index 29ce5021a331261a3956b2b336660a80b3d18503..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_bug_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_bug_light.png b/app/src/main/res/drawable-xxhdpi/ic_bug_light.png
deleted file mode 100644
index 640dba17bb4245e5b80fb2bf2a08fed736f36195..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_bug_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_check_dark.png b/app/src/main/res/drawable-xxhdpi/ic_check_dark.png
deleted file mode 100644
index c6503fd09eaf4ad9becd2c1a77f5bfdbd1d0b7be..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_check_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_check_light.png b/app/src/main/res/drawable-xxhdpi/ic_check_light.png
deleted file mode 100644
index 392a259e9b36d8967c100c3e9084cb4ca8d83970..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_check_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_delete_dark.png b/app/src/main/res/drawable-xxhdpi/ic_delete_dark.png
deleted file mode 100644
index 21287cbd0e69f4c938db6ae09dde6e8830ddc1dc..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_delete_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_delete_light.png b/app/src/main/res/drawable-xxhdpi/ic_delete_light.png
deleted file mode 100644
index 86508758d0a996aed2fff40cf3ccccf87ab6dabe..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_delete_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_filter_dark.png b/app/src/main/res/drawable-xxhdpi/ic_filter_dark.png
deleted file mode 100644
index ade17c6a028e9d35cca3ab3a0e7054a582f21fc7..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_filter_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_filter_light.png b/app/src/main/res/drawable-xxhdpi/ic_filter_light.png
deleted file mode 100644
index 06a23dce33ad8de6f6d4d42df9ac1199b8199684..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_filter_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_bold_dark.png b/app/src/main/res/drawable-xxhdpi/ic_format_bold_dark.png
deleted file mode 100644
index 7cc91346317305af68654b73aec0e5353e6bf703..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_bold_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_bold_light.png b/app/src/main/res/drawable-xxhdpi/ic_format_bold_light.png
deleted file mode 100644
index 12d6452d52ffacc6c3b1904d2a6b7d09efc4c425..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_bold_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_fill_dark.png b/app/src/main/res/drawable-xxhdpi/ic_format_fill_dark.png
deleted file mode 100644
index dd6a03684e4e4d8927c8d2026337fee469e0d301..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_fill_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_fill_light.png b/app/src/main/res/drawable-xxhdpi/ic_format_fill_light.png
deleted file mode 100644
index 7a8bc9f7411e06e0ed517c7611814a4d5d56fcbb..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_fill_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_italic_dark.png b/app/src/main/res/drawable-xxhdpi/ic_format_italic_dark.png
deleted file mode 100644
index ddfcafc0581c7d48b2686e6e035e7125d1ba8e0a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_italic_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_italic_light.png b/app/src/main/res/drawable-xxhdpi/ic_format_italic_light.png
deleted file mode 100644
index 5cefd81ff9f0f10f838920dce665f5f35a9af5dc..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_italic_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_paint_dark.png b/app/src/main/res/drawable-xxhdpi/ic_format_paint_dark.png
deleted file mode 100644
index 0f708ad7838db3fd3e7d0f61dad8555a1122bebe..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_paint_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_paint_light.png b/app/src/main/res/drawable-xxhdpi/ic_format_paint_light.png
deleted file mode 100644
index d6e34ae3da79e86a9511fb735f202819e78ecb35..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_paint_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_underline_dark.png b/app/src/main/res/drawable-xxhdpi/ic_format_underline_dark.png
deleted file mode 100644
index f22f8d36daef8147c433c28c342ea99d0da89759..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_underline_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_underline_light.png b/app/src/main/res/drawable-xxhdpi/ic_format_underline_light.png
deleted file mode 100644
index e047e6f11a21daaac758e18d8ee239aa4c4433ac..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_format_underline_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_history_dark.png b/app/src/main/res/drawable-xxhdpi/ic_history_dark.png
deleted file mode 100644
index b4a11d0002a7db0c19c7d07ced92926c8230915f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_history_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_history_light.png b/app/src/main/res/drawable-xxhdpi/ic_history_light.png
deleted file mode 100644
index 1de0573c874145e610abc497084348500da5ff6a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_history_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_pencil_dark.png b/app/src/main/res/drawable-xxhdpi/ic_pencil_dark.png
deleted file mode 100644
index 2beb2b4279e750488b07e8add9a7979d45ff4d6d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_pencil_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_pencil_light.png b/app/src/main/res/drawable-xxhdpi/ic_pencil_light.png
deleted file mode 100644
index ccc7d2968311d49591adef22a1b1aef9c10f0a27..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_pencil_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_plus_dark.png b/app/src/main/res/drawable-xxhdpi/ic_plus_dark.png
deleted file mode 100644
index 567bbf6b823afa49119054e3e75cec0307d553cb..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_plus_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_plus_light.png b/app/src/main/res/drawable-xxhdpi/ic_plus_light.png
deleted file mode 100644
index 4adbd6d374cb9efb879c5e3cbe557bb8e704749e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_plus_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_scroll_down_dark.png b/app/src/main/res/drawable-xxhdpi/ic_scroll_down_dark.png
deleted file mode 100644
index a29a1632420655011886511e33a6e7c474d0b3fb..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_scroll_down_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_send.png b/app/src/main/res/drawable-xxhdpi/ic_send.png
deleted file mode 100644
index b18db9c5f2f12f190bc2b8ec46c06b08c48389f9..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_send.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_server_dark.png b/app/src/main/res/drawable-xxhdpi/ic_server_dark.png
deleted file mode 100644
index eb8afd9a37982630f171706eb51985524dcc45f4..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_server_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_server_light.png b/app/src/main/res/drawable-xxhdpi/ic_server_light.png
deleted file mode 100644
index 2f4f2bf4baafb76326469a7f24e78a7e40394871..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_server_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_status.png b/app/src/main/res/drawable-xxhdpi/ic_status.png
deleted file mode 100644
index 5e952d1c92006cc833a36f4b34a48e781f101e42..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_status.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_status_channel.png b/app/src/main/res/drawable-xxhdpi/ic_status_channel.png
deleted file mode 100644
index 2a621c83d78c0816ba6b971fe0789a3837277738..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_status_channel.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_status_channel_offline.png b/app/src/main/res/drawable-xxhdpi/ic_status_channel_offline.png
deleted file mode 100644
index bb9c4923fee2ed01684c8e6de5f6771554a9635a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_status_channel_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_status_offline.png b/app/src/main/res/drawable-xxhdpi/ic_status_offline.png
deleted file mode 100644
index 6da20bb2088def11d509640435846c0872a67033..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_status_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_arrow_right_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_arrow_right_dark.png
deleted file mode 100644
index a2b73aa6909edd82c9ff5cbf21addbd2f2f244bb..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_arrow_right_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_arrow_right_light.png b/app/src/main/res/drawable-xxxhdpi/ic_arrow_right_light.png
deleted file mode 100644
index fd116d1c8f87db1bcae194ca144edbc77d351dc4..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_arrow_right_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_bug_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_bug_dark.png
deleted file mode 100644
index acb99c43ace97ff56769c460bac770e3f2b473b2..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_bug_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_bug_light.png b/app/src/main/res/drawable-xxxhdpi/ic_bug_light.png
deleted file mode 100644
index 08ac6f698983d837a49ed0a76cc19640e0bbe2a1..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_bug_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_check_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_check_dark.png
deleted file mode 100644
index c297f32dd45f46a030b0acd9548eb7382508f385..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_check_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_check_light.png b/app/src/main/res/drawable-xxxhdpi/ic_check_light.png
deleted file mode 100644
index 3400099ded2933bd1a070705ab4981c39aebea06..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_check_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_delete_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_delete_dark.png
deleted file mode 100644
index beb1637ee9735fc9dcf3a30f835a41f9c708e1b5..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_delete_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_delete_light.png b/app/src/main/res/drawable-xxxhdpi/ic_delete_light.png
deleted file mode 100644
index acb9ab0c554f5b422d5a492fe986ae182484f781..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_delete_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_filter_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_filter_dark.png
deleted file mode 100644
index c54b2eda6c8ecb52b215dabc28d5dddfae6bdba3..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_filter_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_filter_light.png b/app/src/main/res/drawable-xxxhdpi/ic_filter_light.png
deleted file mode 100644
index f70a17b53ee2637a1db7200071d7a143b27f34cb..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_filter_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_bold_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_format_bold_dark.png
deleted file mode 100644
index 0e62982ab59d78f7fc7d4eb97f179f8f7775aad6..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_bold_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_bold_light.png b/app/src/main/res/drawable-xxxhdpi/ic_format_bold_light.png
deleted file mode 100644
index 47f303088158f4cc6a70703903cc9a6181571477..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_bold_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_fill_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_format_fill_dark.png
deleted file mode 100644
index 96874214177bdb16bce6cb145409f450c1398951..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_fill_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_fill_light.png b/app/src/main/res/drawable-xxxhdpi/ic_format_fill_light.png
deleted file mode 100644
index 5641b0c08e94a0b14726227938efff3b0bef8b61..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_fill_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_italic_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_format_italic_dark.png
deleted file mode 100644
index 40b1e780a90d279e6649a48f67e96ce5d74d85d9..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_italic_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_italic_light.png b/app/src/main/res/drawable-xxxhdpi/ic_format_italic_light.png
deleted file mode 100644
index 3a0f3dea9d3b6413153187a5516c258131d8ec97..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_italic_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_paint_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_format_paint_dark.png
deleted file mode 100644
index 437fc9b9b87635578ae58915779a10582a89d330..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_paint_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_paint_light.png b/app/src/main/res/drawable-xxxhdpi/ic_format_paint_light.png
deleted file mode 100644
index 08f99d3b61e1ad24a95c72cc139a32cd1da09a1f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_paint_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_underline_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_format_underline_dark.png
deleted file mode 100644
index e19b0b068cdc83ac19e928ec688a33940f4ebe28..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_underline_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_format_underline_light.png b/app/src/main/res/drawable-xxxhdpi/ic_format_underline_light.png
deleted file mode 100644
index cd497b16a074bdece46c2b4cb89732f53f97b12d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_format_underline_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_history_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_history_dark.png
deleted file mode 100644
index 7104a2ce2f4a4fa68d49c9db66da80a8273ee829..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_history_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_history_light.png b/app/src/main/res/drawable-xxxhdpi/ic_history_light.png
deleted file mode 100644
index 3c1a11c0f18626ddf28b64020b61b53331415ffe..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_history_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_pencil_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_pencil_dark.png
deleted file mode 100644
index 0a20a6076541f5c0e3f9294a0e4ce93834f6d62d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_pencil_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_pencil_light.png b/app/src/main/res/drawable-xxxhdpi/ic_pencil_light.png
deleted file mode 100644
index 63dc6112ea2d547032b6182d32131af84cfdc7be..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_pencil_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_plus_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_plus_dark.png
deleted file mode 100644
index 5213a1faefba04c467a0c8b71c2a1bc9d0350237..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_plus_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_plus_light.png b/app/src/main/res/drawable-xxxhdpi/ic_plus_light.png
deleted file mode 100644
index a5464a4b491d6522d5911f2ed293278ebb04792d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_plus_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_scroll_down_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_scroll_down_dark.png
deleted file mode 100644
index d05cc646319e8abefa84b1787ff6d2d0fc291c51..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_scroll_down_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_send.png b/app/src/main/res/drawable-xxxhdpi/ic_send.png
deleted file mode 100644
index 37f3316e0a406b5da1a0b717a6925f46693a5ea1..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_send.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_server_dark.png b/app/src/main/res/drawable-xxxhdpi/ic_server_dark.png
deleted file mode 100644
index 704e3d06898ab2c139740d332bae397b2e27a727..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_server_dark.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_server_light.png b/app/src/main/res/drawable-xxxhdpi/ic_server_light.png
deleted file mode 100644
index bfe602aad446c9f5980d94c818237acf9f597619..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_server_light.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_status.png b/app/src/main/res/drawable-xxxhdpi/ic_status.png
deleted file mode 100644
index c0572c61e747272ec825441af6421dfddbf3aeaf..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_status.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_status_channel.png b/app/src/main/res/drawable-xxxhdpi/ic_status_channel.png
deleted file mode 100644
index 6e608539f5ed14b671ddcfbb5f545712566eebc5..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_status_channel.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_status_channel_offline.png b/app/src/main/res/drawable-xxxhdpi/ic_status_channel_offline.png
deleted file mode 100644
index 78b1869265a4add30ea061fa576ac6c3f02ddc8f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_status_channel_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_status_offline.png b/app/src/main/res/drawable-xxxhdpi/ic_status_offline.png
deleted file mode 100644
index c07cf15c7c863d40d93fb507dad7fd59fff6a1aa..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/ic_status_offline.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81f824066e93963ed8775ba60e3a2cb70f476a55
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/plus.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_arrow_right.xml b/app/src/main/res/drawable/ic_arrow_right.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5ecb3491b308ccbbaf3e9df645d27e34d5d4ee85
--- /dev/null
+++ b/app/src/main/res/drawable/ic_arrow_right.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/arrow_right.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a35e216c508cd8c57ef5bf91335a2447a9f4b943
--- /dev/null
+++ b/app/src/main/res/drawable/ic_check.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/check.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_debug.xml b/app/src/main/res/drawable/ic_debug.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c5daef8e27087075021078849d7f62e69a89be0e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_debug.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/bug.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml
new file mode 100644
index 0000000000000000000000000000000000000000..874a1019716e3cf54020fa1d1c13be65f9b3d2de
--- /dev/null
+++ b/app/src/main/res/drawable/ic_delete.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/delete.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_filter.xml b/app/src/main/res/drawable/ic_filter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2f40929e87ebca0c27e3d69e17625c260aa47ffa
--- /dev/null
+++ b/app/src/main/res/drawable/ic_filter.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/filter.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M3,2H21V2H21V4H20.92L14,10.92V22.91L10,18.91V10.91L3.09,4H3V2Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_format_bold.xml b/app/src/main/res/drawable/ic_format_bold.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d39c63a68e7ab8b1b9fcb2724d73e938e979fd0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_format_bold.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/format_bold.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_format_fill.xml b/app/src/main/res/drawable/ic_format_fill.xml
new file mode 100644
index 0000000000000000000000000000000000000000..abdc9d12b4df5583d11b026f0d6142fb1578e80f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_format_fill.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/format_color_fill.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_format_italic.xml b/app/src/main/res/drawable/ic_format_italic.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6bf434f4c23af3f0874414f811f35ccb7da0dfb0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_format_italic.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/format_italic.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_format_paint.xml b/app/src/main/res/drawable/ic_format_paint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0588a7307c7702bf46cf7b425286caafffeb624c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_format_paint.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/format_paint.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_format_underline.xml b/app/src/main/res/drawable/ic_format_underline.xml
new file mode 100644
index 0000000000000000000000000000000000000000..db9acaa7cc255129869e38c9b1f5bc277991895c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_format_underline.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/format_underline.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3683e4fed0f1319ae407e7c1b7f0b798840ecaa7
--- /dev/null
+++ b/app/src/main/res/drawable/ic_history.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/history.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M11,7V12.11L15.71,14.9L16.5,13.62L12.5,11.25V7M12.5,2C8.97,2 5.91,3.92 4.27,6.77L2,4.5V11H8.5L5.75,8.25C6.96,5.73 9.5,4 12.5,4A7.5,7.5 0 0,1 20,11.5A7.5,7.5 0 0,1 12.5,19C9.23,19 6.47,16.91 5.44,14H3.34C4.44,18.03 8.11,21 12.5,21C17.74,21 22,16.75 22,11.5A9.5,9.5 0 0,0 12.5,2Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_lock.xml b/app/src/main/res/drawable/ic_lock.xml
new file mode 100644
index 0000000000000000000000000000000000000000..56e8522ad5765c9be745a76630a666951a5bd485
--- /dev/null
+++ b/app/src/main/res/drawable/ic_lock.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/ic_lockock.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_lock_open.xml b/app/src/main/res/drawable/ic_lock_open.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0c6fdc7def44e920adf3062e70f71448fdc6043f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_lock_open.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/lock_open_outline.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_modify.xml b/app/src/main/res/drawable/ic_modify.xml
new file mode 100644
index 0000000000000000000000000000000000000000..449858db74c9d55a8ee9656cfb1f96c978024f22
--- /dev/null
+++ b/app/src/main/res/drawable/ic_modify.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/pencil.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_reorder.xml b/app/src/main/res/drawable/ic_reorder.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1dcc92507bd8b86ad7e5445ea9492cec8a26efd2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_reorder.xml
@@ -0,0 +1,30 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_scroll_down.xml b/app/src/main/res/drawable/ic_scroll_down.xml
new file mode 100644
index 0000000000000000000000000000000000000000..be1e7051ca63917d9d1ea5367d8413d9fca5ab37
--- /dev/null
+++ b/app/src/main/res/drawable/ic_scroll_down.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/chevron_double_down.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_send.xml b/app/src/main/res/drawable/ic_send.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dbdfd58426369fc006c7fc1a42eec397b7867ae3
--- /dev/null
+++ b/app/src/main/res/drawable/ic_send.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/send.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M2,21L23,12L2,3V10L17,12L2,14V21Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_server.xml b/app/src/main/res/drawable/ic_server.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8a91f4f66b2a9bcb55ce1a9c5886d45eb4400b60
--- /dev/null
+++ b/app/src/main/res/drawable/ic_server.xml
@@ -0,0 +1,31 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<!-- drawable/server_network.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24"
+        android:viewportWidth="24">
+    <path
+        android:fillColor="#000"
+        android:pathData="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H20A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H13V18M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H4A1,1 0 0,1 3,7V3A1,1 0 0,1 4,2M9,6H10V4H9V6M9,14H10V12H9V14M5,4V6H7V4H5M5,12V14H7V12H5Z"/>
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_status.xml b/app/src/main/res/drawable/ic_status.xml
new file mode 100644
index 0000000000000000000000000000000000000000..54c07abe006c91a93d538247fec81b7effcc76c2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_status.xml
@@ -0,0 +1,30 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.000002">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_status_channel.xml b/app/src/main/res/drawable/ic_status_channel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..379bc7ed320b2b5c5b9a8fb3e167a83488e7562c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_status_channel.xml
@@ -0,0 +1,30 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.000002">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="m12,2c-5.523,0 -10,4.477 -10,10s4.477,10 10,10 10,-4.477 10,-10 -4.477,-10 -10,-10zM10.663,7.049a0.625,0.625 0,0 1,0.063 0.004,0.625 0.625,0 0,1 0.062,0.011 0.625,0.625 0,0 1,0.06 0.017,0.625 0.625,0 0,1 0.058,0.023 0.625,0.625 0,0 1,0.056 0.028,0.625 0.625,0 0,1 0.053,0.034 0.625,0.625 0,0 1,0.049 0.039,0.625 0.625,0 0,1 0.045,0.044 0.625,0.625 0,0 1,0.04 0.048,0.625 0.625,0 0,1 0.035,0.051 0.625,0.625 0,0 1,0.03 0.055,0.625 0.625,0 0,1 0.024,0.058 0.625,0.625 0,0 1,0.018 0.06,0.625 0.625,0 0,1 0.013,0.061 0.625,0.625 0,0 1,0.006 0.063,0.625 0.625,0 0,1 0,0.063 0.625,0.625 0,0 1,-0.006 0.062l-0.271,1.953 2.78,-0.015 0.292,-2.109a0.625,0.625 0,0 1,0.007 -0.043,0.625 0.625,0 0,1 0.015,-0.061 0.625,0.625 0,0 1,0.021 -0.059,0.625 0.625,0 0,1 0.027,-0.056 0.625,0.625 0,0 1,0.033 -0.054,0.625 0.625,0 0,1 0.037,-0.05 0.625,0.625 0,0 1,0.043 -0.046,0.625 0.625,0 0,1 0.047,-0.041 0.625,0.625 0,0 1,0.05 -0.037,0.625 0.625,0 0,1 0.054,-0.032 0.625,0.625 0,0 1,0.057 -0.026,0.625 0.625,0 0,1 0.059,-0.02 0.625,0.625 0,0 1,0.061 -0.014,0.625 0.625,0 0,1 0.062,-0.008 0.625,0.625 0,0 1,0.063 -0.001,0.625 0.625,0 0,1 0.062,0.004 0.625,0.625 0,0 1,0.062 0.011,0.625 0.625,0 0,1 0.06,0.017 0.625,0.625 0,0 1,0.058 0.023,0.625 0.625,0 0,1 0.056,0.028 0.625,0.625 0,0 1,0.053 0.034,0.625 0.625,0 0,1 0.049,0.039 0.625,0.625 0,0 1,0.045 0.044,0.625 0.625,0 0,1 0.04,0.048 0.625,0.625 0,0 1,0.035 0.051,0.625 0.625,0 0,1 0.03,0.055 0.625,0.625 0,0 1,0.024 0.058,0.625 0.625,0 0,1 0.018,0.06 0.625,0.625 0,0 1,0.013 0.061,0.625 0.625,0 0,1 0.006,0.063 0.625,0.625 0,0 1,0 0.063,0.625 0.625,0 0,1 -0.006,0.062l-0.268,1.932 1.609,-0.008a0.625,0.625 0,0 1,0.041 0.001,0.625 0.625,0 0,1 0.062,0.006 0.625,0.625 0,0 1,0.061 0.012,0.625 0.625,0 0,1 0.06,0.019 0.625,0.625 0,0 1,0.058 0.024,0.625 0.625,0 0,1 0.055,0.03 0.625,0.625 0,0 1,0.052 0.035,0.625 0.625,0 0,1 0.048,0.04 0.625,0.625 0,0 1,0.043 0.045,0.625 0.625,0 0,1 0.039,0.049 0.625,0.625 0,0 1,0.034 0.053,0.625 0.625,0 0,1 0.028,0.056 0.625,0.625 0,0 1,0.023 0.058,0.625 0.625,0 0,1 0.017,0.06 0.625,0.625 0,0 1,0.011 0.062,0.625 0.625,0 0,1 0.004,0.063 0.625,0.625 0,0 1,-0.002 0.063,0.625 0.625,0 0,1 -0.008,0.062 0.625,0.625 0,0 1,-0.014 0.061,0.625 0.625,0 0,1 -0.02,0.059 0.625,0.625 0,0 1,-0.026 0.057,0.625 0.625,0 0,1 -0.032,0.054 0.625,0.625 0,0 1,-0.037 0.051,0.625 0.625,0 0,1 -0.041,0.046 0.625,0.625 0,0 1,-0.046 0.043,0.625 0.625,0 0,1 -0.05,0.038 0.625,0.625 0,0 1,-0.053 0.032,0.625 0.625,0 0,1 -0.057,0.026 0.625,0.625 0,0 1,-0.059 0.021,0.625 0.625,0 0,1 -0.06,0.015 0.625,0.625 0,0 1,-0.062 0.009,0.625 0.625,0 0,1 -0.063,0.003l-1.789,0.009 -0.331,2.388 1.712,-0.009a0.625,0.625 0,0 1,0.043 0.001,0.625 0.625,0 0,1 0.062,0.006 0.625,0.625 0,0 1,0.061 0.012,0.625 0.625,0 0,1 0.06,0.019 0.625,0.625 0,0 1,0.058 0.024,0.625 0.625,0 0,1 0.055,0.03 0.625,0.625 0,0 1,0.052 0.035,0.625 0.625,0 0,1 0.048,0.041 0.625,0.625 0,0 1,0.043 0.044,0.625 0.625,0 0,1 0.039,0.049 0.625,0.625 0,0 1,0.034 0.053,0.625 0.625,0 0,1 0.028,0.056 0.625,0.625 0,0 1,0.023 0.058,0.625 0.625,0 0,1 0.017,0.06 0.625,0.625 0,0 1,0.01 0.062,0.625 0.625,0 0,1 0.005,0.062 0.625,0.625 0,0 1,-0.002 0.063,0.625 0.625,0 0,1 -0.008,0.062 0.625,0.625 0,0 1,-0.014 0.061,0.625 0.625,0 0,1 -0.021,0.059 0.625,0.625 0,0 1,-0.026 0.057,0.625 0.625,0 0,1 -0.031,0.054 0.625,0.625 0,0 1,-0.037 0.05,0.625 0.625,0 0,1 -0.041,0.047 0.625,0.625 0,0 1,-0.046 0.042,0.625 0.625,0 0,1 -0.05,0.038 0.625,0.625 0,0 1,-0.053 0.032,0.625 0.625,0 0,1 -0.057,0.027 0.625,0.625 0,0 1,-0.059 0.021,0.625 0.625,0 0,1 -0.06,0.015 0.625,0.625 0,0 1,-0.062 0.009,0.625 0.625,0 0,1 -0.063,0.002l-1.892,0.01 -0.305,2.197a0.625,0.625 0,0 1,-0.004 0.026,0.625 0.625,0 0,1 -0.015,0.06 0.625,0.625 0,0 1,-0.02 0.06,0.625 0.625,0 0,1 -0.026,0.057 0.625,0.625 0,0 1,-0.032 0.054,0.625 0.625,0 0,1 -0.037,0.051 0.625,0.625 0,0 1,-0.042 0.046,0.625 0.625,0 0,1 -0.046,0.042 0.625,0.625 0,0 1,-0.05 0.038,0.625 0.625,0 0,1 -0.053,0.032 0.625,0.625 0,0 1,-0.057 0.027,0.625 0.625,0 0,1 -0.059,0.021 0.625,0.625 0,0 1,-0.06 0.015,0.625 0.625,0 0,1 -0.062,0.009 0.625,0.625 0,0 1,-0.063 0.002,0.625 0.625,0 0,1 -0.063,-0.003 0.625,0.625 0,0 1,-0.062 -0.01,0.625 0.625,0 0,1 -0.06,-0.016 0.625,0.625 0,0 1,-0.059 -0.022,0.625 0.625,0 0,1 -0.056,-0.028 0.625,0.625 0,0 1,-0.053 -0.033,0.625 0.625,0 0,1 -0.049,-0.038 0.625,0.625 0,0 1,-0.045 -0.043,0.625 0.625,0 0,1 -0.041,-0.047 0.625,0.625 0,0 1,-0.036 -0.051,0.625 0.625,0 0,1 -0.031,-0.054 0.625,0.625 0,0 1,-0.025 -0.058,0.625 0.625,0 0,1 -0.019,-0.059 0.625,0.625 0,0 1,-0.013 -0.061,0.625 0.625,0 0,1 -0.007,-0.063 0.625,0.625 0,0 1,-0.001 -0.063,0.625 0.625,0 0,1 0.005,-0.062l0.28,-2.019 -2.78,0.015 -0.302,2.176a0.625,0.625 0,0 1,-0.004 0.026,0.625 0.625,0 0,1 -0.015,0.061 0.625,0.625 0,0 1,-0.02 0.059,0.625 0.625,0 0,1 -0.026,0.057 0.625,0.625 0,0 1,-0.032 0.054,0.625 0.625,0 0,1 -0.037,0.051 0.625,0.625 0,0 1,-0.041 0.046,0.625 0.625,0 0,1 -0.046,0.042 0.625,0.625 0,0 1,-0.05 0.038,0.625 0.625,0 0,1 -0.054,0.032 0.625,0.625 0,0 1,-0.057 0.027,0.625 0.625,0 0,1 -0.059,0.021 0.625,0.625 0,0 1,-0.061 0.015,0.625 0.625,0 0,1 -0.062,0.009 0.625,0.625 0,0 1,-0.063 0.002,0.625 0.625,0 0,1 -0.063,-0.003 0.625,0.625 0,0 1,-0.062 -0.01,0.625 0.625,0 0,1 -0.061,-0.016 0.625,0.625 0,0 1,-0.059 -0.022,0.625 0.625,0 0,1 -0.056,-0.028 0.625,0.625 0,0 1,-0.053 -0.033,0.625 0.625,0 0,1 -0.049,-0.038 0.625,0.625 0,0 1,-0.045 -0.043,0.625 0.625,0 0,1 -0.041,-0.047 0.625,0.625 0,0 1,-0.036 -0.051,0.625 0.625,0 0,1 -0.031,-0.054 0.625,0.625 0,0 1,-0.025 -0.057,0.625 0.625,0 0,1 -0.019,-0.06 0.625,0.625 0,0 1,-0.013 -0.061,0.625 0.625,0 0,1 -0.007,-0.062 0.625,0.625 0,0 1,-0.001 -0.063,0.625 0.625,0 0,1 0.005,-0.063l0.277,-1.998 -1.418,0.007a0.625,0.625 0,0 1,-0.043 -0.001,0.625 0.625,0 0,1 -0.062,-0.006 0.625,0.625 0,0 1,-0.062 -0.012,0.625 0.625,0 0,1 -0.06,-0.019 0.625,0.625 0,0 1,-0.058 -0.024,0.625 0.625,0 0,1 -0.055,-0.03 0.625,0.625 0,0 1,-0.052 -0.036,0.625 0.625,0 0,1 -0.048,-0.04 0.625,0.625 0,0 1,-0.043 -0.045,0.625 0.625,0 0,1 -0.039,-0.049 0.625,0.625 0,0 1,-0.034 -0.053,0.625 0.625,0 0,1 -0.028,-0.056 0.625,0.625 0,0 1,-0.023 -0.058,0.625 0.625,0 0,1 -0.017,-0.06 0.625,0.625 0,0 1,-0.011 -0.062,0.625 0.625,0 0,1 -0.004,-0.063 0.625,0.625 0,0 1,0.002 -0.063,0.625 0.625,0 0,1 0.008,-0.062 0.625,0.625 0,0 1,0.014 -0.06,0.625 0.625,0 0,1 0.02,-0.059 0.625,0.625 0,0 1,0.026 -0.057,0.625 0.625,0 0,1 0.031,-0.054 0.625,0.625 0,0 1,0.037 -0.051,0.625 0.625,0 0,1 0.042,-0.046 0.625,0.625 0,0 1,0.046 -0.043,0.625 0.625,0 0,1 0.05,-0.037 0.625,0.625 0,0 1,0.054 -0.032,0.625 0.625,0 0,1 0.057,-0.027 0.625,0.625 0,0 1,0.059 -0.021,0.625 0.625,0 0,1 0.06,-0.015 0.625,0.625 0,0 1,0.062 -0.009,0.625 0.625,0 0,1 0.063,-0.002l1.598,-0.008 0.331,-2.388 -1.52,0.008a0.625,0.625 0,0 1,-0.042 -0.001,0.625 0.625,0 0,1 -0.062,-0.006 0.625,0.625 0,0 1,-0.062 -0.012,0.625 0.625,0 0,1 -0.06,-0.019 0.625,0.625 0,0 1,-0.058 -0.024,0.625 0.625,0 0,1 -0.055,-0.03 0.625,0.625 0,0 1,-0.052 -0.035,0.625 0.625,0 0,1 -0.048,-0.041 0.625,0.625 0,0 1,-0.043 -0.044,0.625 0.625,0 0,1 -0.039,-0.049 0.625,0.625 0,0 1,-0.034 -0.052,0.625 0.625,0 0,1 -0.028,-0.056 0.625,0.625 0,0 1,-0.023 -0.058,0.625 0.625,0 0,1 -0.017,-0.06 0.625,0.625 0,0 1,-0.01 -0.062,0.625 0.625,0 0,1 -0.005,-0.062 0.625,0.625 0,0 1,0.002 -0.063,0.625 0.625,0 0,1 0.008,-0.062 0.625,0.625 0,0 1,0.014 -0.061,0.625 0.625,0 0,1 0.021,-0.059 0.625,0.625 0,0 1,0.026 -0.057,0.625 0.625,0 0,1 0.031,-0.054 0.625,0.625 0,0 1,0.037 -0.05,0.625 0.625,0 0,1 0.041,-0.047 0.625,0.625 0,0 1,0.046 -0.042,0.625 0.625,0 0,1 0.05,-0.038 0.625,0.625 0,0 1,0.054 -0.032,0.625 0.625,0 0,1 0.057,-0.027 0.625,0.625 0,0 1,0.059 -0.021,0.625 0.625,0 0,1 0.06,-0.015 0.625,0.625 0,0 1,0.062 -0.009,0.625 0.625,0 0,1 0.063,-0.002l1.7,-0.009 0.295,-2.13a0.625,0.625 0,0 1,0.007 -0.043,0.625 0.625,0 0,1 0.015,-0.06 0.625,0.625 0,0 1,0.021 -0.059,0.625 0.625,0 0,1 0.027,-0.056 0.625,0.625 0,0 1,0.032 -0.054,0.625 0.625,0 0,1 0.038,-0.05 0.625,0.625 0,0 1,0.042 -0.046,0.625 0.625,0 0,1 0.047,-0.041 0.625,0.625 0,0 1,0.05 -0.037,0.625 0.625,0 0,1 0.054,-0.031 0.625,0.625 0,0 1,0.057 -0.026,0.625 0.625,0 0,1 0.06,-0.02 0.625,0.625 0,0 1,0.06 -0.014,0.625 0.625,0 0,1 0.062,-0.008 0.625,0.625 0,0 1,0.063 -0.002zM13.603,10.957 L10.823,10.972 10.492,13.36 13.271,13.345 13.603,10.958z"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_status_channel_offline.xml b/app/src/main/res/drawable/ic_status_channel_offline.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d24bc35b389eaf0cce030158e442937211e2a365
--- /dev/null
+++ b/app/src/main/res/drawable/ic_status_channel_offline.xml
@@ -0,0 +1,30 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.000002">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="m10.66,7.04a0.625,0.625 0,0 0,-0.634 0.548l-0.295,2.13 -1.7,0.009a0.625,0.625 0,1 0,0.006 1.25l1.52,-0.008 -0.331,2.388 -1.598,0.008a0.625,0.625 0,1 0,0.006 1.25l1.418,-0.007 -0.277,1.998a0.625,0.625 0,1 0,1.238 0.172l0.302,-2.176 2.78,-0.015 -0.28,2.019a0.625,0.625 0,1 0,1.238 0.172l0.305,-2.197 1.892,-0.01a0.625,0.625 0,1 0,-0.007 -1.25l-1.712,0.009 0.331,-2.388 1.789,-0.009a0.625,0.625 0,1 0,-0.006 -1.25l-1.609,0.008 0.268,-1.932a0.625,0.625 0,0 0,-0.604 -0.719,0.625 0.625,0 0,0 -0.635,0.548l-0.292,2.109 -2.78,0.015 0.271,-1.953a0.625,0.625 0,0 0,-0.604 -0.719zM13.6,10.948 L13.269,13.336 10.489,13.35 10.82,10.963 13.6,10.948zM12,1.998c-5.514,0 -10,4.486 -10,10s4.486,10 10,10 10,-4.486 10,-10 -4.486,-10 -10,-10zM12,3.498c4.703,0 8.5,3.796 8.5,8.5s-3.797,8.5 -8.5,8.5 -8.5,-3.797 -8.5,-8.5 3.797,-8.5 8.5,-8.5z"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_status_offline.xml b/app/src/main/res/drawable/ic_status_offline.xml
new file mode 100644
index 0000000000000000000000000000000000000000..09c8869d1ca36ab4a027e3058474e52e0ceeae0f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_status_offline.xml
@@ -0,0 +1,30 @@
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportHeight="24.0"
+        android:viewportWidth="24.000002">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="m12,2c-5.514,0 -10,4.486 -10,10 0,5.514 4.486,10 10,10s10,-4.486 10,-10 -4.486,-10 -10,-10zM12,3.5c4.703,0 8.5,3.796 8.5,8.5 -0,4.703 -3.797,8.5 -8.5,8.5s-8.5,-3.797 -8.5,-8.5 3.797,-8.5 8.5,-8.5z"/>
+</vector>
diff --git a/app/src/main/res/layout-sw600dp-land/activity_setup.xml b/app/src/main/res/layout-sw600dp-land/activity_setup.xml
index 51358ec3abea9dba768d88e4c01c529e27ae76d3..a8d947168cd5b8ea3c897eb592fe47445ccf8ad0 100644
--- a/app/src/main/res/layout-sw600dp-land/activity_setup.xml
+++ b/app/src/main/res/layout-sw600dp-land/activity_setup.xml
@@ -40,10 +40,11 @@
         android:layout_marginBottom="16dp"
         android:layout_marginEnd="80dp"
         android:layout_marginRight="80dp"
-        android:src="@drawable/ic_arrow_right_dark"
+        android:tint="?attr/colorFill"
         app:backgroundTint="#8A000000"
         app:elevation="0dip"
         app:fabSize="normal"
-        app:pressedTranslationZ="0dip" />
+        app:pressedTranslationZ="0dip"
+        app:srcCompat="@drawable/ic_arrow_right"/>
 
 </FrameLayout>
diff --git a/app/src/main/res/layout-sw600dp/activity_setup.xml b/app/src/main/res/layout-sw600dp/activity_setup.xml
index aaac9a03706acb59ee7d712a616971439323a81f..116e4211d1cde5aed3f3523405fcd71a77e9c74b 100644
--- a/app/src/main/res/layout-sw600dp/activity_setup.xml
+++ b/app/src/main/res/layout-sw600dp/activity_setup.xml
@@ -45,11 +45,12 @@
             android:layout_marginBottom="16dp"
             android:layout_marginEnd="16dp"
             android:layout_marginRight="16dp"
-            android:src="@drawable/ic_arrow_right_dark"
+            android:tint="?attr/colorFill"
             app:backgroundTint="#8A000000"
             app:elevation="0dip"
             app:fabSize="normal"
-            app:pressedTranslationZ="0dip" />
+            app:pressedTranslationZ="0dip"
+            app:srcCompat="@drawable/ic_arrow_right"/>
 
     </FrameLayout>
 
diff --git a/app/src/main/res/layout/activity_chatlist_list.xml b/app/src/main/res/layout/activity_chatlist_list.xml
index 633e507ffa82f927aa08484bb555fd902461c4c5..7069ca753c89d7fbd993395ca970275832930b62 100644
--- a/app/src/main/res/layout/activity_chatlist_list.xml
+++ b/app/src/main/res/layout/activity_chatlist_list.xml
@@ -22,10 +22,11 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:background="?attr/colorBackground">
+    android:background="?attr/colorBackground"
+    android:orientation="vertical">
 
     <android.support.design.widget.AppBarLayout
         android:id="@+id/appBar"
@@ -59,6 +60,7 @@
             android:layout_marginBottom="16dp"
             android:layout_marginEnd="16dp"
             android:layout_marginRight="16dp"
-            android:src="@drawable/ic_plus_dark"/>
+            android:tint="@color/colorFillDark"
+            app:srcCompat="@drawable/ic_add"/>
     </FrameLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_network_edit.xml b/app/src/main/res/layout/activity_network_edit.xml
index f8d64bd4bf89a6b5a5d5a907f5d72f2ea3733efb..865a75d5cde797e9db5bcf490b08d30dfa6903bd 100644
--- a/app/src/main/res/layout/activity_network_edit.xml
+++ b/app/src/main/res/layout/activity_network_edit.xml
@@ -97,6 +97,18 @@
                 android:layout_height="wrap_content"
                 android:text="rejoinChannels"/>
 
+            <android.support.v7.widget.ButtonBarLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <android.support.v7.widget.AppCompatButton
+                    android:id="@+id/servers"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="Edit Servers"/>
+
+            </android.support.v7.widget.ButtonBarLayout>
+
             <android.support.v7.widget.SwitchCompat
                 android:id="@+id/useCustomCodecs"
                 style="?attr/switchPreferenceStyle"
diff --git a/app/src/main/res/layout/activity_network_list.xml b/app/src/main/res/layout/activity_network_list.xml
index c7c7de60c9a28ae87401c5f1875c94fc06205387..3c90be389c441895b08bbd586d7bea6073120cd8 100644
--- a/app/src/main/res/layout/activity_network_list.xml
+++ b/app/src/main/res/layout/activity_network_list.xml
@@ -22,10 +22,11 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:background="?attr/colorBackground">
+    android:background="?attr/colorBackground"
+    android:orientation="vertical">
 
     <android.support.design.widget.AppBarLayout
         android:id="@+id/appBar"
@@ -58,6 +59,7 @@
             android:layout_marginBottom="16dp"
             android:layout_marginEnd="16dp"
             android:layout_marginRight="16dp"
-            android:src="@drawable/ic_plus_dark"/>
+            android:tint="@color/colorFillDark"
+            app:srcCompat="@drawable/ic_add"/>
     </FrameLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_networkserver_edit.xml b/app/src/main/res/layout/activity_networkserver_edit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..75d871f89693b00873958dbd9117f4f89a24b2a6
--- /dev/null
+++ b/app/src/main/res/layout/activity_networkserver_edit.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="?attr/colorBackground"
+    android:orientation="vertical">
+
+    <android.support.design.widget.AppBarLayout
+        android:id="@+id/appBar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:theme="?attr/actionBarTheme">
+
+        <android.support.v7.widget.Toolbar
+            android:id="@+id/toolbar"
+            android:layout_width="match_parent"
+            android:layout_height="?attr/actionBarSize"/>
+
+    </android.support.design.widget.AppBarLayout>
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:padding="16dp">
+
+            <android.support.design.widget.TextInputLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <android.support.design.widget.TextInputEditText
+                    android:id="@+id/host"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:hint="host"/>
+
+            </android.support.design.widget.TextInputLayout>
+
+            <android.support.design.widget.TextInputLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <android.support.design.widget.TextInputEditText
+                    android:id="@+id/port"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:hint="port"
+                    android:inputType="number"
+                    android:maxLength="5"/>
+
+            </android.support.design.widget.TextInputLayout>
+
+            <android.support.v7.widget.AppCompatCheckBox
+                android:id="@+id/useSSL"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="useSSL"/>
+
+            <android.support.design.widget.TextInputLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <android.support.design.widget.TextInputEditText
+                    android:id="@+id/password"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:hint="password"/>
+
+            </android.support.design.widget.TextInputLayout>
+
+            <android.support.v7.widget.SwitchCompat
+                android:id="@+id/useProxy"
+                style="?attr/switchPreferenceStyle"
+                android:layout_width="match_parent"
+                android:layout_height="48dp"
+                android:gravity="center_vertical"
+                android:text="Proxy"
+                android:textColor="?attr/colorAccent"
+                android:textSize="14sp"/>
+
+
+            <LinearLayout
+                android:id="@+id/groupProxy"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+
+                <android.support.design.widget.TextInputLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+
+                    <android.support.design.widget.TextInputEditText
+                        android:id="@+id/proxyHost"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:hint="proxyHost"/>
+
+                </android.support.design.widget.TextInputLayout>
+
+                <android.support.design.widget.TextInputLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+
+                    <android.support.design.widget.TextInputEditText
+                        android:id="@+id/proxyPort"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:hint="proxyPort"
+                        android:inputType="number"
+                        android:maxLength="5"/>
+
+                </android.support.design.widget.TextInputLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:paddingTop="16dp">
+
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_vertical"
+                        android:layout_marginBottom="8dp"
+                        android:paddingLeft="3dp"
+                        android:paddingRight="3dp"
+                        android:text="proxyType"
+                        android:textSize="12sp"/>
+
+                    <android.support.v7.widget.AppCompatSpinner
+                        android:id="@+id/proxyType"
+                        style="@style/Base.Widget.AppCompat.Spinner.Underlined"
+                        android:layout_width="match_parent"
+                        android:layout_height="48dp"
+                        android:layout_gravity="center_vertical"
+                        android:layout_marginBottom="8dp"
+                        app:popupTheme="@style/AppTheme.PopupOverlay"/>
+
+                </LinearLayout>
+
+                <android.support.design.widget.TextInputLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+
+                    <android.support.design.widget.TextInputEditText
+                        android:id="@+id/proxyUser"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:hint="proxyUser"/>
+
+                </android.support.design.widget.TextInputLayout>
+
+                <android.support.design.widget.TextInputLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+
+                    <android.support.design.widget.TextInputEditText
+                        android:id="@+id/proxyPassword"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:hint="proxyPassword"/>
+
+                </android.support.design.widget.TextInputLayout>
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+    </ScrollView>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml
index df943e068c4cb818528834ed9a67e364879a7a5d..108955de291c3c1690ae4efb3c53e5cd2e5bed00 100644
--- a/app/src/main/res/layout/activity_setup.xml
+++ b/app/src/main/res/layout/activity_setup.xml
@@ -40,10 +40,11 @@
         android:layout_marginBottom="16dp"
         android:layout_marginEnd="16dp"
         android:layout_marginRight="16dp"
-        android:src="@drawable/ic_arrow_right_dark"
+        android:tint="?attr/colorFill"
         app:backgroundTint="#8A000000"
         app:elevation="0dip"
         app:fabSize="normal"
-        app:pressedTranslationZ="0dip" />
+        app:pressedTranslationZ="0dip"
+        app:srcCompat="@drawable/ic_arrow_right"/>
 
 </FrameLayout>
diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml
index 79ca8b88c3b8d339340b55915c086ff34e01d10e..484db8acd217ee666e6dd1160101e4e94cf0e91d 100644
--- a/app/src/main/res/layout/fragment_chat.xml
+++ b/app/src/main/res/layout/fragment_chat.xml
@@ -46,18 +46,19 @@
 
         <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_gravity="end|bottom"
             android:layout_marginBottom="12dp"
+            android:layout_marginEnd="12dp"
+            android:layout_marginRight="12dp"
+            android:tint="@color/colorFillDark"
+            android:visibility="gone"
             app:backgroundTint="#8A808080"
             app:elevation="0dip"
+            app:fabSize="mini"
             app:pressedTranslationZ="0dip"
-            android:layout_gravity="end|bottom" />
+            app:srcCompat="@drawable/ic_scroll_down"/>
 
     </FrameLayout>
 
diff --git a/app/src/main/res/layout/widget_chatlist.xml b/app/src/main/res/layout/widget_chatlist.xml
index 3afd6a0eed2d97b4b82e8a3f2feecbe68af84d46..0141e5179f8d6b3b7ccdb1158ea7ad2b06718b9c 100644
--- a/app/src/main/res/layout/widget_chatlist.xml
+++ b/app/src/main/res/layout/widget_chatlist.xml
@@ -20,40 +20,20 @@
   ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="56dp"
-    android:background="?attr/selectableItemBackground"
-    android:clickable="true"
-    android:orientation="horizontal"
-    android:paddingLeft="16dp"
-    android:paddingRight="16dp">
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:layout_width="match_parent"
+             android:layout_height="56dp"
+             android:background="?attr/selectableItemBackground"
+             android:clickable="true"
+             android:paddingLeft="16dp"
+             android:paddingRight="16dp">
 
-    <LinearLayout
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_margin="@dimen/material_drawer_item_profile_icon_padding_right"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/chatlist_name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif-medium"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="16sp" />
-    </LinearLayout>
-
-    <android.support.v7.widget.AppCompatImageButton
-        android:id="@+id/chatlist_delete"
-        style="?attr/buttonStyleSmall"
-        android:layout_width="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_height="@dimen/material_drawer_item_profile_icon_width"
+    <TextView
+        android:id="@+id/chatlist_name"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
         android:layout_gravity="center_vertical"
-        android:background="?attr/selectableItemBackgroundBorderless"
-        android:src="@drawable/ic_delete_light" />
-</LinearLayout>
+        android:lines="1"
+        android:singleLine="true"
+        android:textSize="16sp"/>
+</FrameLayout>
diff --git a/app/src/main/res/layout/widget_core_account.xml b/app/src/main/res/layout/widget_core_account.xml
index 464cf4c49fe38761c915f185b42a047ba69e6bf5..769ffc1e662218ca3d23e0eda05569ec1ec616ba 100644
--- a/app/src/main/res/layout/widget_core_account.xml
+++ b/app/src/main/res/layout/widget_core_account.xml
@@ -70,5 +70,6 @@
         android:layout_height="@dimen/material_drawer_item_profile_icon_width"
         android:layout_gravity="center_vertical"
         android:background="?attr/selectableItemBackgroundBorderless"
-        android:src="@drawable/ic_delete_light" />
+        android:src="@drawable/ic_delete"
+        android:tint="?attr/colorFill"/>
 </LinearLayout>
diff --git a/app/src/main/res/layout/widget_core_account_add.xml b/app/src/main/res/layout/widget_core_account_add.xml
index 861b6e17b4d624bfc35931e52e276f5aab1ebef9..8c5422b65be370544e8f683151b2d547c8d9a3b7 100644
--- a/app/src/main/res/layout/widget_core_account_add.xml
+++ b/app/src/main/res/layout/widget_core_account_add.xml
@@ -21,14 +21,15 @@
   -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/material_drawer_item_profile"
-    android:background="?attr/selectableItemBackground"
-    android:orientation="horizontal"
-    android:paddingEnd="@dimen/material_drawer_vertical_padding"
-    android:paddingLeft="@dimen/material_drawer_vertical_padding"
-    android:paddingRight="@dimen/material_drawer_vertical_padding"
-    android:paddingStart="@dimen/material_drawer_vertical_padding">
+              xmlns:app="http://schemas.android.com/apk/res-auto"
+              android:layout_width="match_parent"
+              android:layout_height="@dimen/material_drawer_item_profile"
+              android:background="?attr/selectableItemBackground"
+              android:orientation="horizontal"
+              android:paddingEnd="@dimen/material_drawer_vertical_padding"
+              android:paddingLeft="@dimen/material_drawer_vertical_padding"
+              android:paddingRight="@dimen/material_drawer_vertical_padding"
+              android:paddingStart="@dimen/material_drawer_vertical_padding">
 
     <LinearLayout
         android:layout_width="@dimen/material_drawer_item_profile_icon_width"
@@ -44,7 +45,8 @@
             android:layout_width="32dp"
             android:layout_height="32dp"
             android:layout_gravity="center_vertical"
-            android:src="@drawable/ic_plus_light" />
+            android:tint="?attr/colorFill"
+            app:srcCompat="@drawable/ic_add"/>
 
     </LinearLayout>
 
diff --git a/app/src/main/res/layout/widget_editor.xml b/app/src/main/res/layout/widget_editor.xml
index 16d69691f7e263a7cd033deb8fd65e3720b517da..8a92b0b2ae627bd1822fe2e6e2402475af6971a6 100644
--- a/app/src/main/res/layout/widget_editor.xml
+++ b/app/src/main/res/layout/widget_editor.xml
@@ -21,10 +21,11 @@
   -->
 
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:showIn="@layout/widget_slider">
+                xmlns:app="http://schemas.android.com/apk/res-auto"
+                xmlns:tools="http://schemas.android.com/tools"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                tools:showIn="@layout/widget_slider">
 
     <ScrollView
         android:id="@+id/chatline_scroller"
@@ -65,9 +66,10 @@
         android:layout_gravity="top"
         android:background="?attr/selectableItemBackgroundBorderless"
         android:padding="12dp"
-        android:src="@drawable/ic_send"
+        android:scaleType="fitXY"
         android:theme="@style/RippleOverlay"
-        android:tint="?attr/colorAccent" />
+        android:tint="?attr/colorAccent"
+        app:srcCompat="@drawable/ic_send"/>
 
     <android.support.design.widget.AppBarLayout
         android:id="@+id/formatting_toolbar_container"
diff --git a/app/src/main/res/layout/widget_networkserver.xml b/app/src/main/res/layout/widget_networkserver.xml
new file mode 100644
index 0000000000000000000000000000000000000000..001c8357709a6b72cfe76b13d3c3a15ed443e27a
--- /dev/null
+++ b/app/src/main/res/layout/widget_networkserver.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ QuasselDroid - Quassel client for Android
+  ~ Copyright (C) 2016 Janne Koschinski
+  ~ Copyright (C) 2016 Ken Børge Viktil
+  ~ Copyright (C) 2016 Magnus Fjell
+  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify it
+  ~ under the terms of the GNU General Public License as published by the Free
+  ~ Software Foundation, either version 3 of the License, or (at your option)
+  ~ any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License along
+  ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="56dp"
+              android:background="?selectableItemBackground"
+              android:clickable="true"
+              android:orientation="horizontal"
+              android:paddingLeft="?listPreferredItemPaddingLeft"
+              android:paddingRight="?listPreferredItemPaddingRight">
+
+    <ImageView
+        android:id="@+id/lock"
+        android:layout_width="24dp"
+        android:layout_height="24dp"
+        android:layout_gravity="center_vertical"
+        android:src="@drawable/ic_lock"
+        android:tint="?colorFill"/>
+
+    <TextView
+        android:id="@+id/text"
+        android:layout_width="0dip"
+        android:layout_height="match_parent"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp"
+        android:layout_weight="1"
+        android:gravity="center_vertical|start"
+        android:lines="1"
+        android:singleLine="true"
+        android:textSize="16sp"/>
+
+    <ImageView
+        android:id="@+id/drag_handle"
+        android:layout_width="36dp"
+        android:layout_height="36dp"
+        android:layout_gravity="center_vertical"
+        android:src="@drawable/ic_reorder"
+        android:tint="?attr/colorFill"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_settings_network.xml b/app/src/main/res/layout/widget_settings_network.xml
index ff16756bda26ead89cf7e1fcba39bce9b5aa7883..66cc8d23ffd944db5b114ebbc2e5dba6b4f63d12 100644
--- a/app/src/main/res/layout/widget_settings_network.xml
+++ b/app/src/main/res/layout/widget_settings_network.xml
@@ -20,40 +20,21 @@
   ~ with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="56dp"
-    android:background="?attr/selectableItemBackground"
-    android:clickable="true"
-    android:orientation="horizontal"
-    android:paddingLeft="16dp"
-    android:paddingRight="16dp">
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:layout_width="match_parent"
+             android:layout_height="56dp"
+             android:background="?attr/selectableItemBackground"
+             android:clickable="true"
+             android:paddingLeft="16dp"
+             android:paddingRight="16dp">
 
-    <LinearLayout
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_margin="@dimen/material_drawer_item_profile_icon_padding_right"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/network_name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif-medium"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="16sp" />
-    </LinearLayout>
-
-    <android.support.v7.widget.AppCompatImageButton
-        android:id="@+id/network_delete"
-        style="?attr/buttonStyleSmall"
-        android:layout_width="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_height="@dimen/material_drawer_item_profile_icon_width"
+    <TextView
+        android:id="@+id/network_name"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
         android:layout_gravity="center_vertical"
-        android:background="?attr/selectableItemBackgroundBorderless"
-        android:src="@drawable/ic_delete_light" />
-</LinearLayout>
+        android:lines="1"
+        android:singleLine="true"
+        android:textSize="16sp"/>
+</FrameLayout>
+
diff --git a/app/src/main/res/menu/chat.xml b/app/src/main/res/menu/chat.xml
index fee48247c7db1334e013ff351e9cd4292e15498a..c6154866f277f810c58eb8898a3fa21ccfe604fc 100644
--- a/app/src/main/res/menu/chat.xml
+++ b/app/src/main/res/menu/chat.xml
@@ -25,11 +25,10 @@
     <item
         android:id="@+id/action_search"
         android:title="@string/label_search"
-        app:showAsAction="never|collapseActionView"
-        app:actionViewClass="android.support.v7.widget.SearchView" />
+        app:actionViewClass="android.support.v7.widget.SearchView"
+        app:showAsAction="never|collapseActionView"/>
     <item
         android:id="@+id/action_hide_events"
-        android:icon="?attr/iconFilter"
         android:title="@string/labelHideEvents"
         app:showAsAction="never" />
     <item
diff --git a/app/src/main/res/menu/chatlist.xml b/app/src/main/res/menu/chatlist.xml
index b168c6942c37e0c5052ad1141112025bf02350a5..191773cdc6daed348930ad714f37243626df749f 100644
--- a/app/src/main/res/menu/chatlist.xml
+++ b/app/src/main/res/menu/chatlist.xml
@@ -23,14 +23,14 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
     <item
         android:id="@+id/action_join_channel"
-        android:icon="?attr/iconAdd"
+        android:icon="@drawable/ic_add"
         android:title="@string/action_join_channel"
         app:showAsAction="ifRoom" />
     <item
         android:id="@+id/action_show_all"
+        android:checkable="true"
         android:title="@string/action_show_hidden"
-        app:showAsAction="never"
-        android:checkable="true" />
+        app:showAsAction="never"/>
     <item
         android:id="@+id/action_manage_chat_lists"
         android:title="@string/action_manage_chat_lists"
diff --git a/app/src/main/res/menu/editor.xml b/app/src/main/res/menu/editor.xml
index c73eee043fa83d7e17431c7c6674b69c3090268d..637496929e85f36c26c383f4f4ae5300d76bdd8e 100644
--- a/app/src/main/res/menu/editor.xml
+++ b/app/src/main/res/menu/editor.xml
@@ -24,7 +24,7 @@
       xmlns:app="http://schemas.android.com/apk/res-auto">
     <item
         android:id="@+id/action_confirm"
-        android:icon="@drawable/ic_check_dark"
+        android:icon="@drawable/ic_check"
         android:title="Save"
         app:showAsAction="always"/>
 </menu>
\ No newline at end of file
diff --git a/app/src/main/res/menu/formatting.xml b/app/src/main/res/menu/formatting.xml
index b807f4c067552fb0be866ca24e08decf74aff8c4..828d8d48d4628c8590a74ef42a266c1c933f3f1d 100644
--- a/app/src/main/res/menu/formatting.xml
+++ b/app/src/main/res/menu/formatting.xml
@@ -21,35 +21,175 @@
   -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+      xmlns:app="http://schemas.android.com/apk/res-auto">
     <item
         android:id="@+id/format_bold"
-        android:icon="?attr/iconFormatBold"
+        android:icon="@drawable/ic_format_bold"
         android:title="@string/formatBold"
-        app:showAsAction="always" />
+        app:showAsAction="always"/>
     <item
         android:id="@+id/format_italic"
-        android:icon="?attr/iconFormatItalic"
+        android:icon="@drawable/ic_format_italic"
         android:title="@string/formatItalic"
-        app:showAsAction="always" />
+        app:showAsAction="always"/>
     <item
         android:id="@+id/format_underline"
-        android:icon="?attr/iconFormatUnderline"
+        android:icon="@drawable/ic_format_underline"
         android:title="@string/formatUnderline"
-        app:showAsAction="always" />
+        app:showAsAction="always"/>
     <item
         android:id="@+id/format_paint"
-        android:icon="?attr/iconFormatPaint"
+        android:icon="@drawable/ic_format_paint"
         android:title="@string/formatColor"
-        app:showAsAction="always" />
+        app:showAsAction="always">
+        <menu>
+            <item
+                android:id="@+id/paint_clear"
+                android:title="@string/colorname_clear"/>
+            <item
+                android:id="@+id/paint_mircColor0"
+                android:icon="?attr/mircColor0"
+                android:title="@string/colorname_mircColor0"/>
+            <item
+                android:id="@+id/paint_mircColor1"
+                android:icon="?attr/mircColor1"
+                android:title="@string/colorname_mircColor1"/>
+            <item
+                android:id="@+id/paint_mircColor2"
+                android:icon="?attr/mircColor2"
+                android:title="@string/colorname_mircColor2"/>
+            <item
+                android:id="@+id/paint_mircColor3"
+                android:icon="?attr/mircColor3"
+                android:title="@string/colorname_mircColor3"/>
+            <item
+                android:id="@+id/paint_mircColor4"
+                android:icon="?attr/mircColor4"
+                android:title="@string/colorname_mircColor4"/>
+            <item
+                android:id="@+id/paint_mircColor5"
+                android:icon="?attr/mircColor5"
+                android:title="@string/colorname_mircColor5"/>
+            <item
+                android:id="@+id/paint_mircColor6"
+                android:icon="?attr/mircColor6"
+                android:title="@string/colorname_mircColor6"/>
+            <item
+                android:id="@+id/paint_mircColor7"
+                android:icon="?attr/mircColor7"
+                android:title="@string/colorname_mircColor7"/>
+            <item
+                android:id="@+id/paint_mircColor8"
+                android:icon="?attr/mircColor8"
+                android:title="@string/colorname_mircColor8"/>
+            <item
+                android:id="@+id/paint_mircColor9"
+                android:icon="?attr/mircColor9"
+                android:title="@string/colorname_mircColor9"/>
+            <item
+                android:id="@+id/paint_mircColorA"
+                android:icon="?attr/mircColorA"
+                android:title="@string/colorname_mircColorA"/>
+            <item
+                android:id="@+id/paint_mircColorB"
+                android:icon="?attr/mircColorB"
+                android:title="@string/colorname_mircColorB"/>
+            <item
+                android:id="@+id/paint_mircColorC"
+                android:icon="?attr/mircColorC"
+                android:title="@string/colorname_mircColorC"/>
+            <item
+                android:id="@+id/paint_mircColorD"
+                android:icon="?attr/mircColorD"
+                android:title="@string/colorname_mircColorD"/>
+            <item
+                android:id="@+id/paint_mircColorE"
+                android:icon="?attr/mircColorE"
+                android:title="@string/colorname_mircColorE"/>
+            <item
+                android:id="@+id/paint_mircColorF"
+                android:icon="?attr/mircColorF"
+                android:title="@string/colorname_mircColorF"/>
+        </menu>
+    </item>
     <item
         android:id="@+id/format_fill"
-        android:icon="?attr/iconFormatFill"
+        android:icon="@drawable/ic_format_fill"
         android:title="@string/formatFill"
-        app:showAsAction="always" />
+        app:showAsAction="always">
+        <menu>
+            <item
+                android:id="@+id/fill_clear"
+                android:title="@string/colorname_clear"/>
+            <item
+                android:id="@+id/fill_mircColor0"
+                android:icon="?attr/mircColor0"
+                android:title="@string/colorname_mircColor0"/>
+            <item
+                android:id="@+id/fill_mircColor1"
+                android:icon="?attr/mircColor1"
+                android:title="@string/colorname_mircColor1"/>
+            <item
+                android:id="@+id/fill_mircColor2"
+                android:icon="?attr/mircColor2"
+                android:title="@string/colorname_mircColor2"/>
+            <item
+                android:id="@+id/fill_mircColor3"
+                android:icon="?attr/mircColor3"
+                android:title="@string/colorname_mircColor3"/>
+            <item
+                android:id="@+id/fill_mircColor4"
+                android:icon="?attr/mircColor4"
+                android:title="@string/colorname_mircColor4"/>
+            <item
+                android:id="@+id/fill_mircColor5"
+                android:icon="?attr/mircColor5"
+                android:title="@string/colorname_mircColor5"/>
+            <item
+                android:id="@+id/fill_mircColor6"
+                android:icon="?attr/mircColor6"
+                android:title="@string/colorname_mircColor6"/>
+            <item
+                android:id="@+id/fill_mircColor7"
+                android:icon="?attr/mircColor7"
+                android:title="@string/colorname_mircColor7"/>
+            <item
+                android:id="@+id/fill_mircColor8"
+                android:icon="?attr/mircColor8"
+                android:title="@string/colorname_mircColor8"/>
+            <item
+                android:id="@+id/fill_mircColor9"
+                android:icon="?attr/mircColor9"
+                android:title="@string/colorname_mircColor9"/>
+            <item
+                android:id="@+id/fill_mircColorA"
+                android:icon="?attr/mircColorA"
+                android:title="@string/colorname_mircColorA"/>
+            <item
+                android:id="@+id/fill_mircColorB"
+                android:icon="?attr/mircColorB"
+                android:title="@string/colorname_mircColorB"/>
+            <item
+                android:id="@+id/fill_mircColorC"
+                android:icon="?attr/mircColorC"
+                android:title="@string/colorname_mircColorC"/>
+            <item
+                android:id="@+id/fill_mircColorD"
+                android:icon="?attr/mircColorD"
+                android:title="@string/colorname_mircColorD"/>
+            <item
+                android:id="@+id/fill_mircColorE"
+                android:icon="?attr/mircColorE"
+                android:title="@string/colorname_mircColorE"/>
+            <item
+                android:id="@+id/fill_mircColorF"
+                android:icon="?attr/mircColorF"
+                android:title="@string/colorname_mircColorF"/>
+        </menu>
+    </item>
     <item
         android:id="@+id/action_history"
-        android:icon="?attr/iconHistory"
+        android:icon="@drawable/ic_history"
         android:title="@string/labelHistory"
-        app:showAsAction="always" />
+        app:showAsAction="always"/>
 </menu>
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index b7b150121e50d0d71ac9a3e488eef898c65e99c5..7aa77ac95f7d22634e7be317e2b94cfe45907492 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -67,6 +67,8 @@
     <attr name="colorForegroundAction" format="color" />
     <attr name="colorForegroundError" format="color" />
 
+    <attr name="colorForegroundMirc" format="integer"/>
+
     <attr name="colorAccentFocus" format="color" />
     <attr name="colorDivider" format="color" />
 
@@ -82,18 +84,11 @@
     <attr name="colorTintHighlight" format="color" />
     <attr name="chatlineExpandedSize" />
 
-    <!-- Format icons -->
-    <attr name="iconFormatBold" format="reference" />
-    <attr name="iconFormatItalic" format="reference" />
-    <attr name="iconFormatUnderline" format="reference" />
-    <attr name="iconFormatPaint" format="reference" />
-    <attr name="iconFormatFill" format="reference" />
-    <attr name="iconHistory" format="reference" />
-    <attr name="iconDebug" format="reference" />
-    <attr name="iconFilter" format="reference" />
-    <attr name="iconDelete" format="reference" />
-    <attr name="iconModify" format="reference" />
-    <attr name="iconAdd" format="reference" />
+    <!-- Icons -->
+    <attr name="colorOffline" format="color"/>
+    <attr name="colorAway" format="color"/>
+    <attr name="colorFill" format="color"/>
+
     <attr name="formatBarTheme" format="reference" />
     <attr name="cardStyle" format="reference" />
 </resources>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index e0b54724b2dc615f3f6614b20acc48c7dade591e..d877d19e96eceb8933b79c2930449ab1cc7411d0 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -25,4 +25,13 @@
     <color name="colorPrimaryDark">#02588c</color>
     <color name="colorAccent">#afb42b</color>
     <color name="colorAccentFocus">#40afb42b</color>
+
+    <color name="colorFillLight">#757575</color>
+    <color name="colorFillDark">#ffffff</color>
+
+    <color name="colorOfflineLight">#757575</color>
+    <color name="colorOfflineDark">#B3B3B3</color>
+
+    <color name="colorAwayLight">#959595</color>
+    <color name="colorAwayDark">#939393</color>
 </resources>
diff --git a/app/src/main/res/values/strings_format.xml b/app/src/main/res/values/strings_format.xml
index 316a77e23d5dee0aa9d81cffc3b22fd0775cc70e..407a081a01c699ea6e8240ab9b32cc9bfc139698 100644
--- a/app/src/main/res/values/strings_format.xml
+++ b/app/src/main/res/values/strings_format.xml
@@ -50,4 +50,22 @@
     <string name="messageAction">* %1$s %2$s</string>
 
     <string name="messageTopic">%1$s has changed topic for %2$s to: "%3$s"</string>
+
+    <string name="colorname_clear">clear</string>
+    <string name="colorname_mircColor0">mircColor0</string>
+    <string name="colorname_mircColor1">mircColor1</string>
+    <string name="colorname_mircColor2">mircColor2</string>
+    <string name="colorname_mircColor3">mircColor3</string>
+    <string name="colorname_mircColor4">mircColor4</string>
+    <string name="colorname_mircColor5">mircColor5</string>
+    <string name="colorname_mircColor6">mircColor6</string>
+    <string name="colorname_mircColor7">mircColor7</string>
+    <string name="colorname_mircColor8">mircColor8</string>
+    <string name="colorname_mircColor9">mircColor9</string>
+    <string name="colorname_mircColorA">mircColorA</string>
+    <string name="colorname_mircColorB">mircColorB</string>
+    <string name="colorname_mircColorC">mircColorC</string>
+    <string name="colorname_mircColorD">mircColorD</string>
+    <string name="colorname_mircColorE">mircColorE</string>
+    <string name="colorname_mircColorF">mircColorF</string>
 </resources>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 3b826b53e2fa19ea344bc0c8a7e5e960a5a53c39..5d48bcba6a6dd2050bab9c9fba37dd51c4e4350f 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -35,20 +35,9 @@
 
         <item name="colorDivider">#1FFFFFFF</item>
 
-        <!--
-        <item name="material_drawer_background">?attr/colorBackground</item>
-        <item name="material_drawer_primary_text">?attr/colorForeground</item>
-        <item name="material_drawer_primary_icon">?attr/colorForeground</item>
-        <item name="material_drawer_secondary_text">?attr/colorForegroundSecondary</item>
-        <item name="material_drawer_selected">#26ffffff</item>
-        -->
-
-        <item name="iconFormatBold">@drawable/ic_format_bold_dark</item>
-        <item name="iconFormatItalic">@drawable/ic_format_italic_dark</item>
-        <item name="iconFormatUnderline">@drawable/ic_format_underline_dark</item>
-        <item name="iconFormatPaint">@drawable/ic_format_paint_dark</item>
-        <item name="iconFormatFill">@drawable/ic_format_fill_dark</item>
-        <item name="iconHistory">@drawable/ic_history_dark</item>
+        <item name="colorFill">@color/colorFillDark</item>
+        <item name="colorOffline">@color/colorOfflineDark</item>
+        <item name="colorAway">@color/colorAwayDark</item>
 
         <item name="cardStyle">@style/CardView.Dark</item>
     </style>
@@ -65,22 +54,11 @@
         <item name="windowActionModeOverlay">true</item>
         <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
 
-        <item name="colorDivider">#1F000000</item>
+        <item name="colorDivider">#1F000000</item>>
 
-        <!--
-        <item name="material_drawer_background">?attr/colorBackground</item>
-        <item name="material_drawer_primary_text">?attr/colorForeground</item>
-        <item name="material_drawer_primary_icon">?attr/colorForeground</item>
-        <item name="material_drawer_secondary_text">?attr/colorForegroundSecondary</item>
-        <item name="material_drawer_selected">#26000000</item>
-        -->
-
-        <item name="iconFormatBold">@drawable/ic_format_bold_light</item>
-        <item name="iconFormatItalic">@drawable/ic_format_italic_light</item>
-        <item name="iconFormatUnderline">@drawable/ic_format_underline_light</item>
-        <item name="iconFormatPaint">@drawable/ic_format_paint_light</item>
-        <item name="iconFormatFill">@drawable/ic_format_fill_light</item>
-        <item name="iconHistory">@drawable/ic_history_light</item>
+        <item name="colorFill">@color/colorFillLight</item>
+        <item name="colorOffline">@color/colorOfflineLight</item>
+        <item name="colorAway">@color/colorAwayLight</item>
 
         <item name="cardStyle">@style/CardView.Light</item>
     </style>
@@ -94,6 +72,10 @@
         <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
 
         <item name="windowActionModeOverlay">true</item>
+
+        <item name="colorFill">@color/colorFillLight</item>
+        <item name="colorOffline">@color/colorOfflineLight</item>
+        <item name="colorAway">@color/colorAwayLight</item>
     </style>
 
     <style name="RippleOverlay" parent="ThemeOverlay.AppCompat">
@@ -101,27 +83,23 @@
     </style>
 
     <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
-        <item name="colorControlNormal">#ffffff</item>
-        <item name="android:textColorPrimary">#ffffff</item>
+        <item name="colorControlNormal">@color/colorFillDark</item>
+        <item name="android:textColorPrimary">@color/colorFillDark</item>
         <item name="drawerArrowStyle">@style/DrawerArrowToggle</item>
 
-        <item name="iconDebug">@drawable/ic_bug_dark</item>
-        <item name="iconFilter">@drawable/ic_filter_dark</item>
-        <item name="iconModify">@drawable/ic_pencil_dark</item>
-        <item name="iconDelete">@drawable/ic_delete_dark</item>
-        <item name="iconAdd">@drawable/ic_plus_dark</item>
+        <item name="colorFill">@color/colorFillDark</item>
+        <item name="colorOffline">@color/colorOfflineDark</item>
+        <item name="colorAway">@color/colorAwayDark</item>
     </style>
 
     <style name="AppTheme.AppBarOverlay.Light" parent="ThemeOverlay.AppCompat.ActionBar">
-        <item name="colorControlNormal">#727272</item>
-        <item name="android:textColorPrimary">#727272</item>
+        <item name="colorControlNormal">@color/colorFillLight</item>
+        <item name="android:textColorPrimary">@color/colorFillLight</item>
         <item name="drawerArrowStyle">@style/DrawerArrowToggle.Light</item>
 
-        <item name="iconDebug">@drawable/ic_bug_light</item>
-        <item name="iconFilter">@drawable/ic_filter_light</item>
-        <item name="iconModify">@drawable/ic_pencil_light</item>
-        <item name="iconDelete">@drawable/ic_delete_light</item>
-        <item name="iconAdd">@drawable/ic_plus_light</item>
+        <item name="colorFill">@color/colorFillLight</item>
+        <item name="colorOffline">@color/colorOfflineLight</item>
+        <item name="colorAway">@color/colorAwayLight</item>
     </style>
 
     <style name="DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle">
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 36fc79bf4e6a1b01ba07654ce6160571844debb6..393a2286b1ef2d8b107166075041eb58a9ce0b24 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -62,6 +62,8 @@
         <item name="colorForegroundAction">#1a237e</item>
         <item name="colorForegroundError">#800000</item>
 
+        <item name="colorForegroundMirc">0x1</item>
+
         <item name="colorBackground">@color/md_light_background</item>
         <item name="colorBackgroundHighlight">#ff8811</item>
         <item name="colorBackgroundSecondary">@android:color/transparent</item>
@@ -113,6 +115,8 @@
         <item name="colorForegroundAction">#7986cb</item>
         <item name="colorForegroundError">#800000</item>
 
+        <item name="colorForegroundMirc">0x0</item>
+
         <item name="colorBackground">@color/md_dark_background</item>
         <item name="colorBackgroundHighlight">#ff8811</item>
         <item name="colorBackgroundSecondary">@android:color/transparent</item>
@@ -170,6 +174,8 @@
         <item name="colorForegroundAction">#268BD2</item>
         <item name="colorForegroundError">#B00000</item>
 
+        <item name="colorForegroundMirc">0xF</item>
+
         <item name="colorBackground">#FDF6E3</item>
         <item name="colorBackgroundHighlight">#268bd2</item>
         <item name="colorBackgroundSecondary">#FDF6E3</item>
@@ -226,6 +232,8 @@
         <item name="colorForegroundAction">#268BD2</item>
         <item name="colorForegroundError">#B00000</item>
 
+        <item name="colorForegroundMirc">0xF</item>
+
         <item name="colorBackground">#002B36</item>
         <item name="colorBackgroundHighlight">#268bd2</item>
         <item name="colorBackgroundSecondary">#002B36</item>