diff --git a/src/emuvim/api/rest/compute.py b/src/emuvim/api/rest/compute.py
index e412133..9f0516b 100755
--- a/src/emuvim/api/rest/compute.py
+++ b/src/emuvim/api/rest/compute.py
@@ -78,7 +78,8 @@
         '''
         nw_list = list()
 
-        if network_str is None or '),(' not in network_str :
+        # TODO make this more robust with regex check
+        if network_str is None :
             return nw_list
 
         networks = network_str[1:-1].split('),(')
diff --git a/src/emuvim/api/rest/monitor.py b/src/emuvim/api/rest/monitor.py
index 15ec014..45d9541 100755
--- a/src/emuvim/api/rest/monitor.py
+++ b/src/emuvim/api/rest/monitor.py
@@ -53,7 +53,7 @@
     """
     global net
 
-    def put(self, vnf_name, vnf_interface, metric):
+    def put(self, vnf_name, vnf_interface=None, metric='tx_packets'):
         logging.debug("REST CALL: start monitor VNF interface")
         try:
             c = net.monitor_agent.setup_metric(vnf_name, vnf_interface, metric)
@@ -63,7 +63,7 @@
             logging.exception("API error.")
             return ex.message, 500
 
-    def delete(self, vnf_name, vnf_interface, metric):
+    def delete(self, vnf_name, vnf_interface=None, metric='tx_packets'):
         logging.debug("REST CALL: stop monitor VNF interface")
         try:
             c = net.monitor_agent.stop_metric(vnf_name, vnf_interface, metric)
@@ -85,7 +85,7 @@
     """
     global net
 
-    def put(self, vnf_name, vnf_interface, metric, cookie):
+    def put(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=0):
         logging.debug("REST CALL: start monitor VNF interface")
         try:
             c = net.monitor_agent.setup_flow(vnf_name, vnf_interface, metric, cookie)
@@ -95,7 +95,7 @@
             logging.exception("API error.")
             return ex.message, 500
 
-    def delete(self, vnf_name, vnf_interface, metric, cookie):
+    def delete(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=0):
         logging.debug("REST CALL: stop monitor VNF interface")
         try:
             c = net.monitor_agent.stop_flow(vnf_name, vnf_interface, metric, cookie)
diff --git a/src/emuvim/api/rest/rest_api_endpoint.py b/src/emuvim/api/rest/rest_api_endpoint.py
index d6c1185..536ed7a 100755
--- a/src/emuvim/api/rest/rest_api_endpoint.py
+++ b/src/emuvim/api/rest/rest_api_endpoint.py
@@ -69,10 +69,14 @@
         self.api.add_resource(DatacenterList, "/restapi/datacenter")
         self.api.add_resource(DatacenterStatus, "/restapi/datacenter/<dc_label>")
 
-        self.api.add_resource(NetworkAction, "/restapi/network/<vnf_src_name>/<vnf_dst_name>")
+        self.api.add_resource(NetworkAction, "/restapi/network/<vnf_src_name>/<vnf_dst_name>",)
 
-        self.api.add_resource(MonitorInterfaceAction, "/restapi/monitor/<vnf_name>/<vnf_interface>/<metric>")
-        self.api.add_resource(MonitorFlowAction, "/restapi/monitor/<vnf_name>/<vnf_interface>/<metric>/<cookie>")
+        self.api.add_resource(MonitorInterfaceAction,
+                              "/restapi/monitor/<vnf_name>/<metric>",
+                              "/restapi/monitor/<vnf_name>/<vnf_interface>/<metric>")
+        self.api.add_resource(MonitorFlowAction,
+                              "/restapi/flowmon/<vnf_name>/<metric>/<cookie>",
+                              "/restapi/flowmon/<vnf_name>/<vnf_interface>/<metric>/<cookie>")
 
         logging.debug("Created API endpoint %s(%s:%d)" % (self.__class__.__name__, self.ip, self.port))
 
diff --git a/src/emuvim/cli/rest/monitor.py b/src/emuvim/cli/rest/monitor.py
index 7e9b839..858aad7 100755
--- a/src/emuvim/cli/rest/monitor.py
+++ b/src/emuvim/cli/rest/monitor.py
@@ -25,11 +25,10 @@
 acknowledge the contributions of their colleagues of the SONATA
 partner consortium (www.sonata-nfv.eu).
 """
+
 from requests import get, put, delete
-from tabulate import tabulate
 import pprint
 import argparse
-import json
 from emuvim.cli import prometheus
 
 pp = pprint.PrettyPrinter(indent=4)
diff --git a/src/emuvim/cli/rest/network.py b/src/emuvim/cli/rest/network.py
index c6e1dcc..86ed92b 100755
--- a/src/emuvim/cli/rest/network.py
+++ b/src/emuvim/cli/rest/network.py
@@ -26,10 +26,8 @@
 partner consortium (www.sonata-nfv.eu).
 """
 from requests import get,put, delete
-from tabulate import tabulate
 import pprint
 import argparse
-import json
 
 pp = pprint.PrettyPrinter(indent=4)
 
@@ -114,13 +112,12 @@
     help="vnf name of the destination of the chain")
 parser.add_argument(
     "--weight", "-w", dest="weight",
-    help="weight metric to calculate the path")
+    help="weight edge attribute to calculate the path")
 parser.add_argument(
     "--match", "-m", dest="match",
     help="string holding extra matches for the flow entries")
 parser.add_argument(
     "--bidirectional", "-b", dest="bidirectional",
-    action='store_true',
     help="add/remove the flow entries from src to dst and back")
 parser.add_argument(
     "--cookie", "-c", dest="cookie",
diff --git a/src/emuvim/dcemulator/monitoring.py b/src/emuvim/dcemulator/monitoring.py
index 89d82ba..78d6ebb 100755
--- a/src/emuvim/dcemulator/monitoring.py
+++ b/src/emuvim/dcemulator/monitoring.py
@@ -107,7 +107,7 @@
         # Prometheus pushgateway and DB are started as external contianer, outside of son-emu
         #self.pushgateway_process = self.start_PushGateway()
         #self.prometheus_process = self.start_Prometheus()
-        self.cadvisor_process = self.start_cadvisor()
+        #self.cadvisor_process = self.start_cadvisor()
 
     # first set some parameters, before measurement can start
     def setup_flow(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=0):
@@ -167,7 +167,15 @@
             logging.exception("setup_metric error.")
             return ex.message
 
-    def stop_flow(self, vnf_name, vnf_interface=None, metric=None, cookie=0):
+    def stop_flow(self, vnf_name, vnf_interface=None, metric=None, cookie=0,):
+
+        # check if port is specified (vnf:port)
+        if vnf_interface is None and metric is not None:
+            # take first interface by default
+            connected_sw = self.net.DCNetwork_graph.neighbors(vnf_name)[0]
+            link_dict = self.net.DCNetwork_graph[vnf_name][connected_sw]
+            vnf_interface = link_dict[0]['src_port_id']
+
         for flow_dict in self.flow_metrics:
             if flow_dict['vnf_name'] == vnf_name and flow_dict['vnf_interface'] == vnf_interface \
                     and flow_dict['metric_key'] == metric and flow_dict['cookie'] == cookie:
@@ -187,6 +195,8 @@
                 logging.info('Stopped monitoring flow {3}: {2} on {0}:{1}'.format(vnf_name, vnf_interface, metric, cookie))
                 return 'Stopped monitoring flow {3}: {2} on {0}:{1}'.format(vnf_name, vnf_interface, metric, cookie)
 
+        return 'Error stopping monitoring flow: {0} on {1}:{2}'.format(metric, vnf_name, vnf_interface)
+
 
     # first set some parameters, before measurement can start
     def setup_metric(self, vnf_name, vnf_interface=None, metric='tx_packets'):
@@ -258,6 +268,13 @@
 
     def stop_metric(self, vnf_name, vnf_interface=None, metric=None):
 
+        # check if port is specified (vnf:port)
+        if vnf_interface is None and metric is not None:
+            # take first interface by default
+            connected_sw = self.net.DCNetwork_graph.neighbors(vnf_name)[0]
+            link_dict = self.net.DCNetwork_graph[vnf_name][connected_sw]
+            vnf_interface = link_dict[0]['src_port_id']
+
         for metric_dict in self.network_metrics:
             if metric_dict['vnf_name'] == vnf_name and metric_dict['vnf_interface'] == vnf_interface \
                     and metric_dict['metric_key'] == metric:
@@ -319,8 +336,13 @@
                 logging.info('Stopped monitoring vnf: {0}'.format(vnf_name))
                 return 'Stopped monitoring: {0}'.format(vnf_name)
 
+        return 'Error stopping monitoring metric: {0} on {1}:{2}'.format(metric, vnf_name, vnf_interface)
 
-    # get all metrics defined in the list and export it to Prometheus
+
+
+
+
+# get all metrics defined in the list and export it to Prometheus
     def get_flow_metrics(self):
         while self.start_monitoring:
 
@@ -429,12 +451,20 @@
         cookie = metric_dict['cookie']
 
         # TODO aggregate all found flow stats
-        flow_stat = flow_stat_dict[str(switch_dpid)][0]
-        if 'bytes' in  metric_key:
-            counter = flow_stat['byte_count']
-        elif 'packet' in metric_key:
-            counter = flow_stat['packet_count']
+        #flow_stat = flow_stat_dict[str(switch_dpid)][0]
+        #if 'bytes' in metric_key:
+        #    counter = flow_stat['byte_count']
+        #elif 'packet' in metric_key:
+        #    counter = flow_stat['packet_count']
 
+        counter = 0
+        for flow_stat in flow_stat_dict[str(switch_dpid)]:
+            if 'bytes' in metric_key:
+                counter += flow_stat['byte_count']
+            elif 'packet' in metric_key:
+                counter += flow_stat['packet_count']
+
+        flow_stat = flow_stat_dict[str(switch_dpid)][0]
         flow_uptime = flow_stat['duration_sec'] + flow_stat['duration_nsec'] * 10 ** (-9)
 
         self.prom_metrics[metric_dict['metric_key']]. \
@@ -490,6 +520,7 @@
         self.monitor_thread.join()
         self.monitor_flow_thread.join()
 
+        # these containers are used for monitoring but are started now outside of son-emu
         '''
         if self.prometheus_process is not None:
             logging.info('stopping prometheus container')
@@ -502,13 +533,13 @@
             self.pushgateway_process.terminate()
             self.pushgateway_process.kill()
             self._stop_container('pushgateway')
-        '''
 
         if self.cadvisor_process is not None:
             logging.info('stopping cadvisor container')
             self.cadvisor_process.terminate()
             self.cadvisor_process.kill()
             self._stop_container('cadvisor')
+        '''
 
     def switch_tx_rx(self,metric=''):
         # when monitoring vnfs, the tx of the datacenter switch is actually the rx of the vnf
