           catch error
             events.emit "error", error
         else
-          events.emit "success", arg
+          events.emit "success", results
       _fn( arg )
       return events
 

              _error = new Error "concurrently: unable to complete"
              _error.errors = errors
              events.emit "error", _error
        error = (_error) ->
          errors.push _error
          # TODO: If we're going to finish() here, why bother with an array
          # of errors ... ?
          finish()
        return arg if functions.length is 0
        for [name, fn] in functions

      
  serially: (builder) ->
    functions = []
    go = (fn) ->
      functions.push fn
    builder go
    events = @source()
    (arg) ->
      results = []
      count = 0
      _fn = (arg) ->
        results.push arg if arg?
        fn = functions.shift()
        if fn?
          count++
          try
            rval = fn(arg)
            if rval instanceof EventChannel
