     @mergenData.publish channel, JSON.stringify(data)
 
   connectToMessageBus: (cb)=>
+
+    # we have a second connection because, redis client in node doesnt send any commands
+    # when it enters subscribe mode, though redis docs says you can publish if you are in subcribe
+    # mode
+    @mergenData = redis.createClient(@port, @host)
+    @mergenData.on "error", (err)->
+      console.log "error", err
+
+    data = {}
+    data.pid = process.pid
+    data.hostname = os.hostname()
+    data.serviceGenericName = @serviceGenericName
+    data.serviceUniqueName = @serviceUniqueName
+    data.startedAt = Date.now()
+
+    @mergenData.hset "#{@publicKey}-kites", "#{@serviceGenericName}-#{@serviceUniqueName}", data
+
+    @sendCommand @getChannelNameForGenericName(), "kite.who", [], (err, reply)->
+      @commands['kite.join'].call(@, {args:[@getChannelNameForGenericName(),reply.from], from:reply.from})
+
+    @sendCommand @getChannelNameForGenericName(), "kite.join", [@getChannelNameForGenericName(), @getChannelNameForKite()]
+
+
+    @kite.db = @mergenData
+
     @mergen = redis.createClient(@port, @host)
     @mergen.on "error", (err)->
       console.log("Error ",err)

      checkrabbit = setInterval ()=>
        if rabbitReady
          clearInterval checkrabbit
          @db = @communicator.mergenData
          @emit 'kite-ready'
      , 10


      subscribeToChannelNames = _.without(subscribeToChannelNames, channel)
      console.log ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> connected to channel", channel, subscribeToChannelNames
      

    startQueueChecker = ()=>
      startQueueCheckerInterval = setInterval ()=>
        @commands['kite.consume']()
      , 0

    subscribeCheck = setInterval ()=>
      if subscribeToChannelNames.length is 0
