         @nodes = new TaggedNodeCollection()
         @events = new EventProcessor(this)
 
+        # Indicates whether @browser is currently loading a page.
+        # If so, we don't process client events/updates.
+        @browserLoading = false
+
         for own event, handler of DOMEventHandlers
             do (event, handler) =>
                 @browser.on event, () =>

            @sockets = (s for s in @sockets when s != socket)

    processEvent : (args ) =>
        @broadcastEvent 'pauseRendering'
        @events.processEvent(args)
        @broadcastEvent 'resumeRendering'

    processClientSetAttribute : (args) =>
        target = @nodes.get(args.target)
        {attribute, value} = args
        if attribute == 'src'
            return
        if attribute == 'selectedIndex'
            return target[attribute] = value
        target.setAttribute(attribute, value)

# The BrowserServer constructor iterates over the properties in this object and
# adds an event handler to the Browser for each one.  The function name must

        # TODO:
        #   'log'
        #   bandwidth measuring and logging etc should go here, since browser is protocol agnostic.
    
    broadcastEvent : (name, params) ->
        for socket in @sockets
