 # 3.1 Determine with items have already been done enough
 getMaxedItems = (obj, callback) ->
   if obj.condition is 'teaching'
+    ''' Don't need maxed conditions because teaching set is pre-determined '''
     callback(null, obj)
     return
 

  else
    obj.condition = obj.hit.condition.laterTasks

  switch obj.condition
    when 'feedback'
      callback('Feedback condition not yet designed', obj)
    else
      callback(null, obj)


  return

sampleTaskItems = (obj, callback) ->
  # Load Item model
  ItemModel = require('./models/' + obj.hit.itemModel)

  if obj.condition is 'teaching'
    ''' TODO get teaching set '''
    callback("Teaching set not ready yet", bj)
  
  if obj.condition is 'fast'
    ''' TODO Prep larger set for fast completion '''
    callback("Fast set not ready yet", obj)

  if obj.condition is 'basic' or 'fast'
    if obj.opts.user == 'PREVIEWUSER'
      candidates = obj.hit.items
    else
      excludes = obj.maxed.concat (item._id for item in obj.userItemList)
      candidates = _.difference(obj.hit.items, excludes)

    # Fast condition shouldn't specific a max size
    if obj.condition is 'fast' and obj.hit.maxSetSize
      delete obj.hit.maxSetSize

    itemSampleIds = _.sample(candidates, if obj.hit.maxSetSize then obj.hit.maxSetSize else 200)

    # Query info for all the sampled items
    if obj.hit.itemModel is 'pin'
      projection = { url:1, description:1, title:1, image:1, likes:1, repins:1 }
    else
      projection = {}
    ItemModel.find({_id:$in:itemSampleIds},
      projection,
      (err, results) ->
        obj.sample = results
        callback(err, obj)
      )

prepareTaskSet = (obj, callback) ->
  tasks = _.map(obj.sample, (task) ->
