           result
 
       set: (varName, initialValue, subTemplate) ->
-        runTemplate this, createMutableVariableScope(variableFinder, varName, initialValue), subTemplate
+        runTemplate this, createScope(createMutableVariableFinder(variableFinder, varName, initialValue)), subTemplate
     }
 
   # @todo mask a top-level property and also keep track of which scope notifier it is


    createGetter (-> target), 0

  createBoundVariableScope = (parentFinder, varName, boundValue, notify) ->
    createGetter = (subPath) ->
      createPathGetter boundValue, subPath

    createScopeWithFinder (name, callback) ->
      if name is varName
        callback createGetter, notify
      else
        parentFinder name, callback

  createMutableVariableScope = (parentFinder, varName, varValue) ->
    varNotify = createNotifier()
    createGetter = (subPath) ->
      createPathGetter varValue, subPath

    createScopeWithFinder (name, callback) ->
      if name is varName
        callback createGetter, varNotify
      else
        parentFinder name, callback

  createScopeWithFinder = (variableFinder) ->
    {
      bind: (subName, path, subTemplate) ->
        viewInstance = this


    undefined # prevent stray output

  initialScope = createScope createBoundVariableFinder(rootVariableFinder, '_', rootModel, modelNotify)

  runTemplate Object.prototype, initialScope, rootTemplate
