diff --git a/src/emuvim/api/sonata/dummygatekeeper.py b/src/emuvim/api/sonata/dummygatekeeper.py
index e09a66f..a7f0a6c 100755
--- a/src/emuvim/api/sonata/dummygatekeeper.py
+++ b/src/emuvim/api/sonata/dummygatekeeper.py
@@ -248,7 +248,7 @@
         for sap_name in self.saps_ext:
             ext_sap = self.saps[sap_name]
             target_dc = ext_sap.get("dc")
-            target_dc.removeExternalSAP(sap_name, ext_sap['net'])
+            target_dc.removeExternalSAP(sap_name)
             LOG.info("Stopping the SAP instance: %r in DC %r" % (sap_name, target_dc))
 
         if not GK_STANDALONE_MODE:
diff --git a/src/emuvim/dcemulator/node.py b/src/emuvim/dcemulator/node.py
index 9439eeb..c594f8f 100755
--- a/src/emuvim/dcemulator/node.py
+++ b/src/emuvim/dcemulator/node.py
@@ -258,18 +258,18 @@
         # create SAP as separate OVS switch with an assigned ip address
         sap_ip = str(sap_net[1]) + '/' + str(sap_net.prefixlen)
         # allow connection to the external internet through the host
-        params = dict(NAT=True, SAPNet=str(sap_net))
+        params = dict(NAT=True)
         sap_switch = self.net.addExtSAP(sap_name, sap_ip, dpid=hex(self._get_next_extSAP_dpid())[2:], **params)
         sap_switch.start()
 
         # link SAP to the DC switch
         self.net.addLink(sap_switch, self.switch, cls=Link)
 
-    def removeExternalSAP(self, sap_name, sap_net):
+    def removeExternalSAP(self, sap_name):
         sap_switch = self.net.getNodeByName(sap_name)
         # link SAP to the DC switch
         self.net.removeLink(link=None, node1=sap_switch, node2=self.switch)
-        self.net.removeExtSAP(sap_name, str(sap_net))
+        self.net.removeExtSAP(sap_name)
 
     def listCompute(self):
         """
