 ###
 Scope::$watchText = (name, callback, config) ->
     scope = @
+    sys = scope.$system
     config = config or {}
 
     if alight.debug.watchText
         console.log '$watchText', name
 
-    w = scope.$system.watches;
+    w = sys.watches;
     d = w[name]
     if d
         if not config.readOnly

                p.$system.nextSibling = n
            else
                # first scope
                root.$system.lineHead = n
            if n
                n.$system.prevSibling = p
            else
                # last scope
                root.$system.lineTail = p

    # remove children
    for it in scope.$system.children.slice()
        it.$destroy()

    # remove from parent

        while mainLoop
            mainLoop--

            rootSys.extraLoop = false

            if rootSys.useObserver
                scan_core2 root, result
            else
                scan_core root, result

            # call $any
            if result.changes
                for cb in rootSys.watchAnyAll
                    cb()
            if not result.extraLoop and not rootSys.extraLoop
                break
        if alight.debug.scan
            duration = get_time() - start
