diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java
index 6311a80..88fabff 100644
--- a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java
@@ -18,6 +18,7 @@
 import static com.google.common.base.MoreObjects.toStringHelper;
 
 import java.util.Objects;
+import java.util.Set;
 
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpAddress.Version;
@@ -38,8 +39,8 @@
     private final boolean shared;
     private final Mode ipV6AddressMode;
     private final Mode ipV6RaMode;
-    private final Iterable<HostRoute> hostRoutes;
-    private final Iterable<AllocationPool> allocationPools;
+    private final Set<HostRoute> hostRoutes;
+    private final Set<AllocationPool> allocationPools;
 
     /**
      * Creates a subnet object.
@@ -64,9 +65,9 @@
                          TenantNetworkId networkId, TenantId tenantId,
                          Version ipVersion, IpPrefix cidr, IpAddress gatewayIp,
                          boolean dhcpEnabled, boolean shared,
-                         Iterable<HostRoute> hostRoutes, Mode ipV6AddressMode,
+                         Set<HostRoute> hostRoutes, Mode ipV6AddressMode,
                          Mode ipV6RaMode,
-                         Iterable<AllocationPool> allocationPoolsIt) {
+                         Set<AllocationPool> allocationPoolsIt) {
         this.id = id;
         this.subnetName = subnetName;
         this.networkId = networkId;
diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java
index 4de131a..adf3a3a 100644
--- a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java
@@ -43,8 +43,8 @@
     private final String bindingVnicType;
     private final String bindingVifType;
     private final String bindingVifDetails;
-    private final Collection<AllowedAddressPair> allowedAddressPairs;
-    private final Collection<SecurityGroup> securityGroups;
+    private final Set<AllowedAddressPair> allowedAddressPairs;
+    private final Set<SecurityGroup> securityGroups;
 
     /**
      * Creates a VirtualPort object.
@@ -72,8 +72,8 @@
                               DeviceId deviceId,
                               Set<FixedIp> fixedIps,
                               BindingHostId bindingHostId,
-                              Collection<AllowedAddressPair> allowedAddressPairs,
-                              Collection<SecurityGroup> securityGroups) {
+                              Set<AllowedAddressPair> allowedAddressPairs,
+                              Set<SecurityGroup> securityGroups) {
         this.id = id;
         this.networkId = networkId;
         this.adminStateUp = adminStateUp;
diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java
index a673d17..5623640 100644
--- a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java
@@ -88,11 +88,11 @@
 
     @Option(name = "-h", aliases = "--hostRoutes", description = "Subnet jsonnode hostRoutes",
             required = false, multiValued = false)
-    Iterable<HostRoute> hostRoutes = null;
+    Set<HostRoute> hostRoutes = Sets.newHashSet();
 
     @Option(name = "-a", aliases = "--allocationPools",
             description = "Subnet jsonnode allocationPools", required = false, multiValued = false)
-    Iterable<AllocationPool> allocationPools = Sets.newHashSet();
+    Set<AllocationPool> allocationPools = Sets.newHashSet();
 
     @Override
     protected void execute() {
diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java
index 2e8fc20..f8ee6b9 100644
--- a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java
@@ -88,11 +88,11 @@
 
     @Option(name = "-h", aliases = "--hostRoutes", description = "Subnet jsonnode hostRoutes",
             required = false, multiValued = false)
-    Iterable<HostRoute> hostRoutes = null;
+    Set<HostRoute> hostRoutes = Sets.newHashSet();
 
     @Option(name = "-a", aliases = "--allocationPools",
             description = "Subnet jsonnode allocationPools", required = false, multiValued = false)
-    Iterable<AllocationPool> allocationPools = Sets.newHashSet();;
+    Set<AllocationPool> allocationPools = Sets.newHashSet();;
 
     @Override
     protected void execute() {
diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java
index 956f8ce..4c555e3 100644
--- a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.vtnrsc.cli.virtualport;
 
-import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 
@@ -106,11 +105,11 @@
 
     @Option(name = "-l", aliases = "--allowedAddress", description = "virtual allowedAddressPair.",
             required = false, multiValued = false)
-    Collection<AllowedAddressPair> allowedAddressPairs = Sets.newHashSet();
+    Set<AllowedAddressPair> allowedAddressPairs = Sets.newHashSet();
 
     @Option(name = "-e", aliases = "--securityGroups", description = "virtualPort securityGroups.",
             required = false, multiValued = false)
-    Collection<SecurityGroup> securityGroups = Sets.newHashSet();
+    Set<SecurityGroup> securityGroups = Sets.newHashSet();
 
     @Override
     protected void execute() {
diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java
index fd218e0..6df4b23 100644
--- a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.vtnrsc.cli.virtualport;
 
-import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 
@@ -107,11 +106,11 @@
 
     @Option(name = "-l", aliases = "--allowedAddress", description = "virtual allowedAddressPair.",
             required = false, multiValued = false)
-    Collection<AllowedAddressPair> allowedAddressPairs = Sets.newHashSet();
+    Set<AllowedAddressPair> allowedAddressPairs = Sets.newHashSet();
 
     @Option(name = "-e", aliases = "--securityGroups", description = "virtualPort securityGroups.",
             required = false, multiValued = false)
-    Collection<SecurityGroup> securityGroups = Sets.newHashSet();
+    Set<SecurityGroup> securityGroups = Sets.newHashSet();
 
     @Override
     protected void execute() {
diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java
index 879dd35..ab810a8 100644
--- a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java
@@ -21,12 +21,14 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
+import org.onlab.packet.IpAddress;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.Serializer;
 import org.onosproject.store.service.StorageService;
 import org.onosproject.vtnrsc.AllocationPool;
+import org.onosproject.vtnrsc.DefaultSubnet;
 import org.onosproject.vtnrsc.HostRoute;
 import org.onosproject.vtnrsc.Subnet;
 import org.onosproject.vtnrsc.SubnetId;
@@ -86,7 +88,9 @@
                                                  TenantId.class,
                                                  HostRoute.class,
                                                  Subnet.Mode.class,
-                                                 AllocationPool.class))
+                                                 AllocationPool.class,
+                                                 DefaultSubnet.class,
+                                                 IpAddress.Version.class))
                 .build().asJavaMap();
 
         log.info("Started");
diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
index a94ea1f..e0c49f5 100644
--- a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
@@ -30,6 +30,7 @@
 import org.onosproject.store.service.StorageService;
 import org.onosproject.vtnrsc.AllowedAddressPair;
 import org.onosproject.vtnrsc.BindingHostId;
+import org.onosproject.vtnrsc.DefaultVirtualPort;
 import org.onosproject.vtnrsc.FixedIp;
 import org.onosproject.vtnrsc.SecurityGroup;
 import org.onosproject.vtnrsc.SubnetId;
@@ -98,7 +99,8 @@
                                                  BindingHostId.class,
                                                  SecurityGroup.class,
                                                  SubnetId.class,
-                                                 IpAddress.class))
+                                                 IpAddress.class,
+                                                 DefaultVirtualPort.class))
                 .build().asJavaMap();
         log.info("Started");
     }
diff --git a/apps/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java b/apps/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
index 7494f02..c46af6e 100644
--- a/apps/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
+++ b/apps/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
@@ -63,6 +63,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 
 @Path("subnets")
 public class SubnetWebResource extends AbstractWebResource {
@@ -211,8 +212,8 @@
             Subnet subnet = new DefaultSubnet(id, subnetName, networkId,
                                               tenantId, ipVersion, cidr,
                                               gatewayIp, dhcpEnabled, shared,
-                                              hostRoutesIt, ipV6AddressMode,
-                                              ipV6RaMode, allocationPoolsIt);
+                                              Sets.newHashSet(hostRoutesIt), ipV6AddressMode,
+                                              ipV6RaMode, Sets.newHashSet(allocationPoolsIt));
             subMap.put(id, subnet);
         }
         return Collections.unmodifiableCollection(subMap.values());
@@ -267,9 +268,9 @@
 
         Subnet subnet = new DefaultSubnet(id, subnetName, networkId, tenantId,
                                           ipVersion, cidr, gatewayIp,
-                                          dhcpEnabled, shared, hostRoutesIt,
+                                          dhcpEnabled, shared, Sets.newHashSet(hostRoutesIt),
                                           ipV6AddressMode, ipV6RaMode,
-                                          allocationPoolsIt);
+                                          Sets.newHashSet(allocationPoolsIt));
         subMap.put(id, subnet);
         return Collections.unmodifiableCollection(subMap.values());
     }
diff --git a/apps/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java b/apps/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
index 28f0c42..0a427bb 100644
--- a/apps/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
+++ b/apps/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
@@ -54,8 +54,8 @@
 import org.onosproject.vtnrsc.TenantId;
 import org.onosproject.vtnrsc.TenantNetworkId;
 import org.onosproject.vtnrsc.VirtualPort;
-import org.onosproject.vtnrsc.VirtualPortId;
 import org.onosproject.vtnrsc.VirtualPort.State;
+import org.onosproject.vtnrsc.VirtualPortId;
 import org.onosproject.vtnrsc.virtualport.VirtualPortService;
 import org.onosproject.vtnrsc.web.VirtualPortCodec;
 import org.slf4j.Logger;
@@ -65,6 +65,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 
 /**
  * REST resource for interacting with the inventory of infrastructure
@@ -249,8 +250,8 @@
                                                        macAddress, tenantId,
                                                        deviceId, fixedIps,
                                                        bindingHostId,
-                                                       allowedAddressPairs,
-                                                       securityGroups);
+                                                       Sets.newHashSet(allowedAddressPairs),
+                                                       Sets.newHashSet(securityGroups));
             portMap.put(id, vPort);
         }
         return Collections.unmodifiableCollection(portMap.values());
@@ -308,8 +309,8 @@
                                                    macAddress, tenantId,
                                                    deviceId, fixedIps,
                                                    bindingHostId,
-                                                   allowedAddressPairs,
-                                                   securityGroups);
+                                                   Sets.newHashSet(allowedAddressPairs),
+                                                   Sets.newHashSet(securityGroups));
         vportMap.put(id, vPort);
 
         return Collections.unmodifiableCollection(vportMap.values());
