Bundle restructuring

Change-Id: I5a9efa7f4d03bd78dd17297731c5addea5cf0442
diff --git a/apps/foo/src/main/java/org/onlab/onos/foo/package-info.java b/apps/foo/src/main/java/org/onlab/onos/foo/package-info.java
index 6372772..af9506e 100644
--- a/apps/foo/src/main/java/org/onlab/onos/foo/package-info.java
+++ b/apps/foo/src/main/java/org/onlab/onos/foo/package-info.java
@@ -1,4 +1,4 @@
 /**
  * Sample application for use in various experiments.
  */
-package org.onlab.onos.foo;
\ No newline at end of file
+package org.onlab.onos.foo;
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/FlowsListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/FlowsListCommand.java
index 4c4af1a..41f30a7 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/FlowsListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/FlowsListCommand.java
@@ -103,4 +103,4 @@
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/core/api/src/main/java/org/onlab/onos/store/package-info.java b/core/api/src/main/java/org/onlab/onos/store/package-info.java
index 7e767f0..b8203ce 100644
--- a/core/api/src/main/java/org/onlab/onos/store/package-info.java
+++ b/core/api/src/main/java/org/onlab/onos/store/package-info.java
@@ -1,4 +1,4 @@
 /**
  * Abstractions for creating and interacting with distributed stores.
  */
-package org.onlab.onos.store;
\ No newline at end of file
+package org.onlab.onos.store;
diff --git a/core/net/pom.xml b/core/net/pom.xml
index e2703b2..e05a82d 100644
--- a/core/net/pom.xml
+++ b/core/net/pom.xml
@@ -40,13 +40,14 @@
               Currently required for DistributedDeviceManagerTest. -->
         <dependency>
             <groupId>org.onlab.onos</groupId>
-            <artifactId>onos-core-store</artifactId>
+            <artifactId>onos-core-hz</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.onlab.onos</groupId>
-            <artifactId>onos-core-store</artifactId>
+            <!-- FIXME: should be somewhere else -->
+            <artifactId>onos-core-hz</artifactId>
             <version>${project.version}</version>
             <classifier>tests</classifier>
             <scope>test</scope>
diff --git a/core/net/src/main/java/org/onlab/onos/cluster/impl/package-info.java b/core/net/src/main/java/org/onlab/onos/cluster/impl/package-info.java
index d98f983..a31eb36 100644
--- a/core/net/src/main/java/org/onlab/onos/cluster/impl/package-info.java
+++ b/core/net/src/main/java/org/onlab/onos/cluster/impl/package-info.java
@@ -1,4 +1,4 @@
 /**
  * Subsystem for tracking controller cluster nodes.
  */
-package org.onlab.onos.cluster.impl;
\ No newline at end of file
+package org.onlab.onos.cluster.impl;
diff --git a/core/pom.xml b/core/pom.xml
index fc603df..afee0d0 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -20,7 +20,6 @@
         <module>api</module>
         <module>net</module>
         <module>store</module>
-        <module>trivial</module>
     </modules>
 
     <dependencies>
diff --git a/core/trivial/pom.xml b/core/store/dist/pom.xml
similarity index 67%
copy from core/trivial/pom.xml
copy to core/store/dist/pom.xml
index 1806ba4..900a2ff 100644
--- a/core/trivial/pom.xml
+++ b/core/store/dist/pom.xml
@@ -6,15 +6,15 @@
 
     <parent>
         <groupId>org.onlab.onos</groupId>
-        <artifactId>onos-core</artifactId>
+        <artifactId>onos-core-store</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>onos-core-trivial</artifactId>
+    <artifactId>onos-core-dist</artifactId>
     <packaging>bundle</packaging>
 
-    <description>ONOS network control trivial implementations of core subsystems</description>
+    <description>ONOS Gossip based distributed store subsystems</description>
 
     <dependencies>
         <dependency>
@@ -22,9 +22,18 @@
             <artifactId>onos-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.onlab.onos</groupId>
+            <artifactId>onos-core-serializers</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.annotations</artifactId>
         </dependency>
+        <dependency>
+          <groupId>de.javakaffee</groupId>
+          <artifactId>kryo-serializers</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/device/impl/package-info.java b/core/store/dist/src/main/java/org/onlab/onos/store/device/impl/package-info.java
new file mode 100644
index 0000000..b2fc91d
--- /dev/null
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/device/impl/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Implementation of device store using distributed structures.
+ */
+package org.onlab.onos.store.device.impl;
diff --git a/core/store/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
rename to core/store/dist/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/host/impl/DistributedHostStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/host/impl/DistributedHostStore.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/host/impl/DistributedHostStore.java
rename to core/store/dist/src/main/java/org/onlab/onos/store/host/impl/DistributedHostStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/impl/OnosTimestamp.java b/core/store/dist/src/main/java/org/onlab/onos/store/impl/OnosTimestamp.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/impl/OnosTimestamp.java
rename to core/store/dist/src/main/java/org/onlab/onos/store/impl/OnosTimestamp.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/OnosTimestampSerializer.java b/core/store/dist/src/main/java/org/onlab/onos/store/serializers/OnosTimestampSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/OnosTimestampSerializer.java
rename to core/store/dist/src/main/java/org/onlab/onos/store/serializers/OnosTimestampSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopology.java b/core/store/dist/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopology.java
similarity index 100%
copy from core/store/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopology.java
copy to core/store/dist/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopology.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopologyGraph.java b/core/store/dist/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopologyGraph.java
similarity index 100%
copy from core/store/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopologyGraph.java
copy to core/store/dist/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopologyGraph.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/topology/impl/DistributedTopologyStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/topology/impl/DistributedTopologyStore.java
similarity index 100%
copy from core/store/src/main/java/org/onlab/onos/store/topology/impl/DistributedTopologyStore.java
copy to core/store/dist/src/main/java/org/onlab/onos/store/topology/impl/DistributedTopologyStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/topology/impl/PathKey.java b/core/store/dist/src/main/java/org/onlab/onos/store/topology/impl/PathKey.java
similarity index 100%
copy from core/store/src/main/java/org/onlab/onos/store/topology/impl/PathKey.java
copy to core/store/dist/src/main/java/org/onlab/onos/store/topology/impl/PathKey.java
diff --git a/core/trivial/pom.xml b/core/store/hz/pom.xml
similarity index 62%
copy from core/trivial/pom.xml
copy to core/store/hz/pom.xml
index 1806ba4..d17bb4f 100644
--- a/core/trivial/pom.xml
+++ b/core/store/hz/pom.xml
@@ -6,15 +6,15 @@
 
     <parent>
         <groupId>org.onlab.onos</groupId>
-        <artifactId>onos-core</artifactId>
+        <artifactId>onos-core-store</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>onos-core-trivial</artifactId>
+    <artifactId>onos-core-hz</artifactId>
     <packaging>bundle</packaging>
 
-    <description>ONOS network control trivial implementations of core subsystems</description>
+    <description>ONOS Hazelcast based distributed store subsystems</description>
 
     <dependencies>
         <dependency>
@@ -22,9 +22,22 @@
             <artifactId>onos-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.onlab.onos</groupId>
+            <artifactId>onos-core-serializers</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.annotations</artifactId>
         </dependency>
+        <dependency>
+          <groupId>com.hazelcast</groupId>
+          <artifactId>hazelcast</artifactId>
+        </dependency>
+        <dependency>
+          <groupId>de.javakaffee</groupId>
+          <artifactId>kryo-serializers</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/core/store/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java b/core/store/hz/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/cluster/impl/DistributedMastershipStore.java b/core/store/hz/src/main/java/org/onlab/onos/store/cluster/impl/DistributedMastershipStore.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/cluster/impl/DistributedMastershipStore.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/cluster/impl/DistributedMastershipStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/cluster/impl/package-info.java b/core/store/hz/src/main/java/org/onlab/onos/store/cluster/impl/package-info.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/cluster/impl/package-info.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/cluster/impl/package-info.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/common/StoreService.java b/core/store/hz/src/main/java/org/onlab/onos/store/common/StoreService.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/common/StoreService.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/common/StoreService.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/common/package-info.java b/core/store/hz/src/main/java/org/onlab/onos/store/common/package-info.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/common/package-info.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/common/package-info.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/device/impl/DistributedDeviceStore.java b/core/store/hz/src/main/java/org/onlab/onos/store/device/impl/DistributedDeviceStore.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/device/impl/DistributedDeviceStore.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/device/impl/DistributedDeviceStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/device/impl/package-info.java b/core/store/hz/src/main/java/org/onlab/onos/store/device/impl/package-info.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/device/impl/package-info.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/device/impl/package-info.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java b/core/store/hz/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
similarity index 100%
copy from core/store/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
copy to core/store/hz/src/main/java/org/onlab/onos/store/flow/impl/DistributedFlowRuleStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/host/impl/DistributedHostStore.java b/core/store/hz/src/main/java/org/onlab/onos/store/host/impl/DistributedHostStore.java
similarity index 100%
copy from core/store/src/main/java/org/onlab/onos/store/host/impl/DistributedHostStore.java
copy to core/store/hz/src/main/java/org/onlab/onos/store/host/impl/DistributedHostStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/impl/AbsentInvalidatingLoadingCache.java b/core/store/hz/src/main/java/org/onlab/onos/store/impl/AbsentInvalidatingLoadingCache.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/impl/AbsentInvalidatingLoadingCache.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/impl/AbsentInvalidatingLoadingCache.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/impl/AbstractDistributedStore.java b/core/store/hz/src/main/java/org/onlab/onos/store/impl/AbstractDistributedStore.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/impl/AbstractDistributedStore.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/impl/AbstractDistributedStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/impl/OptionalCacheLoader.java b/core/store/hz/src/main/java/org/onlab/onos/store/impl/OptionalCacheLoader.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/impl/OptionalCacheLoader.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/impl/OptionalCacheLoader.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/impl/StoreManager.java b/core/store/hz/src/main/java/org/onlab/onos/store/impl/StoreManager.java
similarity index 96%
rename from core/store/src/main/java/org/onlab/onos/store/impl/StoreManager.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/impl/StoreManager.java
index e2692d5..7d542a8 100644
--- a/core/store/src/main/java/org/onlab/onos/store/impl/StoreManager.java
+++ b/core/store/hz/src/main/java/org/onlab/onos/store/impl/StoreManager.java
@@ -35,7 +35,6 @@
 import org.onlab.onos.store.serializers.IpPrefixSerializer;
 import org.onlab.onos.store.serializers.LinkKeySerializer;
 import org.onlab.onos.store.serializers.NodeIdSerializer;
-import org.onlab.onos.store.serializers.OnosTimestampSerializer;
 import org.onlab.onos.store.serializers.PortNumberSerializer;
 import org.onlab.onos.store.serializers.ProviderIdSerializer;
 import org.onlab.packet.IpPrefix;
@@ -102,7 +101,6 @@
                 .register(DeviceId.class, new DeviceIdSerializer())
                 .register(PortNumber.class, new PortNumberSerializer())
                 .register(DefaultPort.class, new DefaultPortSerializer())
-                .register(OnosTimestamp.class, new OnosTimestampSerializer())
                 .register(LinkKey.class, new LinkKeySerializer())
                 .register(ConnectPoint.class, new ConnectPointSerializer())
                 .register(DefaultLink.class, new DefaultLinkSerializer())
diff --git a/core/store/src/main/java/org/onlab/onos/store/impl/package-info.java b/core/store/hz/src/main/java/org/onlab/onos/store/impl/package-info.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/impl/package-info.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/impl/package-info.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/link/impl/DistributedLinkStore.java b/core/store/hz/src/main/java/org/onlab/onos/store/link/impl/DistributedLinkStore.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/link/impl/DistributedLinkStore.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/link/impl/DistributedLinkStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/link/impl/package-info.java b/core/store/hz/src/main/java/org/onlab/onos/store/link/impl/package-info.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/link/impl/package-info.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/link/impl/package-info.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopology.java b/core/store/hz/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopology.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopology.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopology.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopologyGraph.java b/core/store/hz/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopologyGraph.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopologyGraph.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/topology/impl/DefaultTopologyGraph.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/topology/impl/DistributedTopologyStore.java b/core/store/hz/src/main/java/org/onlab/onos/store/topology/impl/DistributedTopologyStore.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/topology/impl/DistributedTopologyStore.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/topology/impl/DistributedTopologyStore.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/topology/impl/PathKey.java b/core/store/hz/src/main/java/org/onlab/onos/store/topology/impl/PathKey.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/topology/impl/PathKey.java
rename to core/store/hz/src/main/java/org/onlab/onos/store/topology/impl/PathKey.java
diff --git a/core/store/src/test/java/org/onlab/onos/store/device/impl/DistributedDeviceStoreTest.java b/core/store/hz/src/test/java/org/onlab/onos/store/device/impl/DistributedDeviceStoreTest.java
similarity index 100%
rename from core/store/src/test/java/org/onlab/onos/store/device/impl/DistributedDeviceStoreTest.java
rename to core/store/hz/src/test/java/org/onlab/onos/store/device/impl/DistributedDeviceStoreTest.java
diff --git a/core/store/src/test/java/org/onlab/onos/store/impl/TestStoreManager.java b/core/store/hz/src/test/java/org/onlab/onos/store/impl/TestStoreManager.java
similarity index 100%
rename from core/store/src/test/java/org/onlab/onos/store/impl/TestStoreManager.java
rename to core/store/hz/src/test/java/org/onlab/onos/store/impl/TestStoreManager.java
diff --git a/core/store/src/test/java/org/onlab/onos/store/link/impl/DistributedLinkStoreTest.java b/core/store/hz/src/test/java/org/onlab/onos/store/link/impl/DistributedLinkStoreTest.java
similarity index 100%
rename from core/store/src/test/java/org/onlab/onos/store/link/impl/DistributedLinkStoreTest.java
rename to core/store/hz/src/test/java/org/onlab/onos/store/link/impl/DistributedLinkStoreTest.java
diff --git a/core/store/pom.xml b/core/store/pom.xml
index 246355c..b94b4fe 100644
--- a/core/store/pom.xml
+++ b/core/store/pom.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
@@ -12,34 +10,41 @@
     </parent>
 
     <artifactId>onos-core-store</artifactId>
-    <packaging>bundle</packaging>
+    <packaging>pom</packaging>
 
-    <description>ONOS distributed store subsystems</description>
+    <description>ONOS Core Store subsystem</description>
+
+    <modules>
+        <module>trivial</module>
+        <module>dist</module>
+        <module>hz</module>
+        <module>serializers</module>
+  </modules>
 
     <dependencies>
         <dependency>
-            <groupId>org.onlab.onos</groupId>
-            <artifactId>onos-api</artifactId>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.scr.annotations</artifactId>
+            <groupId>org.onlab.onos</groupId>
+            <artifactId>onlab-misc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.onlab.onos</groupId>
+            <artifactId>onlab-junit</artifactId>
         </dependency>
         <dependency>
           <groupId>com.hazelcast</groupId>
           <artifactId>hazelcast</artifactId>
         </dependency>
-        <dependency>
-          <groupId>de.javakaffee</groupId>
-          <artifactId>kryo-serializers</artifactId>
-        </dependency>
     </dependencies>
 
     <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.felix</groupId>
-                <artifactId>maven-scr-plugin</artifactId>
+                <artifactId>maven-bundle-plugin</artifactId>
             </plugin>
         </plugins>
     </build>
diff --git a/core/trivial/pom.xml b/core/store/serializers/pom.xml
similarity index 77%
copy from core/trivial/pom.xml
copy to core/store/serializers/pom.xml
index 1806ba4..f222a23 100644
--- a/core/trivial/pom.xml
+++ b/core/store/serializers/pom.xml
@@ -6,15 +6,15 @@
 
     <parent>
         <groupId>org.onlab.onos</groupId>
-        <artifactId>onos-core</artifactId>
+        <artifactId>onos-core-store</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>onos-core-trivial</artifactId>
+    <artifactId>onos-core-serializers</artifactId>
     <packaging>bundle</packaging>
 
-    <description>ONOS network control trivial implementations of core subsystems</description>
+    <description>Serializers for ONOS classes</description>
 
     <dependencies>
         <dependency>
@@ -25,6 +25,10 @@
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.annotations</artifactId>
         </dependency>
+        <dependency>
+          <groupId>de.javakaffee</groupId>
+          <artifactId>kryo-serializers</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/ConnectPointSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/ConnectPointSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/ConnectPointSerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/ConnectPointSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/DefaultLinkSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DefaultLinkSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/DefaultLinkSerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DefaultLinkSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/DefaultPortSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DefaultPortSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/DefaultPortSerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DefaultPortSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/DeviceIdSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DeviceIdSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/DeviceIdSerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DeviceIdSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/IpPrefixSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpPrefixSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/IpPrefixSerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpPrefixSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/LinkKeySerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/LinkKeySerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/LinkKeySerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/LinkKeySerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/NodeIdSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/NodeIdSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/NodeIdSerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/NodeIdSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/PortNumberSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/PortNumberSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/PortNumberSerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/PortNumberSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/ProviderIdSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/ProviderIdSerializer.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/ProviderIdSerializer.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/ProviderIdSerializer.java
diff --git a/core/store/src/main/java/org/onlab/onos/store/serializers/package-info.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/package-info.java
similarity index 100%
rename from core/store/src/main/java/org/onlab/onos/store/serializers/package-info.java
rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/package-info.java
diff --git a/core/trivial/pom.xml b/core/store/trivial/pom.xml
similarity index 95%
rename from core/trivial/pom.xml
rename to core/store/trivial/pom.xml
index 1806ba4..40016d4 100644
--- a/core/trivial/pom.xml
+++ b/core/store/trivial/pom.xml
@@ -6,7 +6,7 @@
 
     <parent>
         <groupId>org.onlab.onos</groupId>
-        <artifactId>onos-core</artifactId>
+        <artifactId>onos-core-store</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopology.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopology.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopology.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopology.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopologyGraph.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopologyGraph.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopologyGraph.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/DefaultTopologyGraph.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/PathKey.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/PathKey.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/PathKey.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/PathKey.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleClusterStore.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleClusterStore.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleClusterStore.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleClusterStore.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleFlowRuleStore.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleFlowRuleStore.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleFlowRuleStore.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleFlowRuleStore.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostStore.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostStore.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostStore.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostStore.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkStore.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkStore.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkStore.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkStore.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleMastershipStore.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleMastershipStore.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleMastershipStore.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleMastershipStore.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyStore.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyStore.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyStore.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleTopologyStore.java
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/package-info.java b/core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/package-info.java
similarity index 100%
rename from core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/package-info.java
rename to core/store/trivial/src/main/java/org/onlab/onos/net/trivial/impl/package-info.java
diff --git a/core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/DefaultTopologyTest.java b/core/store/trivial/src/test/java/org/onlab/onos/net/trivial/impl/DefaultTopologyTest.java
similarity index 100%
rename from core/trivial/src/test/java/org/onlab/onos/net/trivial/impl/DefaultTopologyTest.java
rename to core/store/trivial/src/test/java/org/onlab/onos/net/trivial/impl/DefaultTopologyTest.java
diff --git a/tools/build/conf/pom.xml b/tools/build/conf/pom.xml
index 8607de3..c2ad09c 100644
--- a/tools/build/conf/pom.xml
+++ b/tools/build/conf/pom.xml
@@ -1,4 +1,7 @@
-<project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.onlab.tools</groupId>
   <artifactId>onos-build-conf</artifactId>
diff --git a/utils/nio/src/main/java/org/onlab/nio/package-info.java b/utils/nio/src/main/java/org/onlab/nio/package-info.java
index d5ddd10..144236f 100644
--- a/utils/nio/src/main/java/org/onlab/nio/package-info.java
+++ b/utils/nio/src/main/java/org/onlab/nio/package-info.java
@@ -2,4 +2,4 @@
  * Mechanism to transfer messages over network using IO loop and
  * message stream, backed by NIO byte buffers.
  */
-package org.onlab.nio;
\ No newline at end of file
+package org.onlab.nio;