       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

    # it's all good
    return success:true

  # remove function from the array
  #  chain.remove fn1
  remove: (fn) ->

    # return -1 unless we find it
    index = @array.indexOf fn

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

      @emit 'remove', array   # emit a remove event with the array

  # main function which begins the execution of the chain
  # options optionally configures `context`, `done`, and `_buildContext`
  run: (options, done) ->
    context = @_buildContext options               # build/use context
    done = options?.done ? done                    # look for `done`
    control = new Control @, @array, context, done # create controller
    @emit 'start', control:control, chain:this     # notify we're starting
