diff --git a/src/main/java/org/opencord/cordvtn/api/CordVtnAdminService.java b/src/main/java/org/opencord/cordvtn/api/CordVtnAdminService.java
index afb2a1e..db5681c 100644
--- a/src/main/java/org/opencord/cordvtn/api/CordVtnAdminService.java
+++ b/src/main/java/org/opencord/cordvtn/api/CordVtnAdminService.java
@@ -20,51 +20,53 @@
 import org.openstack4j.model.network.Subnet;
 
 /**
- * Service for administering the inventory of virtual network and service network.
+ * Service for administering the inventory of {@link Network} and
+ * {@link ServiceNetwork}.
  */
-public interface CordVtnAdminService extends CordVtnService {
+public interface CordVtnAdminService extends CordVtnService, NetworkService,
+        ServiceNetworkService {
 
     /**
-     * Creates vtn port with given service port information.
+     * Creates a service port with the given information.
      *
      * @param servicePort the new service port
      */
-    void createVtnPort(ServicePort servicePort);
+    void createServicePort(ServicePort servicePort);
 
     /**
-     * Updates vtn port with given service port information.
+     * Updates a service port with the given information.
      *
      * @param servicePort the updated service port
      */
-    void updateVtnPort(ServicePort servicePort);
+    void updateServicePort(ServicePort servicePort);
 
     /**
-     * Removes vtn port with given port id.
+     * Removes a service port with the given port id.
      *
      * @param portId port id
      */
-    void removeVtnPort(PortId portId);
+    void removeServicePort(PortId portId);
 
     /**
-     * Creates vtn network with given service network information.
+     * Creates a service network with the given information.
      *
      * @param serviceNet the new service network
      */
-    void createVtnNetwork(ServiceNetwork serviceNet);
+    void createServiceNetwork(ServiceNetwork serviceNet);
 
     /**
-     * Updates the vtn network with given service network information.
+     * Updates a service network with the given information.
      *
      * @param serviceNet the updated service network
      */
-    void updateVtnNetwork(ServiceNetwork serviceNet);
+    void updateServiceNetwork(ServiceNetwork serviceNet);
 
     /**
-     * Removes the vtn network.
+     * Removes a service network with the given network id.
      *
      * @param netId network id
      */
-    void removeVtnNetwork(NetworkId netId);
+    void removeServiceNetwork(NetworkId netId);
 
     /**
      * Creates a port.
diff --git a/src/main/java/org/opencord/cordvtn/api/CordVtnService.java b/src/main/java/org/opencord/cordvtn/api/CordVtnService.java
index 5b0849e..1a9f78f 100644
--- a/src/main/java/org/opencord/cordvtn/api/CordVtnService.java
+++ b/src/main/java/org/opencord/cordvtn/api/CordVtnService.java
@@ -16,35 +16,23 @@
 package org.opencord.cordvtn.api;
 
 import org.onosproject.event.ListenerService;
-import org.openstack4j.model.network.Network;
-import org.openstack4j.model.network.Port;
-import org.openstack4j.model.network.Subnet;
 
 import java.util.Set;
 
 /**
- * Service for interacting with the inventory of VTN network and port.
+ * Service for interacting with the inventory of {@link VtnNetwork} and
+ * {@link VtnPort}.
  */
 public interface CordVtnService
         extends ListenerService<VtnNetworkEvent, VtnNetworkListener> {
 
     /**
-     * Returns the service port with the given port id.
+     * Returns the VTN port with the given port id.
      *
      * @param portId port id
      * @return service port
      */
-    VtnPort getVtnPort(PortId portId);
-
-    /**
-     * Returns the vtn port with the given port id. It returns the VTN port with
-     * the default settings if no service port exists for the port.
-     *
-     * @param portId port id
-     * @return vtn port for the port, of the default vtn port if no service port
-     * exists for the port
-     */
-    VtnPort getVtnPortOrDefault(PortId portId);
+    VtnPort vtnPort(PortId portId);
 
     /**
      * Returns the VTN port with the given port name.
@@ -52,98 +40,27 @@
      * @param portName port name
      * @return vtn port
      */
-    VtnPort getVtnPort(String portName);
+    VtnPort vtnPort(String portName);
 
     /**
-     * Returns all service ports.
+     * Returns all VTN ports.
      *
      * @return set of service ports
      */
-    Set<VtnPort> getVtnPorts();
+    Set<VtnPort> vtnPorts();
 
     /**
-     * Returns the service network with the given network id.
+     * Returns the VTN network with the given network id.
      *
      * @param netId network id
      * @return service network
      */
-    VtnNetwork getVtnNetwork(NetworkId netId);
+    VtnNetwork vtnNetwork(NetworkId netId);
 
     /**
-     * Returns the vtn network with the given network id. It returns the VTN
-     * network with default settings if no service network exists for the network.
-     *
-     * @param netId network id
-     * @return vtn network for the network id, or the default vtn network if no
-     * service network is created for the network
-     */
-    VtnNetwork getVtnNetworkOrDefault(NetworkId netId);
-
-    /**
-     * Returns all service networks.
+     * Returns all VTN networks.
      *
      * @return set of service networks
      */
-    Set<VtnNetwork> getVtnNetworks();
-
-    /**
-     * Returns the port with the given port id.
-     *
-     * @param portId port id
-     * @return port
-     */
-    Port getPort(PortId portId);
-
-    /**
-     * Returns all ports.
-     *
-     * @return set of ports
-     */
-    Set<Port> getPorts();
-
-    /**
-     * Returns the network with the given network id.
-     *
-     * @param netId network id
-     * @return network
-     */
-    Network getNetwork(NetworkId netId);
-
-    /**
-     * Returns all networks.
-     *
-     * @return set of networks
-     */
-    Set<Network> getNetworks();
-
-    /**
-     * Returns the subnet with the given subnet id.
-     *
-     * @param subnetId subnet id
-     * @return subnet
-     */
-    Subnet getSubnet(SubnetId subnetId);
-
-    /**
-     * Returns all subnets.
-     *
-     * @return set of subnets
-     */
-    Set<Subnet> getSubnets();
-
-    /**
-     * Returns instance attached to the given port.
-     *
-     * @param portId port identifier
-     * @return instance, or null if no instance for the port
-     */
-    Instance getInstance(PortId portId);
-
-    /**
-     * Returns instances in the given network.
-     *
-     * @param netId network identifier
-     * @return set of instances, empty set if no instances in the network
-     */
-    Set<Instance> getInstances(NetworkId netId);
+    Set<VtnNetwork> vtnNetworks();
 }
diff --git a/src/main/java/org/opencord/cordvtn/api/CordVtnStore.java b/src/main/java/org/opencord/cordvtn/api/CordVtnStore.java
index bfa84f7..42b71c8 100644
--- a/src/main/java/org/opencord/cordvtn/api/CordVtnStore.java
+++ b/src/main/java/org/opencord/cordvtn/api/CordVtnStore.java
@@ -30,16 +30,16 @@
     /**
      * Creates vtn network.
      *
-     * @param serviceNet the new vtn network
+     * @param vtnNet vtn network
      */
-    void createVtnNetwork(VtnNetwork serviceNet);
+    void createVtnNetwork(VtnNetwork vtnNet);
 
     /**
      * Updates the vtn network.
      *
-     * @param serviceNet the updated vtn network
+     * @param vtnNet vtn network
      */
-    void updateVtnNetwork(VtnNetwork serviceNet);
+    void updateVtnNetwork(VtnNetwork vtnNet);
 
     /**
      * Returns the vtn network with the given network id.
@@ -47,17 +47,17 @@
      * @param netId network id
      * @return vtn network
      */
-    VtnNetwork getVtnNetwork(NetworkId netId);
+    VtnNetwork vtnNetwork(NetworkId netId);
 
     /**
      * Returns all vtn networks.
      *
      * @return set of vtn networks
      */
-    Set<VtnNetwork> getVtnNetworks();
+    Set<VtnNetwork> vtnNetworks();
 
     /**
-     * Removes the vtn network.
+     * Removes the vtn network with the given network id.
      *
      * @param netId network id
      */
@@ -66,16 +66,16 @@
     /**
      * Creates vtn port.
      *
-     * @param servicePort the new vtn port
+     * @param vtnPort the new vtn port
      */
-    void createVtnPort(VtnPort servicePort);
+    void createVtnPort(VtnPort vtnPort);
 
     /**
      * Updates the vtn port.
      *
-     * @param servicePort vtn port
+     * @param vtnPort vtn port
      */
-    void updateVtnPort(VtnPort servicePort);
+    void updateVtnPort(VtnPort vtnPort);
 
     /**
      * Returns the vtn port with the given port id.
@@ -83,14 +83,14 @@
      * @param portId port id
      * @return vtn port
      */
-    VtnPort getVtnPort(PortId portId);
+    VtnPort vtnPort(PortId portId);
 
     /**
      * Returns all vtn ports.
      *
      * @return set of vtn ports
      */
-    Set<VtnPort> getVtnPorts();
+    Set<VtnPort> vtnPorts();
 
     /**
      * Removes vtn port.
@@ -119,14 +119,14 @@
      * @param netId network id
      * @return network
      */
-    Network getNetwork(NetworkId netId);
+    Network network(NetworkId netId);
 
     /**
      * Returns all networks.
      *
      * @return set of networks
      */
-    Set<Network> getNetworks();
+    Set<Network> networks();
 
     /**
      * Removes the network with the given network id.
@@ -155,14 +155,14 @@
      * @param portId port id
      * @return port
      */
-    Port getPort(PortId portId);
+    Port port(PortId portId);
 
     /**
      * Returns all ports.
      *
      * @return set of ports
      */
-    Set<Port> getPorts();
+    Set<Port> ports();
 
     /**
      * Removes the port with the given port id.
@@ -191,14 +191,14 @@
      * @param subnetId subnet id
      * @return subnet
      */
-    Subnet getSubnet(SubnetId subnetId);
+    Subnet subnet(SubnetId subnetId);
 
     /**
      * Returns all subnets.
      *
      * @return set of subnets
      */
-    Set<Subnet> getSubnets();
+    Set<Subnet> subnets();
 
     /**
      * Removes the subnet with the given subnet id.
diff --git a/src/main/java/org/opencord/cordvtn/api/NetworkService.java b/src/main/java/org/opencord/cordvtn/api/NetworkService.java
new file mode 100644
index 0000000..aa178e5
--- /dev/null
+++ b/src/main/java/org/opencord/cordvtn/api/NetworkService.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.opencord.cordvtn.api;
+
+import org.openstack4j.model.network.Network;
+import org.openstack4j.model.network.Port;
+import org.openstack4j.model.network.Subnet;
+
+import java.util.Set;
+
+/**
+ * Service for interacting with the inventory of {@link Network}, {@link Port},
+ * and {@link Subnet}.
+ */
+public interface NetworkService {
+
+    /**
+     * Returns the network with the supplied network ID.
+     *
+     * @param netId network id
+     * @return network
+     */
+    Network network(NetworkId netId);
+
+    /**
+     * Returns all networks registered in the service.
+     *
+     * @return set of networks
+     */
+    Set<Network> networks();
+
+    /**
+     * Returns the port with the supplied port ID.
+     *
+     * @param portId port id
+     * @return port
+     */
+    Port port(PortId portId);
+
+    /**
+     * Returns all ports registered in the service.
+     *
+     * @return set of ports
+     */
+    Set<Port> ports();
+
+    /**
+     * Returns the subnet with the supplied subnet ID.
+     *
+     * @param subnetId subnet id
+     * @return subnet
+     */
+    Subnet subnet(SubnetId subnetId);
+
+    /**
+     * Returns all subnets registered in the service.
+     *
+     * @return set of subnets
+     */
+    Set<Subnet> subnets();
+}
diff --git a/src/main/java/org/opencord/cordvtn/api/ServiceNetwork.java b/src/main/java/org/opencord/cordvtn/api/ServiceNetwork.java
index 6da6833..90de69c 100644
--- a/src/main/java/org/opencord/cordvtn/api/ServiceNetwork.java
+++ b/src/main/java/org/opencord/cordvtn/api/ServiceNetwork.java
@@ -24,7 +24,8 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
- * Representation of a service network.
+ * Representation of a service network which holds service specific information,
+ * like service type or dependency, in addition to the common network.
  */
 public class ServiceNetwork {
 
diff --git a/src/main/java/org/opencord/cordvtn/api/ServiceNetworkService.java b/src/main/java/org/opencord/cordvtn/api/ServiceNetworkService.java
new file mode 100644
index 0000000..1b387b7
--- /dev/null
+++ b/src/main/java/org/opencord/cordvtn/api/ServiceNetworkService.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.opencord.cordvtn.api;
+
+import java.util.Set;
+
+/**
+ * Service for interacting with the inventory of {@link ServiceNetwork} and
+ * {@link ServicePort}.
+ */
+public interface ServiceNetworkService {
+
+    /**
+     * Returns the service network with the supplied network ID.
+     *
+     * @param netId network id
+     * @return service network
+     */
+    ServiceNetwork serviceNetwork(NetworkId netId);
+
+    /**
+     * Returns all service networks registered in the service.
+     *
+     * @return set of service networks
+     */
+    Set<ServiceNetwork> serviceNetworks();
+
+    /**
+     * Returns the service port with the supplied port ID.
+     *
+     * @param portId port id
+     * @return service port
+     */
+    ServicePort servicePort(PortId portId);
+
+    /**
+     * Returns all service ports registered in the service.
+     *
+     * @return set of service ports
+     */
+    Set<ServicePort> servicePorts();
+}
diff --git a/src/main/java/org/opencord/cordvtn/api/ServicePort.java b/src/main/java/org/opencord/cordvtn/api/ServicePort.java
index 3ed18ee..a6e048b 100644
--- a/src/main/java/org/opencord/cordvtn/api/ServicePort.java
+++ b/src/main/java/org/opencord/cordvtn/api/ServicePort.java
@@ -26,7 +26,8 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
- * Representation of a service port.
+ * Representation of a service port which holds service specific port information,
+ * like vlan tag or additional addresses, to the common network port.
  */
 public class ServicePort {
 
diff --git a/src/main/java/org/opencord/cordvtn/api/VtnNetwork.java b/src/main/java/org/opencord/cordvtn/api/VtnNetwork.java
index 644a939..55fb595 100644
--- a/src/main/java/org/opencord/cordvtn/api/VtnNetwork.java
+++ b/src/main/java/org/opencord/cordvtn/api/VtnNetwork.java
@@ -32,8 +32,11 @@
 import static org.opencord.cordvtn.api.ServiceNetwork.ServiceNetworkType.PRIVATE;
 
 /**
- * Representation of the network containing all network information consumed by
- * VTN service.
+ * Representation of a network holding the basic virtual network and additional
+ * service network specific information.
+ * All the services making use of {@link CordVtnService} are intended to interface
+ * with this VtnNetwork, and not allowed to directly access {@link Network} or
+ * {@link ServiceNetwork}.
  */
 public final class VtnNetwork extends ServiceNetwork {
 
diff --git a/src/main/java/org/opencord/cordvtn/api/VtnPort.java b/src/main/java/org/opencord/cordvtn/api/VtnPort.java
index a7d8385..af1bd99 100644
--- a/src/main/java/org/opencord/cordvtn/api/VtnPort.java
+++ b/src/main/java/org/opencord/cordvtn/api/VtnPort.java
@@ -30,7 +30,11 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
- * Representation of the port containing all port information consumed by VTN service.
+ * Representation of a port holding the basic virtual port and additional service
+ * port specific information.
+ * All the services making use of {@link CordVtnService} are intended to interface
+ * with this VtnPort, and not allowed to directly access {@link Port} or
+ * {@link ServicePort}.
  */
 public final class VtnPort extends ServicePort {
 
