     length = @array.length
     for fn in fns
       unless 'function' is typeof(fn) then return error:'must be a function',fn:fn
-      @array.push fn
+      # @array.push fn
+    # no error, so, splice them all into there
+    @array.splice @array.length, 0, fns...
     if length isnt @array.length then @emit 'add', fns
     return success:true
 

      @emit 'remove', fn
    return result

  run: (options, done) ->
    context = options?.context ? {}                # get context or default to {}
    done = options?.done ? done                    # look for `done`
    control = new Control @, @array, context, done # create controller
    @emit 'start', control:control
    result = control._execute()                    # starts the chain
    if control.paused?                             # a paused chain isn't done
      results = paused:control.paused              # return only paused info

    return results                                 # return results, synch'ly

  _finish: (result, control) ->
    results = result:result, context:control._context, chain:this
    results.stopped = control.stopped if control.stopped?
    results.failed  = control.failed  if control.failed?
    control._done? result.error, results
