diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java
index d7868da..dd8911e 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java
@@ -20,6 +20,7 @@
 
 import java.util.Collection;
 import java.util.Objects;
+import java.util.Set;
 
 /**
  * Representation of a Router gateway.
@@ -28,11 +29,11 @@
 
     private final TenantNetworkId networkId;
     private final boolean enableSnat;
-    private final Collection<FixedIp> externalFixedIps;
+    private final Set<FixedIp> externalFixedIps;
 
     // Public construction is prohibited
     private RouterGateway(TenantNetworkId networkId, boolean enableSnat,
-                         Collection<FixedIp> externalFixedIps) {
+                         Set<FixedIp> externalFixedIps) {
         this.networkId = checkNotNull(networkId, "networkId cannot be null");
         this.enableSnat = checkNotNull(enableSnat, "enableSnat cannot be null");
         this.externalFixedIps = checkNotNull(externalFixedIps, "externalFixedIps cannot be null");
@@ -47,7 +48,7 @@
      * @return RouterGateway
      */
     public static RouterGateway routerGateway(TenantNetworkId networkId, boolean enableSnat,
-                                              Collection<FixedIp> externalFixedIps) {
+                                              Set<FixedIp> externalFixedIps) {
         return new RouterGateway(networkId, enableSnat, externalFixedIps);
     }
 
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java
index 9fd73f5..a8b4edf 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java
@@ -21,6 +21,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -102,7 +103,8 @@
                 .register(FloatingIp.class, FloatingIpId.class,
                           TenantNetworkId.class, TenantId.class,
                           FloatingIp.Status.class, RouterId.class,
-                          VirtualPortId.class, DefaultFloatingIp.class);
+                          VirtualPortId.class, DefaultFloatingIp.class,
+                          UUID.class);
         floatingIpStore = storageService
                 .<FloatingIpId, FloatingIp>eventuallyConsistentMapBuilder()
                 .withName(FLOATINGIPSTORE).withSerializer(serializer)
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
index 84fd73c..a4b3fa3 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
@@ -435,10 +435,10 @@
         } else if (gateway.get("external_fixed_ips").isNull()) {
             throw new IllegalArgumentException("external_fixed_ips should not be empty");
         }
-        Collection<FixedIp> fixedIpList = jsonNodeToFixedIp(gateway
+        Iterable<FixedIp> fixedIpList = jsonNodeToFixedIp(gateway
                 .get("external_fixed_ips"));
         RouterGateway gatewayObj = RouterGateway
-                .routerGateway(networkId, enableSnat, fixedIpList);
+                .routerGateway(networkId, enableSnat, Sets.newHashSet(fixedIpList));
         return gatewayObj;
     }
 
@@ -448,7 +448,7 @@
      * @param fixedIp the allocationPools JsonNode
      * @return a collection of fixedIp
      */
-    private Collection<FixedIp> jsonNodeToFixedIp(JsonNode fixedIp) {
+    private Iterable<FixedIp> jsonNodeToFixedIp(JsonNode fixedIp) {
         checkNotNull(fixedIp, JSON_NOT_NULL);
         ConcurrentMap<Integer, FixedIp> fixedIpMaps = Maps.newConcurrentMap();
         Integer i = 0;
