     @wsKeys = {}
 
     @updateTransaction = (data) =>
-      if data?
+      if data?.transaction?
         @sKey = data.transaction.session_key
         @txID = data.transaction.txid
-        #console.log "Updating transaction: ", @sKey, @txID
 
     @poll = (url, cb, timeout=@config?.timeout?.long) =>
-      rePoll = (data) =>
-        @updateTransaction data
-        # Restart long-poller for new transaction
-        setTimeout (=> @poll "/roush/nodes/updates/#{@sKey}/#{@txID}?poll", cb, timeout), 1
+      rePoll = (throttle=false, update=false) =>
+        doit = (=> @poll "/roush/nodes/updates/#{@sKey}/#{@txID}?poll", cb, timeout)
+        if update?
+          @getData "/roush/updates", (data) =>
+            @updateTransaction data
+            setTimeout doit, 1 unless throttle else 1000
+        else
+          setTimeout doit, 1 unless throttle else 1000
 
       $.ajax
         url: url

      pin keyed if pin? # Update pin with keyed
      children: root # Return in format appropriate for mapping

    mapping =
      #children:
      #  key: (data) ->
      #    ko.utils.unwrapObservable data.id
      #  create: (options) ->
      #    createNode options
        #update: (options) ->
        #  createNode options

    createNode = (options) ->
      #node = options.data
      #console.log "Extending: ", node
      #$.extend node,
      #  servers: v for k,v of node?.children ? {} when "agent" in v.facts.backends
      #  containers: v for k,v of node?.children ? {} when "container" in v.facts.backends
      #  actions: []
      #  status: "unknown"
      #ko.mapping.fromJS node, mapping

    @updateNodes = (data, pin, keys) =>
      @mapData @parseNodes(data, pin, keys), pin #, mapping

    @getNodes = (url, pin, keys) =>
      @getData url, (data) =>

          $("#indexInputModal").modal "hide"
        , (jqXHR, textStatus, errorThrown) ->
          $("#indexInputModal").modal "hide"
          console.log "Error (#{jqXHR.status}): errorThrown"

    @ # Return ourself

