diff --git a/src/emuvim/cli/monitor.py b/src/emuvim/cli/monitor.py
index 2caca2c..0c3c515 100755
--- a/src/emuvim/cli/monitor.py
+++ b/src/emuvim/cli/monitor.py
@@ -29,13 +29,33 @@
             print "Command not implemented."
 
     def get_rate(self, args):
+        vnf_name = self._parse_vnf_name(args.get("vnf_name"))
+        vnf_interface = self._parse_vnf_interface(args.get("vnf_name"))
+        self.c.monitor_setup_rate_measurement(
+            vnf_name,
+            vnf_interface,
+            args.get("direction"),
+            args.get("metric"))
         while True:
             r = self.c.monitor_get_rate(
-                args.get("vnf_name"),
-                args.get("direction"))
+                vnf_name,
+                vnf_interface,
+                args.get("direction"),
+                args.get("metric"))
             pp.pprint(r)
             time.sleep(1)
 
+    def _parse_vnf_name(self, vnf_name_str):
+        vnf_name = vnf_name_str.split(':')[0]
+        return vnf_name
+
+    def _parse_vnf_interface(self, vnf_name_str):
+        try:
+            vnf_interface = vnf_name_str.split(':')[1]
+        except:
+            vnf_interface = None
+
+        return vnf_interface
 
 parser = argparse.ArgumentParser(description='son-emu network')
 parser.add_argument(
@@ -46,7 +66,10 @@
     help="vnf name to be monitored")
 parser.add_argument(
     "--direction", "-d", dest="direction",
-    help="in (ingress rate) or out (egress rate)")
+    help="rx (ingress rate) or tx (egress rate)")
+parser.add_argument(
+    "--metric", "-m", dest="metric",
+    help="bytes (byte rate), packets (packet rate)")
 
 def main(argv):
     print "This is the son-emu monitor CLI."
diff --git a/src/emuvim/cli/network.py b/src/emuvim/cli/network.py
index 8d4219b..c27da59 100755
--- a/src/emuvim/cli/network.py
+++ b/src/emuvim/cli/network.py
@@ -28,19 +28,43 @@
             print "Command not implemented."
 
     def add(self, args):
+        vnf_src_name = self._parse_vnf_name(args.get("source"))
+        vnf_src_interface = self._parse_vnf_interface(args.get("source"))
+        vnf_dst_name = self._parse_vnf_name(args.get("destination"))
+        vnf_dst_interface = self._parse_vnf_interface(args.get("destination"))
         r = self.c.network_action_start(
             #args.get("datacenter"),
-            args.get("source"),
-            args.get("destination"))
+            vnf_src_name,
+            vnf_dst_name,
+            vnf_src_interface,
+            vnf_dst_interface)
         pp.pprint(r)
 
     def remove(self, args):
+        vnf_src_name = self._parse_vnf_name(args.get("source"))
+        vnf_src_interface = self._parse_vnf_interface(args.get("source"))
+        vnf_dst_name = self._parse_vnf_name(args.get("destination"))
+        vnf_dst_interface = self._parse_vnf_interface(args.get("destination"))
         r = self.c.network_action_stop(
             #args.get("datacenter"),
-            args.get("source"),
-            args.get("destination"))
+            vnf_src_name,
+            vnf_dst_name,
+            vnf_src_interface,
+            vnf_dst_interface)
         pp.pprint(r)
 
+    def _parse_vnf_name(self, vnf_name_str):
+        vnf_name = vnf_name_str.split(':')[0]
+        return vnf_name
+
+    def _parse_vnf_interface(self, vnf_name_str):
+        try:
+            vnf_interface = vnf_name_str.split(':')[1]
+        except:
+            vnf_interface = None
+
+        return vnf_interface
+
 
 parser = argparse.ArgumentParser(description='son-emu network')
 parser.add_argument(
