     total = 0
     obTotal = 0
 
+    rootSys = root.$system
+
     # observed
-    for ob in root.$system.observers
+    for ob in rootSys.observers
         alight.observer.deliver ob
-    for x in root.$system.obList
+    for x in rootSys.obList
         scope = x[0]
         w = x[1]
 

        if alight.debug.watch
            console.log '$watch', name

        d = scope.$system.watches[key]
        if d
            if not option.readOnly
                d.extraLoop = true

Scope::$destroy = () ->
    scope = this
    sys = scope.$system
    rootSys = scope.$system.root.$system

    # fire callbacks
    for cb in sys.destroy_callbacks
        cb scope
    sys.destroy_callbacks = []

    if rootSys.useObserver
        do ->
            # remove observer from root
            ob = sys.ob
            l = rootSys.observers
            i = l.indexOf ob
            if i >= 0
                l.splice i, 1
