diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
index 3dc12b3..125b5d9 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
@@ -66,7 +66,7 @@
         return new EncodableDiscreteResources(parent, values);
     }
 
-    private EncodableDiscreteResources(DiscreteResource parent, Map<Class<?>, EncodedDiscreteResources> map) {
+    EncodableDiscreteResources(DiscreteResource parent, Map<Class<?>, EncodedDiscreteResources> map) {
         this.parent = parent;
         this.map = map;
     }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResourcesSerializer.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResourcesSerializer.java
index 8c39e31..83bc342 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResourcesSerializer.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResourcesSerializer.java
@@ -21,8 +21,10 @@
 import com.esotericsoftware.kryo.io.Output;
 import org.onosproject.net.resource.DiscreteResource;
 
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -41,9 +43,11 @@
         @SuppressWarnings("unchecked")
         Set<EncodedDiscreteResources> resources = kryo.readObject(input, LinkedHashSet.class);
 
-        return EncodableDiscreteResources.of(parent,
-                resources.stream()
-                        .flatMap(x -> x.values(parent.id()).stream())
-                        .collect(Collectors.toCollection(LinkedHashSet::new)));
+        return new EncodableDiscreteResources(parent, resources.stream()
+                .collect(Collectors.toMap(
+                        EncodedDiscreteResources::encodedClass,
+                        Function.identity(),
+                        (v1, v2) -> v1,
+                        LinkedHashMap::new)));
     }
 }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
index d02e91c..e5bf85a 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
@@ -76,6 +76,11 @@
                 .collect(Collectors.toCollection(LinkedHashSet::new));
     }
 
+    Class<?> encodedClass() {
+        Range<Integer> firstRange = rangeSet.asRanges().iterator().next();
+        return codec.decode(firstRange.lowerEndpoint()).getClass();
+    }
+
     @SuppressWarnings("unchecked")
     boolean contains(DiscreteResource resource) {
         return resource.valueAs(Object.class)
