       result.removed = @array.splice index, 1
 
       # let everyone know we removed it
-      @emit 'remove', fn
+      @emit 'remove', result.removed
 
     # and return the result whether it's empty or not
     return result

    control._done? result.error, results
    @emit 'done', result.error, results
    return results

    # it's all good
    return success:true

  # remove function from the array via: index, id, or itself
  #  chain.remove 3
  #  chain.remove 'some-id'
  #  chain.remove fn1
  remove: (selector) ->

    switch typeof selector

      # a string must be an id of one of the functions, so find it
      when 'string'

        # return -1 unless we find it
        index = -1

        for fn,i in @array
          if selector is fn?.options?.id
            index = i
            break

      # if they provided the index to use...
      when 'number' then index = selector

      # find the function in the array
      when 'function' then index = @array.indexOf selector

      # woh! no good
      else return error:'Remove requires an ID, an index, or a function.', remove:selector

    # by default, return an empty object because we didn't remove anything
    result = {}
