         return
 
   rawSendCmd: (cmd, cb=noop) =>
-    @msgHandlerQueue.push cb
+    @msgHandlerQueue.push
+      debug_id: @msgCounter++
+      cb: cb
     @send cmd
 
   handleIdleResultsLoop: (msg) =>

    handler(args...) for handler in handlersList

  handleMessage: (msg) =>
    @msgHandlerQueue.shift()(msg)

  send: (msg) =>
    @socket.emit 'ToMpd', msg + "\n"

  getOrCreate: (key, table, list, initObjFunc) =>

    @socket = io.connect()
    @buffer = ""
    @msgHandlerQueue = []
    # assign to console to enable message passing debugging
    @debugMsgConsole = null #console
    @msgCounter = 0

    # whether we've sent the idle command to mpd
    @idling = false

    @socket.on 'FromMpd', (data) =>
      @buffer += data
