           isExclusive: yes
           connectDirectly: yes
 
-        KD.remote.subscribe channelName, subscriptionData, (brokerChannel)->
-          {name} = brokerChannel
-          socialapi.openedChannels[name] = {delegate: brokerChannel, channel: socialApiChannel}
-          forwardMessageEvents brokerChannel, socialApiChannel, getMessageEvents()
-
-          socialapi.emit "ChannelRegistered-#{name}", socialApiChannel
+        # do not use callbacks while subscribing, KD.remote.subscribe already
+        # returns the required channel object. Use it. Callbacks are called
+        # twice in the subscribe function
+        brokerChannel = KD.remote.subscribe channelName, subscriptionData
+
+        # add opened channel to the openedChannels list, for later use
+        socialapi.openedChannels[name] = {delegate: brokerChannel, channel: socialApiChannel}
+
+        # start forwarding private channel evetns to the original social channel
+        forwardMessageEvents brokerChannel, socialApiChannel, getMessageEvents()
+
+        # notify listener
+        socialapi.emit "ChannelRegistered-#{channelName}", socialApiChannel
 
 
   cycleChannel: (channel, callback)->

    @_cache         = {}

    super options, data

    KD.getSingleton('mainController').ready @bound 'openGroupChannel'


  getPrefetchedData: (dataPath) ->



  eachCached: (id, fn) ->
    fn section[id]  for own name, section of @_cache when id of section

  onChannelReady: (channel, callback) ->
    channelName = generateChannelName channel
