diff --git a/examples/ping_pong_ns/rift/mano/examples/ping_pong_nsd.py b/examples/ping_pong_ns/rift/mano/examples/ping_pong_nsd.py
index cce685c..ff706c8 100755
--- a/examples/ping_pong_ns/rift/mano/examples/ping_pong_nsd.py
+++ b/examples/ping_pong_ns/rift/mano/examples/ping_pong_nsd.py
@@ -729,16 +729,6 @@
                     else:
                         self.add_ping_config()
 
-            # Add VNF access point
-            if use_vca_conf:
-                self.add_vnf_access_point(mano_ut=mano_ut)
-                if 'pong_' in self.name:
-                    self.add_pong_config(mano_ut=mano_ut,
-                                         use_ns_init_conf=use_ns_init_conf)
-                else:
-                    self.add_ping_config(mano_ut=mano_ut,
-                                         use_ns_init_conf=use_ns_init_conf)
-
             # sepcify the guest EPA
             if use_epa:
                 vdu.guest_epa.trusted_execution = False
diff --git a/examples/ping_pong_ns/rift/mano/examples/ping_setup.py b/examples/ping_pong_ns/rift/mano/examples/ping_setup.py
index c0d0589..0169206 100755
--- a/examples/ping_pong_ns/rift/mano/examples/ping_setup.py
+++ b/examples/ping_pong_ns/rift/mano/examples/ping_setup.py
@@ -75,14 +75,14 @@
             if 'HTTP/1.1 200 OK' in resp:
                 rc = 0
                 break
-            self._log.error("Got error response: {}".format(resp))
+            logger.error("Got error response: {}".format(resp))
             rc = 1
             break
 
         elif proc.returncode == 7:
             # Connection timeout
             if count >= max_tries:
-                self._log.error("Connect failed for {}. Failing".format(count))
+                logger.error("Connect failed for {}. Failing".format(count))
                 rc = 7
                 break
             # Try after delay
diff --git a/examples/ping_pong_ns/rift/mano/examples/ping_start_stop.py b/examples/ping_pong_ns/rift/mano/examples/ping_start_stop.py
index fdd62ed..2608620 100755
--- a/examples/ping_pong_ns/rift/mano/examples/ping_start_stop.py
+++ b/examples/ping_pong_ns/rift/mano/examples/ping_start_stop.py
@@ -64,7 +64,7 @@
         # Check if we got 200 OK
         resp = proc.stdout.read().decode()
         if 'HTTP/1.1 200 OK' not in resp:
-            self._log.error("Got error response: {}".format(resp))
+            logger.error("Got error response: {}".format(resp))
             rc = 1
 
     return rc
diff --git a/examples/ping_pong_ns/rift/mano/examples/pong_setup.py b/examples/ping_pong_ns/rift/mano/examples/pong_setup.py
index 7bd2479..f2e46bf 100755
--- a/examples/ping_pong_ns/rift/mano/examples/pong_setup.py
+++ b/examples/ping_pong_ns/rift/mano/examples/pong_setup.py
@@ -75,14 +75,14 @@
             if 'HTTP/1.1 200 OK' in resp:
                 rc = 0
                 break
-            self._log.error("Got error response: {}".format(resp))
+            logger.error("Got error response: {}".format(resp))
             rc = 1
             break
 
         elif proc.returncode == 7:
             # Connection timeout
             if count >= max_tries:
-                self._log.error("Connect failed for {}. Failing".format(count))
+                logger.error("Connect failed for {}. Failing".format(count))
                 rc = 7
                 break
             # Try after delay
diff --git a/examples/ping_pong_ns/rift/mano/examples/pong_start_stop.py b/examples/ping_pong_ns/rift/mano/examples/pong_start_stop.py
index 30e7fa6..a8d6867 100755
--- a/examples/ping_pong_ns/rift/mano/examples/pong_start_stop.py
+++ b/examples/ping_pong_ns/rift/mano/examples/pong_start_stop.py
@@ -64,7 +64,7 @@
         # Check if we got 200 OK
         resp = proc.stdout.read().decode()
         if 'HTTP/1.1 200 OK' not in resp:
-            self._log.error("Got error response: {}".format(resp))
+            logger.error("Got error response: {}".format(resp))
             rc = 1
 
     return rc
diff --git a/models/plugins/yang/nsd.yang b/models/plugins/yang/nsd.yang
index 8808daf..494acf4 100644
--- a/models/plugins/yang/nsd.yang
+++ b/models/plugins/yang/nsd.yang
@@ -289,46 +289,6 @@
         }
       }
 
-      list vnfap-map {
-        key "id";
-        description "A mapping of VNF application point 
-                     capability/dependency within this network service";
-        leaf id {
-          description "Identfier for VNF access point map";
-          type string;
-        }
-        container capability {
-          leaf member-vnf-index-ref {
-            description "Reference to member-vnf within constituent-vnfds";
-            type leafref {
-              path "../../../../constituent-vnfd/member-vnf-index";
-            }
-          }
-          leaf capability-ref {
-            description "Reference to the capability with the capability of the VNF
-                         with the specified member-vnf-index";
-            type leafref {
-              path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vnfap/vnfd:capability/vnfd:name";
-            }
-          }
-        }
-        container dependency {
-          leaf member-vnf-index-ref {
-            description "Reference to member-vnf within constituent-vnfds";
-            type leafref {
-              path "../../../../constituent-vnfd/member-vnf-index";
-            }
-          }
-          leaf dependency-ref {
-            description "Reference to the dependency within the dependency of the VNF
-                         with the specified member-vnf-index";
-            type leafref {
-              path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vnfap/vnfd:dependency/vnfd:name";
-            }
-          }
-        }
-      }
-
       // replicate for pnfd container here
       uses manotypes:provider-network;
 
diff --git a/models/plugins/yang/vnfd.yang b/models/plugins/yang/vnfd.yang
index fb1bd03..75de5e3 100644
--- a/models/plugins/yang/vnfd.yang
+++ b/models/plugins/yang/vnfd.yang
@@ -675,8 +675,6 @@
       key "id";
 
       uses vnfd-descriptor;
-
-      uses vnf-access-point;
     }
   }
 }
