     else # Invalid root node!
       delete keyed[id] # Pew Pew!
 
-  # And run a chillin' parseage
+  # Generate dynamic arrays
   for id of keyed
-    parseChildren keyed[id]
+    node = keyed[id]
+    node.agents = (v for k,v of node.children when "agent" in v.facts.backends)
+    node.containers = (v for k,v of node.children when "container" in v.facts.backends)
 
   pin keyed if pin? # Update pin with keyed
   root # Return root for mapping

    node.status ?= "unknown"
    node.isEnabled ?= ko.observable true
    node.children ?= {}
    keyed[nid] = node # Add/update node

  # Step through IDs


  root = {} # We might not find a root; make sure it's empty each call

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