 
     undefined # prevent stray output
 
-  initialScope = createBoundVariableScope ((varName) -> throw 'unknown variable ' + varName), '_', rootModel, modelNotify
+  initialScope = createScope createBoundVariableFinder(rootVariableFinder, '_', rootModel, modelNotify)
 
   runTemplate Object.prototype, initialScope, rootTemplate

          result

      set: (varName, initialValue, subTemplate) ->
        runTemplate this, createMutableVariableScope(variableFinder, varName, initialValue), subTemplate
    }

  # @todo mask a top-level property and also keep track of which scope notifier it is

            newValue = getter()
            if newValue isnt value
              value = newValue
              runTemplate viewInstance, createScope(createBoundVariableFinder(variableFinder, subName, value, notify)), subTemplate

          runTemplate viewInstance, createScope(createBoundVariableFinder(variableFinder, subName, value, notify)), subTemplate

          { clear: clear }

