docs: function queues(queue_name, cb) {
  
        // path to use for http message operations
        var path = '/projects/' + project_id
                 + '/queues/'     + queue_name
                 + '/messages'
  
        // object to return
        var queue = {
              put   : messagePut
            , get   : messageGet
            , del   : messageDel
            , info  : queueInfo
            , name  : function(){return queue_name}}
  
        if (typeof cb === 'function') {
          queue.info(cb)
        }
  
        return queue
  
        //Implementation
  
        function messagePut(payload, op, cb) {
  
          if (typeof op === 'function') {
            cb = op
            op = {}
          }
  
          var msgs
          if (Array.isArray(payload)) {
            var params = Object.keys(op)
              , l = params.length
  
            msgs = payload.map(function (msg) {
                                var ret = {}
                                // No Object.create love, JSON.strigify
                                // does not care for prototype properties
                                for (var i = 0; i<l; i++) {
                                  ret[params[i]] = op[params[i]]
                                }
                                ret.body = msg
                                return ret
                              })
          } else {
            op.body = payload
            msgs = [op]
          }
  
          ironmqPut(path, {messages:msgs}, cb)
        }
  
        function messageGet(message_id, cb) {
          //paramater checking, return message w/ .del()
          var params = {}
          var msg_path = ''
          if (typeof message_id === 'function') {
            cb = message_id
          } else if (typeof message_id === 'number') {
            params.n = message_id
          } else if (typeof message_id === 'string') {
            msg_path = '/' + message_id
          } else {
            //error
          }
          ironmqGet(path + msg_path
                  , params
                  , function (err, obj) {
                      if (!err) {
                          obj = obj.messages.map(function(msg) {
                          msg.del = messageDel.bind(msg, msg.id)
                          return msg
                        })
                      }
                      cb(err, obj)
                  })
        }
  
        function messageDel(message_id, cb) {
          ironmqDel(path + '/' + message_id, cb)
        }
  
        function queueInfo(cb) {
          var queuePath = '/projects/' + project_id
                        + '/queues/'   + queue_name
          // This will update the one you have.  Is this bad?
          ironmqGet(queuePath
                  , {}
                  , function (err, obj) {
                      queue.size = obj.size
                      queue.time = new Date()
                      cb(err, queue)
                  })
  
          return queue
        }
      }