diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcListHelper.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcListHelper.kt
index 2dcf48ab33e24530d00ac755b0333d5bac096fa4..62140abd19e114e18bf30b4d925257535d1615e5 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcListHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcListHelper.kt
@@ -24,17 +24,33 @@ import de.kuschku.libquassel.protocol.QStringList
 import de.kuschku.libquassel.protocol.QVariantList
 import de.kuschku.libquassel.quassel.syncables.interfaces.IIrcListHelper
 import de.kuschku.libquassel.session.SignalProxy
+import de.kuschku.libquassel.util.rxjava.ReusableUnicastSubject
 
 class IrcListHelper constructor(
   proxy: SignalProxy
 ) : SyncableObject(proxy, "IrcListHelper"), IIrcListHelper {
+  sealed class Event {
+    data class ChannelList(val netId: NetworkId, val channelFilters: QStringList,
+                           val data: QVariantList) : Event()
+
+    data class Finished(val netId: NetworkId) : Event()
+
+    data class Error(val error: String) : Event()
+  }
+
+  private val subject = ReusableUnicastSubject.create<Event>()
+  val observable = subject.publish().refCount()
+
   override fun receiveChannelList(netId: NetworkId, channelFilters: QStringList,
                                   data: QVariantList) {
+    subject.onNext(Event.ChannelList(netId, channelFilters, data))
   }
 
   override fun reportFinishedList(netId: NetworkId) {
+    subject.onNext(Event.Finished(netId))
   }
 
   override fun reportError(error: String) {
+    subject.onNext(Event.Error(error))
   }
 }