 
   json = parseXml(body)
   # Find index of needed objects for getting their values after
-  # CPU: fetch every CPUs!
   cpusIndexes = []
   index = 0
   while (pos = $findIndex(json.rrd.ds, 'name', 'cpu' + index++)) isnt -1
     cpusIndexes.push(pos)
+  vifsIndexes = []
+  index = 0
+  while (pos = $findIndex(json.rrd.ds, 'name', 'vif_' + index + '_rx')) isnt -1
+    vifsIndexes.push(pos)
+    vifsIndexes.push($findIndex(json.rrd.ds, 'name', 'vif_' + (index++) + '_tx'))
+  xvdsIndexes = []
+  index = 97 # Starting to browse ascii table from 'a' to 'z' (122)
+  while index <= 122 and (pos = $findIndex(json.rrd.ds, 'name', 'vbd_xvd' + String.fromCharCode(index) + '_read')) isnt -1
+    xvdsIndexes.push(pos)
+    xvdsIndexes.push($findIndex(json.rrd.ds, 'name', 'vbd_xvd' + String.fromCharCode(index++) + '_write'))
 
   memoryFreeIndex = $findIndex(json.rrd.ds, 'name': 'memory_internal_free')
   memoryIndex = $findIndex(json.rrd.ds, 'name': 'memory')
+
   memoryFree = []
   memoryUsed = []
   memory = []
   cpus = []
+  vifs = []
+  xvds = []
   date = [] #TODO
-  # TODO: fetch other info: network, IOPS etc.
-
 
   $forEach json.rrd.rra[0].database.row, (n, key) ->
     # WARNING! memoryFree is in Kb not in b, memory is in b

    memory: memory
    date: date
    cpus: cpus
  }

stats.params = {

    memoryUsed.push(Math.round(parseInt(n.v[memoryIndex])-(n.v[memoryFreeIndex]*1024)))
    memory.push(parseInt(n.v[memoryIndex]))
    date.push(key)
    # build the multi dimensional arrays
    $forEach cpusIndexes, (value, key) ->
      cpus[key] ?= []
      cpus[key].push(n.v[value]*100)
      return
    $forEach vifsIndexes, (value, key) ->
      vifs[key] ?= []
      vifs[key].push(n.v[value]) # * (if key % 2 then -1 else 1))
      return
    $forEach xvdsIndexes, (value, key) ->
      xvds[key] ?= []
      xvds[key].push(n.v[value]) # * (if key % 2 then -1 else 1))
      return
    return


  # the final object
  return {
