 
     #log "ASSIGN #{ctx._name()}", ctx.shouldDefer()
     if ctx.shouldDefer()
-      ctx.addDeferred ctx.shouldDefer(), to, expression
+      ctx.addDeferredDefinition ctx.shouldDefer().concat to, expression
       return 'deferred'
 
     if assigns.length is 0

  _shouldDeferIn: (scope) ->
    scope._defer

  addDeferred: (dependencyName, lhs, rhs) ->
    @_scope().deferred.push [dependencyName, lhs, rhs]

  deferred: ->
    @_scope().deferred

    @statement = []
    @cacheScopes = [[]]
    @_assignTos = []
    topScope = @_augmentScope builtInContext this # dangerous passing itself in constructor
    topScope.topLevel = yes
    @scopes = [topScope]

  macros: ->
    @_macros
