diff --git a/src/emuvim/api/rest/compute.py b/src/emuvim/api/rest/compute.py
index 9f0516b..1082a4d 100755
--- a/src/emuvim/api/rest/compute.py
+++ b/src/emuvim/api/rest/compute.py
@@ -106,10 +106,10 @@
 
     global dcs
 
-    def get(self, dc_label):
+    def get(self, dc_label=None):
         logging.debug("API CALL: compute list")
         try:
-            if dc_label == 'None':
+            if dc_label is None:
                 # return list with all compute nodes in all DCs
                 all_containers = []
                 for dc in dcs.itervalues():
diff --git a/src/emuvim/api/rest/network.py b/src/emuvim/api/rest/network.py
index e3945b0..83fbde7 100755
--- a/src/emuvim/api/rest/network.py
+++ b/src/emuvim/api/rest/network.py
@@ -53,6 +53,7 @@
     :param match: OpenFlow match format of the flow entry
     :param bidirectional: boolean value if the link needs to be implemented from src to dst and back
     :param cookie: cookie value, identifier of the flow entry to be installed.
+    :param priority: integer indicating the priority of the flow entry
     :return: message string indicating if the chain action is succesful or not
     """
 
diff --git a/src/emuvim/api/rest/rest_api_endpoint.py b/src/emuvim/api/rest/rest_api_endpoint.py
index 536ed7a..51b58cb 100755
--- a/src/emuvim/api/rest/rest_api_endpoint.py
+++ b/src/emuvim/api/rest/rest_api_endpoint.py
@@ -62,7 +62,9 @@
         self.api = Api(self.app)
 
         # setup endpoints
-        self.api.add_resource(ComputeList, "/restapi/compute/<dc_label>")
+        self.api.add_resource(ComputeList,
+                              "/restapi/compute",
+                              "/restapi/compute/<dc_label>")
         self.api.add_resource(ComputeStart, "/restapi/compute/<dc_label>/<compute_name>/start")
         self.api.add_resource(ComputeStop, "/restapi/compute/<dc_label>/<compute_name>/stop")
         self.api.add_resource(ComputeStatus, "/restapi/compute/<dc_label>/<compute_name>")
diff --git a/src/emuvim/dcemulator/monitoring.py b/src/emuvim/dcemulator/monitoring.py
index 80b139c..2c07ab5 100755
--- a/src/emuvim/dcemulator/monitoring.py
+++ b/src/emuvim/dcemulator/monitoring.py
@@ -348,6 +348,7 @@
                 data = {}
 
                 data['cookie'] = flow_dict['cookie']
+                data['cookie_mask'] = flow_dict['cookie']
 
                 if 'tx' in flow_dict['metric_key']:
                     data['match'] = {'in_port':flow_dict['mon_port']}
@@ -358,8 +359,8 @@
                 # query Ryu
                 ret = self.net.ryu_REST('stats/flow', dpid=flow_dict['switch_dpid'], data=data)
                 flow_stat_dict = ast.literal_eval(ret)
-
                 logging.debug('received flow stat:{0} '.format(flow_stat_dict))
+
                 self.set_flow_metric(flow_dict, flow_stat_dict)
 
             self.monitor_flow_lock.release()
diff --git a/src/emuvim/dcemulator/net.py b/src/emuvim/dcemulator/net.py
index bca20b2..4503e1c 100755
--- a/src/emuvim/dcemulator/net.py
+++ b/src/emuvim/dcemulator/net.py
@@ -32,8 +32,7 @@
 from subprocess import Popen
 import os
 import re
-import urllib2
-from functools import partial
+import requests
 
 from mininet.net import Containernet
 from mininet.node import Controller, DefaultController, OVSSwitch, OVSKernelSwitch, Docker, RemoteController
@@ -540,11 +539,14 @@
                 url = self.ryu_REST_api + '/' + str(prefix)
             if data:
                 #LOG.info('POST: {0}'.format(str(data)))
-                req = urllib2.Request(url, str(data))
+                #req = urllib2.Request(url, str(data))
+                req = requests.post(url, data=str(data))
             else:
-                req = urllib2.Request(url)
+                #req = urllib2.Request(url)
+                req = requests.get(url)
 
-            ret = urllib2.urlopen(req).read()
+            #ret = urllib2.urlopen(req).read()
+            ret = req.text
             return ret
         except:
             LOG.info('error url: {0}'.format(str(url)))
