         programDone() if name is currentScheme
 
         data.currentScheme = currentScheme = name
-        console.log "changing scheme to #{chalk.cyan name}"
+        console.error "changing scheme to #{chalk.cyan name}"
         if _.isObject(data.schemes[name])
           saveDataFile()
         else
-          console.log chalk.grey "initializing empty scheme object"
+          console.error chalk.grey "initializing empty scheme object"
           initalizeScheme name
         programDone()
 
-      listSlots: () ->
+      listSchemes: () ->
+        console.error "schemes"
+        console.error "------------------------------"
+        for scheme in _.keys(data.schemes)
+          console.error chalk.gray scheme
+
+      listSlots: (noExit) ->
         schemeMsg "listing slots"
-        console.log "------------------------------"
+        console.error "------------------------------"
         slots = _.sortBy(_.pairs(scheme.slots), (pair) -> parseInt(pair[0]))
         for pair in slots
-          console.log "#{chalk.yellow pair[0]}\t#{chalk.grey pair[1]}"
-        programDone()
+          console.error "#{chalk.yellow pair[0]}\t#{chalk.grey pair[1]}"
+        programDone() unless _.isBoolean(noExit) and noExit
+
+      pickSlot: () ->
+        commands.listSlots(true)
+        readline = require "readline"
+        rl = readline.createInterface
+          input: process.stdin
+          output: process.stderr
+          terminal: colors
+        rl.on "line", (line) ->
+          commands.getSlot(line.trim())
+        rl.prompt()
 
       getSlot: (idx) ->
         idx = parseInt(idx)

    #config = cache._config;

    commands =
      printCurrentScheme: () ->
        console.log currentScheme
        programDone()

      changeScheme: (name) ->

  .version(require("../package.json").version)

commander
  .command("init")
  .action(runCommand("init"));

commander
  .command('scheme [name]')
  .description('changes schemes (prints current scheme if no name is given)')
  .action(runCommand("changeScheme"));

commander
  .command("schemes")
  .action(runCommand("listSchemes"));

commander
  .command("list")
  .action(runCommand("listSlots"));

commander
  .command("pick")
  .action(runCommand("pickSlot"));

commander
  .command("get <idx>")
  .action(runCommand("getSlot"));

commander
  .command("set <idx> [path]")
  .action(runCommand("saveSlot"));

commander
  .command("clear")
  .action(runCommand("clearSlots"));

commander
  .command("compact")
  .action(runCommand("compactSlots"));

commander
