         # Start long-poller
         @poll "/roush/nodes/updates/#{@sKey}/#{@txID}?poll", (data) =>
           console.log "Got update: ", data
-          @updateNodes "/roush/nodes/", @wsKeys, @wsTemp
+          setTimeout @updateNodes(data, @wsKeys, @wsTemp), 1000
 
         # Load initial data, and poll every config.interval ms
-        @updateNodes "/roush/nodes/", @wsKeys, @wsTemp
+        @getNodes "/roush/nodes/", @wsKeys, @wsTemp
 
     @siteActive = ntrapy.selector (data) =>
       null # TODO:

    @parseNodes = (data, pin, keyed={}) ->
      root = {}

      # Index node list by ID, merging/updating if keyed was provided
      for node in data.nodes
        keyed[node.id] = node

      # Step through IDs
      for id of keyed
        node = keyed[id]
        pid = node.facts?.parent_id
        if pid? # Has parent ID?

            pnode.children ?= [] # Initialize if first child
            pnode.children.push node # Add to parent's children
          else # We're an orphan (broken data or from previous merge)
            console.log "Deleting orphan: ", keyed[id], node
            delete keyed[id] # No mercy for orphans!
        else if node.name is "workspace" # Mebbe root node?
          root = node # Point at it
        else # Invalid root node!
          console.log "Deleting invalid root: ", id, node
          delete keyed[id] # Pew Pew!

      pin keyed if pin? # Update pin with keyed
