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 cb2af06909e15b9bfd83a438daf0e26228bcf12e..02f08b33f0794e270ae2bab3b63bdac5167d039f 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
@@ -99,7 +99,7 @@ public class MainActivity extends BoundActivity {
      * This object encapsulates the current status of the activity – opened bufferview, for example
      */
     Status status = new Status();
-
+    BufferViewConfigItem currentConfig;
     private AccountManager manager;
 
     @Override
@@ -209,16 +209,19 @@ public class MainActivity extends BoundActivity {
         status.bufferViewConfigId = bufferViewConfigId;
         accountHeader.setActiveProfile(bufferViewConfigId, false);
 
-        if (bufferViewConfigId == -1) {
-            drawerLeft.removeAllItems();
-        } else {
-            drawerLeft.removeAllItems();
+
+        drawerLeft.removeAllItems();
+        if (currentConfig != null)
+            currentConfig.remove();
+        currentConfig = null;
+
+        if (bufferViewConfigId != -1) {
             QBufferViewManager bufferViewManager = client.bufferViewManager();
             assertNotNull(bufferViewManager);
             QBufferViewConfig viewConfig = bufferViewManager.bufferViewConfig(bufferViewConfigId);
             assertNotNull(viewConfig);
 
-            new BufferViewConfigItem(drawerLeft, viewConfig, context);
+            currentConfig = new BufferViewConfigItem(drawerLeft, viewConfig, context);
         }
     }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigItem.java
index f23eb526e2a86f44244df255c38b6040444d5baf..8362f4b520609d20daca1b022de7d7f88b07061f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigItem.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigItem.java
@@ -35,6 +35,7 @@ import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
 import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
 import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
 import de.kuschku.util.observables.callbacks.DrawerItemCallback;
+import de.kuschku.util.observables.callbacks.GeneralCallback;
 import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
 import de.kuschku.util.observables.lists.ObservableComparableSortedList;
 
@@ -52,14 +53,18 @@ public class BufferViewConfigItem implements DrawerItemCallback {
     @NonNull
     private final AppContext context;
 
+    GeneralCallback rebuildNetworkList = this::rebuildNetworkList;
+    AdapterUICallbackWrapper callbackWrapper;
+
     public BufferViewConfigItem(@NonNull Drawer drawer, @NonNull QBufferViewConfig config, @NonNull AppContext context) {
         this.drawer = drawer;
         this.config = config;
         this.context = context;
         manager = new BufferItemManager(context);
-        config.addObserver(this::rebuildNetworkList);
+        config.addObserver(rebuildNetworkList);
         assertNotNull(drawer.getItemAdapter());
-        networks.addCallback(new AdapterUICallbackWrapper(drawer.getItemAdapter()));
+        callbackWrapper = new AdapterUICallbackWrapper(drawer.getItemAdapter());
+        networks.addCallback(callbackWrapper);
         rebuildNetworkList();
     }
 
@@ -126,4 +131,9 @@ public class BufferViewConfigItem implements DrawerItemCallback {
                 drawer.getAdapter().notifyAdapterSubItemsChanged(position);
         }
     }
+
+    public void remove() {
+        config.deleteObserver(rebuildNetworkList);
+        networks.removeCallback(callbackWrapper);
+    }
 }