diff --git a/briar-gtk/briar_gtk/containers/main_window.py b/briar-gtk/briar_gtk/containers/main_window.py
index 6e39d744df0fc4cea8710ea0c05441b0548b595b..660bc88964aaa873499bf6122a2b0d41c2b88d57 100644
--- a/briar-gtk/briar_gtk/containers/main_window.py
+++ b/briar-gtk/briar_gtk/containers/main_window.py
@@ -150,7 +150,11 @@ class MainWindowContainer(Container):
     def _load_content(self):
         self._contacts = Contacts(APP().api)
         self._load_contacts()
-        self._contacts.watch_contacts(self._refresh_contacts_async)
+        # TODO: Disconnect if no more needed
+        APP().api.socket_listener.connect("ContactAddedEvent",
+                                          self._refresh_contacts_async)
+        APP().api.socket_listener.connect("ConversationMessageReceivedEvent",
+                                          self._refresh_contacts_async)
 
     def _load_contacts(self):
         self.contacts_list = self._contacts.get()
@@ -158,10 +162,11 @@ class MainWindowContainer(Container):
             contact_row = ContactRowWidget(contact)
             self.contacts_list_box.add(contact_row)
 
-    def _refresh_contacts_async(self):
+    def _refresh_contacts_async(self, message):
         GLib.idle_add(self._refresh_contacts)
 
     def _refresh_contacts(self):
+        # TODO: Keep selected contact with open chat
         self._clear_contact_list()
         self._load_contacts()
 
diff --git a/briar-gtk/briar_gtk/containers/private_chat.py b/briar-gtk/briar_gtk/containers/private_chat.py
index af9062bf084b52eaeae752830f80989671505c21..9fe44a26c10cdf603b09a99e207f3f532f971904 100644
--- a/briar-gtk/briar_gtk/containers/private_chat.py
+++ b/briar-gtk/briar_gtk/containers/private_chat.py
@@ -80,7 +80,9 @@ class PrivateChatContainer(Container):
             # Abusing idle_add function here because otherwise the message box
             # is too small and scrolling cuts out messages
             GLib.idle_add(self._add_message, message)
-        private_chat.watch_messages(self._add_message_async)
+        # TODO: Disconnect if no more needed
+        APP().api.socket_listener.connect("ConversationMessageReceivedEvent",
+                                          self._add_message_async)
 
     def _add_message(self, message):
         message_widget = PrivateMessageWidget(self._contact_name, message)