diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
index c394e85..522e540 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
@@ -22,6 +22,7 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 import org.apache.felix.scr.annotations.Activate;
@@ -37,6 +38,7 @@
 import org.onosproject.core.CoreService;
 import org.onosproject.event.AbstractListenerManager;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.Host;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.EventuallyConsistentMap;
 import org.onosproject.store.service.EventuallyConsistentMapEvent;
@@ -46,12 +48,18 @@
 import org.onosproject.store.service.WallClockTimestamp;
 import org.onosproject.vtnrsc.AllowedAddressPair;
 import org.onosproject.vtnrsc.BindingHostId;
+import org.onosproject.vtnrsc.DefaultFloatingIp;
 import org.onosproject.vtnrsc.DefaultVirtualPort;
 import org.onosproject.vtnrsc.FixedIp;
+import org.onosproject.vtnrsc.FloatingIp;
+import org.onosproject.vtnrsc.FloatingIpId;
+import org.onosproject.vtnrsc.RouterId;
 import org.onosproject.vtnrsc.SecurityGroup;
 import org.onosproject.vtnrsc.SubnetId;
 import org.onosproject.vtnrsc.TenantId;
+import org.onosproject.vtnrsc.TenantNetwork;
 import org.onosproject.vtnrsc.TenantNetworkId;
+import org.onosproject.vtnrsc.TenantRouter;
 import org.onosproject.vtnrsc.VirtualPort;
 import org.onosproject.vtnrsc.VirtualPortId;
 import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
@@ -71,7 +79,7 @@
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    private static final String VIRTUALPORT = "vtn-virtual-port";
+    private static final String VIRTUALPORT = "vtn-virtual-port-store";
     private static final String VTNRSC_APP = "org.onosproject.vtnrsc";
 
     private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null";
@@ -106,23 +114,36 @@
 
         eventDispatcher.addSink(VirtualPortEvent.class, listenerRegistry);
 
-        vPortStore = storageService.<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder()
-                .withName(VIRTUALPORT)
-                .withSerializer(KryoNamespace.newBuilder().register(KryoNamespaces.API)
-                                .register(MultiValuedTimestamp.class)
-                        .register(VirtualPortId.class,
-                                  TenantNetworkId.class,
-                                  VirtualPort.State.class,
-                                  TenantId.class,
-                                  AllowedAddressPair.class,
-                                  FixedIp.class,
-                                  BindingHostId.class,
-                                  SecurityGroup.class,
-                                  SubnetId.class,
-                                  IpAddress.class,
-                                  DefaultVirtualPort.class))
-                .withTimestampProvider((k, v) ->new WallClockTimestamp())
-                                          .build();
+        KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
+                .register(KryoNamespaces.API)
+                .register(MultiValuedTimestamp.class)
+                .register(TenantNetworkId.class)
+                .register(Host.class)
+                .register(TenantNetwork.class)
+                .register(TenantNetworkId.class)
+                .register(TenantId.class)
+                .register(SubnetId.class)
+                .register(VirtualPortId.class)
+                .register(VirtualPort.State.class)
+                .register(AllowedAddressPair.class)
+                .register(FixedIp.class)
+                .register(FloatingIp.class)
+                .register(FloatingIpId.class)
+                .register(FloatingIp.Status.class)
+                .register(UUID.class)
+                .register(DefaultFloatingIp.class)
+                .register(BindingHostId.class)
+                .register(SecurityGroup.class)
+                .register(IpAddress.class)
+                .register(DefaultVirtualPort.class)
+                .register(RouterId.class)
+                .register(TenantRouter.class)
+                .register(VirtualPort.class);
+        vPortStore = storageService
+                .<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder()
+                .withName(VIRTUALPORT).withSerializer(serializer)
+                .withTimestampProvider((k, v) -> new WallClockTimestamp())
+                .build();
 
         vPortStore.addListener(virtualPortListener);
         log.info("Started");
@@ -130,7 +151,8 @@
 
     @Deactivate
     public void deactivate() {
-        vPortStore.clear();
+        vPortStore.removeListener(virtualPortListener);
+        vPortStore.destroy();
         log.info("Stoppped");
     }
 
