 
         wesabe.info 'History is ', (hi.name for hi in @history).join(' -> ')
 
-        wesabe.lang.func.callWithScope fn, this, wesabe.lang.extend(
-          browser: browser
-          page: page
-          e: @constructor.elements
-          answers: @answers
-          options: @job.options
-          log: log
-          tmp: @tmp
-          action: @getActionProxy(browser, page)
-          job: @getJobProxy()
-          skipAccount: @skipAccount
-          reload: => @triggerDispatch(browser, page)
-          download: (args...) => @download(args...)
-        , scope or {})
+        @callWithMagicScope fn, browser, page, wesabe.lang.extend({log}, scope or {})
 
     @job.timer.start 'Navigate', overlap: off
 


    wesabe.debug "no filter voted to force or abort dispatch, so forcing dispatch by default"
    return true

  @::__defineGetter__ 'history', ->
    @_history ||= []

      for dispatch in @dispatches
        result = wesabe.tryThrow "#{module}#dispatch(#{dispatch.name})", (log) =>
          @job.timer.start 'Dispatch', overlap: off
          @callWithMagicScope dispatch.callback, browser, page, {log}

        if result is false
          wesabe.info "dispatch chain halted"
