diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java
index 7461e3388f01083a69ef511517cb758ac985bd33..6dbacc8a7c2b96d7ec88ce0e0e852e86fdf2ffa5 100644
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java
+++ b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java
@@ -153,7 +153,7 @@ public class NetworkSerializer implements ObjectSerializer<Network> {
     @NonNull
     @Override
     public Network fromLegacy(@NonNull Map<String, QVariant> map) {
-        final Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>> usersAndChannels = ((QVariant<Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>>>) map.get("QIrcUsersAndChannels")).data;
+        final Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>> usersAndChannels = ((QVariant<Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>>>) map.get("IrcUsersAndChannels")).data;
         final Map<String, QVariant<Map<String, QVariant>>> wrappedChannels = usersAndChannels.get("channels").data;
         final Map<String, QVariant<Map<String, QVariant>>> wrappedUsers = usersAndChannels.get("users").data;
         final Map<String, QIrcChannel> channels = new HashMap<>(wrappedChannels.size());
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java
index 1ba7b821a2a718d7f44ed34e04e9692c2549305a..7feec17a23b3810b4053e0da7b4a1e93926627fa 100644
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java
+++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java
@@ -44,6 +44,7 @@ import static de.kuschku.util.AndroidAssert.assertNotNull;
 public class BacklogManager extends ABacklogManager<BacklogManager> {
     private final Client client;
     private final BacklogStorage storage;
+    private final Set<Integer> initialized = new HashSet<>();
 
     public BacklogManager(Client client, BacklogStorage storage) {
         this.client = client;
@@ -53,7 +54,7 @@ public class BacklogManager extends ABacklogManager<BacklogManager> {
     @Override
     public void requestMoreBacklog(int bufferId, int amount) {
         Message last;
-        if (storage.getUnfiltered(bufferId).isEmpty() || null == (last = storage.getUnfiltered(bufferId).last()))
+        if (!initialized.contains(bufferId) || null == (last = storage.getUnfiltered(bufferId).last()))
             requestBacklogInitial(bufferId, amount);
         else {
             requestBacklog(bufferId, -1, last.messageId, amount, 0);
@@ -62,6 +63,10 @@ public class BacklogManager extends ABacklogManager<BacklogManager> {
 
     @Override
     public void requestBacklogInitial(int id, int amount) {
+        if (initialized.contains(id))
+            return;
+
+        initialized.add(id);
         requestBacklog(id, -1, -1, amount, 0);
     }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java
index 6059da4f8cb904f64cbcdf7ed03e354f6a7eda34..903312bb471b78b8aa41102d61b0ae638259c88b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java
@@ -192,14 +192,12 @@ public class ChatActivity extends AppCompatActivity {
     }
 
     public static boolean isNoColor(Buffer buffer) {
-        assertNotNull(buffer);
-        if (buffer instanceof ChannelBuffer) {
-            QIrcChannel channel = ((ChannelBuffer) buffer).getChannel();
-            assertNotNull(channel);
-            return channel.hasMode('c');
-        } else {
+        if (buffer == null)
             return false;
-        }
+        if (!(buffer instanceof ChannelBuffer))
+            return false;
+        QIrcChannel channel = ((ChannelBuffer) buffer).getChannel();
+        return channel != null && channel.hasMode('c');
     }
 
     @Override
@@ -573,7 +571,6 @@ public class ChatActivity extends AppCompatActivity {
     }
 
     private void selectBuffer(@IntRange(from = -1) int bufferId) {
-        Log.d("libquassel", context.client().bufferManager().channel(context.client().networkManager().network(4).ircChannel("#quassel")).getChannel().topic());
         if (bufferId == -1) {
             swipeView.setEnabled(false);
 
@@ -765,10 +762,19 @@ public class ChatActivity extends AppCompatActivity {
                 if (status.bufferId >= 0) {
                     Buffer buffer = context.client().bufferManager().buffer(status.bufferId);
                     if (buffer != null) {
-                        if (buffer instanceof QueryBuffer)
-                            subtitle = ((QueryBuffer) buffer).getUser().realName();
-                        else if (buffer instanceof ChannelBuffer)
-                            subtitle = ((ChannelBuffer) buffer).getChannel().topic();
+                        if (buffer instanceof QueryBuffer) {
+                            QIrcUser user = ((QueryBuffer) buffer).getUser();
+                            if (user != null)
+                                subtitle = user.realName();
+                            else
+                                subtitle = "";
+                        } else if (buffer instanceof ChannelBuffer) {
+                            QIrcChannel channel = ((ChannelBuffer) buffer).getChannel();
+                            if (channel != null)
+                                subtitle = channel.topic();
+                            else
+                                subtitle = "";
+                        }
                         else
                             subtitle = "";
                     } else {