-define 'callbackWrapper', ['contextFactory', 'store', 'privateStore', 'jasmine'], (_ContextFactory_, _Store_, _Context_, _Jasmine_)->
-  (fn, ContextFactory = _ContextFactory_, Store = _Store_, Context = _Context_, Jasmine = _Jasmine_)->
+define 'callbackWrapper', ['store', 'privateStore', 'jasmine', 'evaluator'], (_Store_, _Context_, _Jasmine_, _Evaluator_)->
+  (fn, Store = _Store_, Context = _Context_, Jasmine = _Jasmine_, Evaluator = _Evaluator_)->
+
+    evaluator = new Evaluator()
 
     Dump = (size = 4)->
       dump = []

      beginWrap = 'function() { return '
      endWrap   = '; }'
      DslObjectDefinitions = (for __object in @properties()
        "var #{__object};"
        "var _#{__object}_ = new (#{ContextFactory.toString()})('#{__object}', this);").join("\n")

      for char in fn.toString()
        analize char

        buffer: (index)->
          return dump.join('') unless index?
          dump.join('')[index]
      }

    ContextFactory = (name)->
      self = undefined
      name = name

      {
        is: (argsFunction)->
          return unless argsFunction?
          self = this
          self.name = name
          self.func = argsFunction

          Jasmine.instance.beforeEach ->
            eval("#{self.name} = self.evaluate();")

            if Store.failed? and Store.failed[name]?
              eval("#{func.name} = func.evaluate();") for func in Store.failed[name]

          Jasmine.instance.afterEach ->
            eval("#{self.name} = void 0;")

            if Store.failed? and Store.failed[name]?
              eval("#{func.name} = void 0;") for func in Store.failed[name]

        evaluate: -> evaluator.perform(self)

      }

    @properties = ->
