     .query(options)[action]() (err, res, body) ->
       callback(err,res,body)
 
+recordUserQueryResults = (message, results) ->
+  uQ = message.robot.brain.get('userQueries') || {}
+  uD = uQ[message.message.user.id] = uQ[message.message.user.id] || {}
+  uD.queries = uD.queries || []
+  uD.queries.push(
+    text: message.message.text
+    time: now()
+    results: results
+  )
+  message.robot.brain.set('userQueries', uQ)
+
+getLastResultsRelevantToUser = (robot, user) ->
+  uQ = robot.brain.get('userQueries') || {}
+  uD = uQ[user.id] = uQ[user.id] || {}
+  uD.queries = uD.queries || []
+  lastUQTime = 0
+  if (uD.queries.length)
+    lastUQTime = uD.queries[uD.queries.length - 1].time
+  lqT = robot.brain.get('lastQueryTime')
+  if (lqT && lqT > lastUQTime && lqT - lastUQTime > 60)
+    return robot.brain.get('lastQueryResults')
+  if (uD.queries.length)
+    return uD.queries[uD.queries.length - 1].results
+  return null
+
 explain = (data) ->
   if not data.artists
     return 'nothin\''

    if (!data || data.length == 0)
      message.send(":small_blue_diamond: I got nothin'")
      return
    showResults(robot, message)

  robot.respond /say (.*)/i, (message) ->
    what = message.match[1]
    params = {what: what}
    spotRequest message, '/say', 'put', params, (err, res, body) ->
      message.send(what)

  robot.respond /(.*) says.*turn.*down.*/i, (message) ->
    name = message.match[1]

  robot.respond /play (.*)/i, (message) ->
    playNum = message.match[1].match(/#(\d+)\s*$/)
    if (playNum)
      r = getLastResultsRelevantToUser(robot, message.message.user)
      i = parseInt(playNum[1], 10) - 1
      if (r && r[i])
        playTrack(r[i], message)
        return
    if (message.match[1].match(/^that$/i))
