Moving LabelResourceManager to incubator

Breaking apart resource package into {device, link, label}
Refactored cluster serializers so they are visible

Change-Id: I71051bcd5e790ae6abeb154bf58286e584c32858
diff --git a/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java b/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java
index 2f493a0..bcb2609 100644
--- a/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java
+++ b/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java
@@ -43,8 +43,8 @@
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.OpticalConnectivityIntent;
 import org.onosproject.net.intent.PointToPointIntent;
-import org.onosproject.net.resource.DeviceResourceService;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.device.DeviceResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.topology.LinkWeight;
 import org.onosproject.net.topology.PathService;
 import org.onosproject.net.topology.TopologyEdge;
diff --git a/cli/src/main/java/org/onosproject/cli/net/ApplyGlobalLabelResourceCommand.java b/cli/src/main/java/org/onosproject/cli/net/ApplyGlobalLabelResourceCommand.java
index 6cf924a..f9fd7e1 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ApplyGlobalLabelResourceCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ApplyGlobalLabelResourceCommand.java
@@ -6,9 +6,9 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.resource.DefaultLabelResource;
-import org.onosproject.net.resource.LabelResource;
-import org.onosproject.net.resource.LabelResourceService;
+import org.onosproject.incubator.net.resource.label.DefaultLabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResourceService;
 
 @Command(scope = "onos", name = "apply-global-label-resource-pool",
       description = "Apply global labels from global resource pool")
diff --git a/cli/src/main/java/org/onosproject/cli/net/ApplyLabelResourceCommand.java b/cli/src/main/java/org/onosproject/cli/net/ApplyLabelResourceCommand.java
index 06cd8e6..dabd391 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ApplyLabelResourceCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ApplyLabelResourceCommand.java
@@ -7,9 +7,9 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
-import org.onosproject.net.resource.DefaultLabelResource;
-import org.onosproject.net.resource.LabelResource;
-import org.onosproject.net.resource.LabelResourceService;
+import org.onosproject.incubator.net.resource.label.DefaultLabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResourceService;
 
 @Command(scope = "onos", name = "apply-label-resource-pool",
       description = "Apply label resource from device pool by specific device id")
diff --git a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
index b17d04c..2e88c3a 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
@@ -39,7 +39,7 @@
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
 import org.onosproject.net.intent.constraint.LambdaConstraint;
 import org.onosproject.net.intent.constraint.LinkTypeConstraint;
-import org.onosproject.net.resource.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResource;
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 
diff --git a/cli/src/main/java/org/onosproject/cli/net/CreateGlobalLabelResourcePoolCommand.java b/cli/src/main/java/org/onosproject/cli/net/CreateGlobalLabelResourcePoolCommand.java
index 0be80cf..ef9fbe8 100644
--- a/cli/src/main/java/org/onosproject/cli/net/CreateGlobalLabelResourcePoolCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/CreateGlobalLabelResourcePoolCommand.java
@@ -3,8 +3,8 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.resource.LabelResourceAdminService;
-import org.onosproject.net.resource.LabelResourceId;
+import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
+import org.onosproject.incubator.net.resource.label.LabelResourceId;
 
 /**
  * create label resource pool by specific device id.
diff --git a/cli/src/main/java/org/onosproject/cli/net/CreateLabelResourcePoolCommand.java b/cli/src/main/java/org/onosproject/cli/net/CreateLabelResourcePoolCommand.java
index 5a7d6b4..1be3e33 100644
--- a/cli/src/main/java/org/onosproject/cli/net/CreateLabelResourcePoolCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/CreateLabelResourcePoolCommand.java
@@ -4,8 +4,8 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
-import org.onosproject.net.resource.LabelResourceAdminService;
-import org.onosproject.net.resource.LabelResourceId;
+import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
+import org.onosproject.incubator.net.resource.label.LabelResourceId;
 
 /**
  * create label resource pool by specific device id.
diff --git a/cli/src/main/java/org/onosproject/cli/net/DestroyGlobalLabelResourcePoolCommand.java b/cli/src/main/java/org/onosproject/cli/net/DestroyGlobalLabelResourcePoolCommand.java
index 8921044..31d38a4 100644
--- a/cli/src/main/java/org/onosproject/cli/net/DestroyGlobalLabelResourcePoolCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/DestroyGlobalLabelResourcePoolCommand.java
@@ -2,7 +2,7 @@
 
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.resource.LabelResourceAdminService;
+import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
 
 @Command(scope = "onos", name = "destroy-global-label-resource-pool",
 description = "Destroys global label resource pool")
diff --git a/cli/src/main/java/org/onosproject/cli/net/DestroyLabelResourcePoolCommand.java b/cli/src/main/java/org/onosproject/cli/net/DestroyLabelResourcePoolCommand.java
index 7965dc6..925f0f1 100644
--- a/cli/src/main/java/org/onosproject/cli/net/DestroyLabelResourcePoolCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/DestroyLabelResourcePoolCommand.java
@@ -4,7 +4,7 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
-import org.onosproject.net.resource.LabelResourceAdminService;
+import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
 
 @Command(scope = "onos", name = "destroy-label-resource-pool",
     description = "Destroys label resource pool by a specific device id")
diff --git a/cli/src/main/java/org/onosproject/cli/net/GetGlobalLabelResourceCommand.java b/cli/src/main/java/org/onosproject/cli/net/GetGlobalLabelResourceCommand.java
index 5ff98ba..9be6725 100644
--- a/cli/src/main/java/org/onosproject/cli/net/GetGlobalLabelResourceCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/GetGlobalLabelResourceCommand.java
@@ -2,8 +2,8 @@
 
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.resource.LabelResourcePool;
-import org.onosproject.net.resource.LabelResourceService;
+import org.onosproject.incubator.net.resource.label.LabelResourcePool;
+import org.onosproject.incubator.net.resource.label.LabelResourceService;
 
 @Command(scope = "onos", name = "get-global-label-resource-pool",
       description = "Gets global label resource pool information.")
diff --git a/cli/src/main/java/org/onosproject/cli/net/GetLabelResourceCommand.java b/cli/src/main/java/org/onosproject/cli/net/GetLabelResourceCommand.java
index cd10add..fa91b21 100644
--- a/cli/src/main/java/org/onosproject/cli/net/GetLabelResourceCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/GetLabelResourceCommand.java
@@ -4,8 +4,8 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
-import org.onosproject.net.resource.LabelResourcePool;
-import org.onosproject.net.resource.LabelResourceService;
+import org.onosproject.incubator.net.resource.label.LabelResourcePool;
+import org.onosproject.incubator.net.resource.label.LabelResourceService;
 
 @Command(scope = "onos", name = "get-label-resource-pool",
       description = "Gets label resource pool information by a specific device id")
diff --git a/cli/src/main/java/org/onosproject/cli/net/LinkResourceTestCommand.java b/cli/src/main/java/org/onosproject/cli/net/LinkResourceTestCommand.java
index a52b6e5..d68084c 100644
--- a/cli/src/main/java/org/onosproject/cli/net/LinkResourceTestCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/LinkResourceTestCommand.java
@@ -8,10 +8,10 @@
 import org.apache.karaf.shell.commands.Option;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.intent.IntentId;
-import org.onosproject.net.resource.DefaultLinkResourceRequest;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceRequest;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.DefaultLinkResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.topology.PathService;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
diff --git a/cli/src/main/java/org/onosproject/cli/net/ReleaseGlobalLabelResourceCommand.java b/cli/src/main/java/org/onosproject/cli/net/ReleaseGlobalLabelResourceCommand.java
index 9596061..4a5718b 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ReleaseGlobalLabelResourceCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ReleaseGlobalLabelResourceCommand.java
@@ -6,8 +6,8 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.net.resource.LabelResourceId;
-import org.onosproject.net.resource.LabelResourceService;
+import org.onosproject.incubator.net.resource.label.LabelResourceId;
+import org.onosproject.incubator.net.resource.label.LabelResourceService;
 
 @Command(scope = "onos", name = "release-global-label-resource-pool",
 description = "Releases labels to global label resource pool.")
diff --git a/cli/src/main/java/org/onosproject/cli/net/ReleaseLabelResourceCommand.java b/cli/src/main/java/org/onosproject/cli/net/ReleaseLabelResourceCommand.java
index 55c44c4..9805e0d 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ReleaseLabelResourceCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ReleaseLabelResourceCommand.java
@@ -4,10 +4,10 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.DeviceId;
-import org.onosproject.net.resource.DefaultLabelResource;
-import org.onosproject.net.resource.LabelResource;
-import org.onosproject.net.resource.LabelResourceId;
-import org.onosproject.net.resource.LabelResourceService;
+import org.onosproject.incubator.net.resource.label.DefaultLabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResourceId;
+import org.onosproject.incubator.net.resource.label.LabelResourceService;
 
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Multimap;
diff --git a/cli/src/main/java/org/onosproject/cli/net/ResourceAllocationsCommand.java b/cli/src/main/java/org/onosproject/cli/net/ResourceAllocationsCommand.java
index c3b0c83..9a18bfc 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ResourceAllocationsCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ResourceAllocationsCommand.java
@@ -21,7 +21,7 @@
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Link;
 import org.onosproject.net.link.LinkService;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 /**
  * Lists allocations by link. Lists all allocations if link is unspecified.
diff --git a/cli/src/main/java/org/onosproject/cli/net/ResourceAvailableCommand.java b/cli/src/main/java/org/onosproject/cli/net/ResourceAvailableCommand.java
index 42824ab..ab0d395 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ResourceAvailableCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ResourceAvailableCommand.java
@@ -21,7 +21,7 @@
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Link;
 import org.onosproject.net.link.LinkService;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.resource.ResourceRequest;
 
 /**
diff --git a/core/api/src/main/java/org/onosproject/net/intent/Constraint.java b/core/api/src/main/java/org/onosproject/net/intent/Constraint.java
index ca2acdc..ee28f6e 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/Constraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/Constraint.java
@@ -17,7 +17,7 @@
 
 import org.onosproject.net.Link;
 import org.onosproject.net.Path;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 /**
  * Representation of a connectivity constraint capable of evaluating a link
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentCompiler.java b/core/api/src/main/java/org/onosproject/net/intent/IntentCompiler.java
index 4f0a55d..da39184 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentCompiler.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentCompiler.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.net.intent;
 
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 import java.util.List;
 import java.util.Set;
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/AnnotationConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/AnnotationConstraint.java
index 6733296..36e6157 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/AnnotationConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/AnnotationConstraint.java
@@ -17,7 +17,7 @@
 
 import com.google.common.base.MoreObjects;
 import org.onosproject.net.Link;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/AsymmetricPathConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/AsymmetricPathConstraint.java
index 26ba61b..df709f9 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/AsymmetricPathConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/AsymmetricPathConstraint.java
@@ -18,7 +18,7 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.Path;
 import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
index be75880..b4518d4 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/BandwidthConstraint.java
@@ -16,9 +16,9 @@
 package org.onosproject.net.intent.constraint;
 
 import org.onosproject.net.Link;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.BandwidthResourceRequest;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.resource.ResourceRequest;
 import org.onosproject.net.resource.ResourceType;
 
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/BooleanConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/BooleanConstraint.java
index 1a46754..02d4a42 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/BooleanConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/BooleanConstraint.java
@@ -18,7 +18,7 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.Path;
 import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 /**
  * Abstract base class for various constraints that evaluate link viability
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java
index f9bf42e..a73e375 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java
@@ -16,8 +16,8 @@
 package org.onosproject.net.intent.constraint;
 
 import org.onosproject.net.Link;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.resource.ResourceRequest;
 import org.onosproject.net.resource.ResourceType;
 
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/LatencyConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/LatencyConstraint.java
index c3f5488..6b47e83 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/LatencyConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/LatencyConstraint.java
@@ -19,7 +19,7 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.Path;
 import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/LinkTypeConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/LinkTypeConstraint.java
index 21048cf..590715b 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/LinkTypeConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/LinkTypeConstraint.java
@@ -17,7 +17,7 @@
 
 import com.google.common.collect.ImmutableSet;
 import org.onosproject.net.Link;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Objects;
 import java.util.Set;
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
index 9f92a39..24ef191 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
@@ -19,7 +19,7 @@
 import com.google.common.collect.ImmutableSet;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Collections;
 import java.util.Objects;
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/WaypointConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/WaypointConstraint.java
index 49a52ec..579e44d 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/WaypointConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/WaypointConstraint.java
@@ -21,7 +21,7 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.Path;
 import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Collections;
 import java.util.LinkedList;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/ResourceId.java b/core/api/src/main/java/org/onosproject/net/resource/ResourceId.java
index 3fbe1d7..dd11153 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/ResourceId.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/ResourceId.java
@@ -16,7 +16,7 @@
 package org.onosproject.net.resource;
 
 /**
- * Representation of ID for allocated resource.
+ * Resource identifier.
  */
 public interface ResourceId {
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/DeviceResourceService.java b/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceService.java
similarity index 96%
rename from core/api/src/main/java/org/onosproject/net/resource/DeviceResourceService.java
rename to core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceService.java
index 10e5911..acbc486 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/DeviceResourceService.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceService.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.device;
 
 import org.onosproject.net.Port;
 import org.onosproject.net.intent.Intent;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/DeviceResourceStore.java b/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceStore.java
similarity index 95%
rename from core/api/src/main/java/org/onosproject/net/resource/DeviceResourceStore.java
rename to core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceStore.java
index 5df661c..3437f4b 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/DeviceResourceStore.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceStore.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.device;
 
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Port;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/BandwidthResource.java b/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/resource/BandwidthResource.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java
index 3c8ebea..bd0ba23 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/BandwidthResource.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResource.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import org.onlab.util.Bandwidth;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/BandwidthResourceAllocation.java b/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceAllocation.java
similarity index 90%
rename from core/api/src/main/java/org/onosproject/net/resource/BandwidthResourceAllocation.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceAllocation.java
index 7260536..de2f52f 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/BandwidthResourceAllocation.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceAllocation.java
@@ -13,9 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import com.google.common.base.MoreObjects;
+import org.onosproject.net.resource.ResourceAllocation;
+import org.onosproject.net.resource.ResourceType;
 
 /**
  * Representation of allocated bandwidth resource.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/BandwidthResourceRequest.java b/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceRequest.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/resource/BandwidthResourceRequest.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceRequest.java
index bf72d42..91cc3d1 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/BandwidthResourceRequest.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/BandwidthResourceRequest.java
@@ -13,11 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import java.util.Objects;
 
 import com.google.common.base.MoreObjects;
+import org.onosproject.net.resource.ResourceRequest;
+import org.onosproject.net.resource.ResourceType;
 
 /**
  * Representation of a request for bandwidth resource.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/DefaultLinkResourceAllocations.java b/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceAllocations.java
similarity index 94%
rename from core/api/src/main/java/org/onosproject/net/resource/DefaultLinkResourceAllocations.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceAllocations.java
index 3a2f66d..0227d3f 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/DefaultLinkResourceAllocations.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceAllocations.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -23,6 +23,9 @@
 
 import org.onosproject.net.Link;
 import org.onosproject.net.intent.IntentId;
+import org.onosproject.net.resource.ResourceAllocation;
+import org.onosproject.net.resource.ResourceRequest;
+import org.onosproject.net.resource.ResourceType;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/DefaultLinkResourceRequest.java b/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceRequest.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/resource/DefaultLinkResourceRequest.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceRequest.java
index 8d08e3b..5153aeb 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/DefaultLinkResourceRequest.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/DefaultLinkResourceRequest.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -29,6 +29,8 @@
 
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
 import org.onosproject.net.intent.constraint.LambdaConstraint;
+import org.onosproject.net.resource.ResourceRequest;
+import org.onosproject.net.resource.ResourceType;
 
 /**
  * Implementation of {@link LinkResourceRequest}.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LambdaResource.java b/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResource.java
similarity index 98%
rename from core/api/src/main/java/org/onosproject/net/resource/LambdaResource.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LambdaResource.java
index e4df34e..7ed8847 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LambdaResource.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResource.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import org.onosproject.net.IndexedLambda;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LambdaResourceAllocation.java b/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceAllocation.java
similarity index 92%
rename from core/api/src/main/java/org/onosproject/net/resource/LambdaResourceAllocation.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceAllocation.java
index e34dab5..210bba6 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LambdaResourceAllocation.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceAllocation.java
@@ -13,9 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import com.google.common.base.MoreObjects;
+import org.onosproject.net.resource.ResourceAllocation;
+import org.onosproject.net.resource.ResourceType;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LambdaResourceRequest.java b/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceRequest.java
similarity index 87%
rename from core/api/src/main/java/org/onosproject/net/resource/LambdaResourceRequest.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceRequest.java
index de64a17..b0391f5 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LambdaResourceRequest.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LambdaResourceRequest.java
@@ -13,9 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import com.google.common.base.MoreObjects;
+import org.onosproject.net.resource.ResourceRequest;
+import org.onosproject.net.resource.ResourceType;
 
 /**
  * Representation of a request for lambda resource.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResource.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResource.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResource.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResource.java
index 2c83dab..6cfa38d 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResource.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResource.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 /**
  * Abstraction of link resource.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceAllocations.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceAllocations.java
similarity index 90%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResourceAllocations.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceAllocations.java
index ebca82a..172e902 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceAllocations.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceAllocations.java
@@ -13,11 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import java.util.Set;
 
 import org.onosproject.net.Link;
+import org.onosproject.net.resource.ResourceAllocation;
 
 /**
  * Representation of allocated link resources.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceEvent.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceEvent.java
similarity index 96%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResourceEvent.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceEvent.java
index d98e9c4..3edb386 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceEvent.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceEvent.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import java.util.Collection;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceListener.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceListener.java
similarity index 94%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResourceListener.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceListener.java
index 80545b4..599dd4f 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceListener.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceListener.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import org.onosproject.event.EventListener;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceRequest.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceRequest.java
similarity index 95%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResourceRequest.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceRequest.java
index d0ed945..8023a92 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceRequest.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceRequest.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import java.util.Collection;
 import java.util.Set;
@@ -21,6 +21,7 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.intent.Constraint;
 import org.onosproject.net.intent.IntentId;
+import org.onosproject.net.resource.ResourceRequest;
 
 /**
  * Representation of a request for link resource.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceService.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceService.java
similarity index 96%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResourceService.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceService.java
index 1d1e697..69bdf4f 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceService.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceService.java
@@ -13,10 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import org.onosproject.net.Link;
 import org.onosproject.net.intent.IntentId;
+import org.onosproject.net.resource.ResourceRequest;
 
 /**
  * Service for providing link resource allocation.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceStore.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStore.java
similarity index 95%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResourceStore.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStore.java
index e3e9db8..e6674db 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceStore.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStore.java
@@ -13,12 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import java.util.Set;
 
 import org.onosproject.net.Link;
 import org.onosproject.net.intent.IntentId;
+import org.onosproject.net.resource.ResourceAllocation;
 
 /**
  * Manages link resources.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceStoreDelegate.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStoreDelegate.java
similarity index 94%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResourceStoreDelegate.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStoreDelegate.java
index e108349..6c051d6 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResourceStoreDelegate.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResourceStoreDelegate.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import org.onosproject.store.StoreDelegate;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LinkResources.java b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResources.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/resource/LinkResources.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/LinkResources.java
index 71fb4f4..dc00522 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LinkResources.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/LinkResources.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import java.util.Set;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/MplsLabel.java b/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabel.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/resource/MplsLabel.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/MplsLabel.java
index 51bb5a7..317a130 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/MplsLabel.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabel.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/MplsLabelResourceAllocation.java b/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceAllocation.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/resource/MplsLabelResourceAllocation.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceAllocation.java
index 995c4a6..1b3b8fc 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/MplsLabelResourceAllocation.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceAllocation.java
@@ -14,9 +14,11 @@
  * limitations under the License.
  */
 
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import com.google.common.base.MoreObjects;
+import org.onosproject.net.resource.ResourceAllocation;
+import org.onosproject.net.resource.ResourceType;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/MplsLabelResourceRequest.java b/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceRequest.java
similarity index 87%
rename from core/api/src/main/java/org/onosproject/net/resource/MplsLabelResourceRequest.java
rename to core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceRequest.java
index be1f758..0a03f45 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/MplsLabelResourceRequest.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/link/MplsLabelResourceRequest.java
@@ -13,9 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.net.resource;
+package org.onosproject.net.resource.link;
 
 import com.google.common.base.MoreObjects;
+import org.onosproject.net.resource.ResourceRequest;
+import org.onosproject.net.resource.ResourceType;
 
 /**
  * Representation of a request for lambda resource.
diff --git a/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java b/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java
index 6e03412..60857ca 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java
@@ -19,7 +19,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.onosproject.core.IdGenerator;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java b/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
index 47faf4a..6c7fe13 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
@@ -36,17 +36,17 @@
 import org.onosproject.net.flow.criteria.Criterion.Type;
 import org.onosproject.net.flow.instructions.Instruction;
 import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.BandwidthResourceRequest;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LambdaResourceRequest;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceListener;
-import org.onosproject.net.resource.LinkResourceRequest;
-import org.onosproject.net.resource.LinkResourceService;
-import org.onosproject.net.resource.MplsLabel;
-import org.onosproject.net.resource.MplsLabelResourceAllocation;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResourceRequest;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LambdaResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceListener;
+import org.onosproject.net.resource.link.LinkResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceService;
+import org.onosproject.net.resource.link.MplsLabel;
+import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.resource.ResourceRequest;
 import org.onosproject.net.resource.ResourceType;
diff --git a/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
index 988b0b4..88fa7f4 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
@@ -26,7 +26,7 @@
 import org.onosproject.net.NetTestTools;
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.intent.constraint.LambdaConstraint;
-import org.onosproject.net.resource.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResource;
 
 import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
diff --git a/core/api/src/test/java/org/onosproject/net/intent/constraint/AnnotationConstraintTest.java b/core/api/src/test/java/org/onosproject/net/intent/constraint/AnnotationConstraintTest.java
index c4f3a36..b87dc12 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/constraint/AnnotationConstraintTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/constraint/AnnotationConstraintTest.java
@@ -24,7 +24,7 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import static org.easymock.EasyMock.createMock;
 import static org.hamcrest.Matchers.closeTo;
diff --git a/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java b/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java
index cc29a25..743fc252 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java
@@ -18,8 +18,8 @@
 import org.junit.Test;
 import org.onlab.util.Bandwidth;
 import org.onosproject.net.Link;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.LambdaResource;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.LambdaResource;
 
 import com.google.common.testing.EqualsTester;
 
diff --git a/core/api/src/test/java/org/onosproject/net/intent/constraint/LatencyConstraintTest.java b/core/api/src/test/java/org/onosproject/net/intent/constraint/LatencyConstraintTest.java
index 3d9429e..bab1749 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/constraint/LatencyConstraintTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/constraint/LatencyConstraintTest.java
@@ -27,7 +27,7 @@
 import org.onosproject.net.Path;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
diff --git a/core/api/src/test/java/org/onosproject/net/intent/constraint/ObstacleConstraintTest.java b/core/api/src/test/java/org/onosproject/net/intent/constraint/ObstacleConstraintTest.java
index 291610a..f02787f 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/constraint/ObstacleConstraintTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/constraint/ObstacleConstraintTest.java
@@ -27,7 +27,7 @@
 import org.onosproject.net.Path;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Arrays;
 
diff --git a/core/api/src/test/java/org/onosproject/net/intent/constraint/WaypointConstraintTest.java b/core/api/src/test/java/org/onosproject/net/intent/constraint/WaypointConstraintTest.java
index 8e15711..f7e212a 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/constraint/WaypointConstraintTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/constraint/WaypointConstraintTest.java
@@ -25,7 +25,7 @@
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.intent.Constraint;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Arrays;
 
diff --git a/core/api/src/test/java/org/onosproject/net/resource/MplsObjectsTest.java b/core/api/src/test/java/org/onosproject/net/resource/MplsObjectsTest.java
index 42ee5f4..56f7a47 100644
--- a/core/api/src/test/java/org/onosproject/net/resource/MplsObjectsTest.java
+++ b/core/api/src/test/java/org/onosproject/net/resource/MplsObjectsTest.java
@@ -18,6 +18,8 @@
 import org.junit.Test;
 
 import com.google.common.testing.EqualsTester;
+import org.onosproject.net.resource.link.MplsLabel;
+import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
diff --git a/core/common/src/test/java/org/onosproject/codec/impl/IntentCodecTest.java b/core/common/src/test/java/org/onosproject/codec/impl/IntentCodecTest.java
index 2104654..94a5bda 100644
--- a/core/common/src/test/java/org/onosproject/codec/impl/IntentCodecTest.java
+++ b/core/common/src/test/java/org/onosproject/codec/impl/IntentCodecTest.java
@@ -49,8 +49,8 @@
 import org.onosproject.net.intent.constraint.LatencyConstraint;
 import org.onosproject.net.intent.constraint.ObstacleConstraint;
 import org.onosproject.net.intent.constraint.WaypointConstraint;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.LambdaResource;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.LambdaResource;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.ImmutableList;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
index b7ad184..939b9a1 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
@@ -41,9 +41,9 @@
 import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.intent.Key;
 import org.onosproject.net.link.LinkEvent;
-import org.onosproject.net.resource.LinkResourceEvent;
-import org.onosproject.net.resource.LinkResourceListener;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceEvent;
+import org.onosproject.net.resource.link.LinkResourceListener;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.topology.TopologyEvent;
 import org.onosproject.net.topology.TopologyListener;
 import org.onosproject.net.topology.TopologyService;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/ConnectivityIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/ConnectivityIntentCompiler.java
index d9e68bd..0a73d9a 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/ConnectivityIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/ConnectivityIntentCompiler.java
@@ -29,7 +29,7 @@
 import org.onosproject.net.intent.IntentExtensionService;
 import org.onosproject.net.intent.impl.PathNotFoundException;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.topology.LinkWeight;
 import org.onosproject.net.topology.PathService;
 import org.onosproject.net.topology.TopologyEdge;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompiler.java
index d8990ea..4116825 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompiler.java
@@ -31,7 +31,7 @@
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.PathIntent;
 import org.onosproject.net.intent.constraint.AsymmetricPathConstraint;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/LinkCollectionIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/LinkCollectionIntentCompiler.java
index 94f85bd..9085f08 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/LinkCollectionIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/LinkCollectionIntentCompiler.java
@@ -41,7 +41,7 @@
 import org.onosproject.net.intent.IntentCompiler;
 import org.onosproject.net.intent.IntentExtensionService;
 import org.onosproject.net.intent.LinkCollectionIntent;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsIntentCompiler.java
index b59d7eb..609f9a3 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsIntentCompiler.java
@@ -19,7 +19,7 @@
 import org.onosproject.net.intent.MplsIntent;
 import org.onosproject.net.intent.MplsPathIntent;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 
 @Component(immediate = true)
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java
index 9f835cf..d6eae35 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java
@@ -42,12 +42,12 @@
 import org.onosproject.net.intent.IntentExtensionService;
 import org.onosproject.net.intent.MplsPathIntent;
 import org.onosproject.net.link.LinkStore;
-import org.onosproject.net.resource.DefaultLinkResourceRequest;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceRequest;
-import org.onosproject.net.resource.LinkResourceService;
-import org.onosproject.net.resource.MplsLabel;
-import org.onosproject.net.resource.MplsLabelResourceAllocation;
+import org.onosproject.net.resource.link.DefaultLinkResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceService;
+import org.onosproject.net.resource.link.MplsLabel;
+import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.resource.ResourceType;
 import org.slf4j.Logger;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MultiPointToSinglePointIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MultiPointToSinglePointIntentCompiler.java
index d004d6f..3a40622 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MultiPointToSinglePointIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MultiPointToSinglePointIntentCompiler.java
@@ -37,7 +37,7 @@
 import org.onosproject.net.intent.MultiPointToSinglePointIntent;
 import org.onosproject.net.intent.PointToPointIntent;
 import org.onosproject.net.intent.impl.PathNotFoundException;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 import org.onosproject.net.topology.PathService;
 
 import com.google.common.collect.ImmutableSet;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java
index 91c9df3..4f8527e 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalConnectivityIntentCompiler.java
@@ -40,13 +40,13 @@
 import org.onosproject.net.intent.IntentExtensionService;
 import org.onosproject.net.intent.OpticalConnectivityIntent;
 import org.onosproject.net.intent.OpticalPathIntent;
-import org.onosproject.net.resource.DefaultLinkResourceRequest;
-import org.onosproject.net.resource.DeviceResourceService;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceRequest;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.DefaultLinkResourceRequest;
+import org.onosproject.net.resource.device.DeviceResourceService;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.resource.ResourceType;
 import org.onosproject.net.topology.LinkWeight;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalPathIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalPathIntentCompiler.java
index 84368d9..f4b11db 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalPathIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/OpticalPathIntentCompiler.java
@@ -37,8 +37,8 @@
 import org.onosproject.net.intent.IntentCompiler;
 import org.onosproject.net.intent.IntentExtensionService;
 import org.onosproject.net.intent.OpticalPathIntent;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Collections;
 import java.util.LinkedList;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
index 61c13e7..d6187cd 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
@@ -35,7 +35,7 @@
 import org.onosproject.net.intent.IntentCompiler;
 import org.onosproject.net.intent.IntentExtensionService;
 import org.onosproject.net.intent.PathIntent;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompiler.java
index 1c24d90..5644ee2 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompiler.java
@@ -26,7 +26,7 @@
 import org.onosproject.net.intent.PathIntent;
 import org.onosproject.net.intent.PointToPointIntent;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/SinglePointToMultiPointIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/SinglePointToMultiPointIntentCompiler.java
index 0021cd2..91341d2 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/SinglePointToMultiPointIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/SinglePointToMultiPointIntentCompiler.java
@@ -30,7 +30,7 @@
 import org.onosproject.net.intent.LinkCollectionIntent;
 import org.onosproject.net.intent.SinglePointToMultiPointIntent;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 import com.google.common.collect.ImmutableSet;
 
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/TwoWayP2PIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/TwoWayP2PIntentCompiler.java
index 63f8ebb..50a6754 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/TwoWayP2PIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/TwoWayP2PIntentCompiler.java
@@ -22,7 +22,7 @@
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.PointToPointIntent;
 import org.onosproject.net.intent.TwoWayP2PIntent;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 
 import java.util.List;
 import java.util.Set;
diff --git a/core/net/src/main/java/org/onosproject/net/resource/impl/DeviceResourceManager.java b/core/net/src/main/java/org/onosproject/net/resource/impl/DeviceResourceManager.java
index cfa290b..71fa9d5 100644
--- a/core/net/src/main/java/org/onosproject/net/resource/impl/DeviceResourceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/resource/impl/DeviceResourceManager.java
@@ -25,8 +25,8 @@
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.intent.OpticalConnectivityIntent;
-import org.onosproject.net.resource.DeviceResourceService;
-import org.onosproject.net.resource.DeviceResourceStore;
+import org.onosproject.net.resource.device.DeviceResourceService;
+import org.onosproject.net.resource.device.DeviceResourceStore;
 import org.slf4j.Logger;
 
 import java.util.Arrays;
diff --git a/core/net/src/main/java/org/onosproject/net/resource/impl/LinkResourceManager.java b/core/net/src/main/java/org/onosproject/net/resource/impl/LinkResourceManager.java
index 57bae5a..6b02edd 100644
--- a/core/net/src/main/java/org/onosproject/net/resource/impl/LinkResourceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/resource/impl/LinkResourceManager.java
@@ -25,22 +25,22 @@
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.net.Link;
 import org.onosproject.net.intent.IntentId;
-import org.onosproject.net.resource.BandwidthResourceAllocation;
-import org.onosproject.net.resource.BandwidthResourceRequest;
-import org.onosproject.net.resource.DefaultLinkResourceAllocations;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LambdaResourceRequest;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceEvent;
-import org.onosproject.net.resource.LinkResourceListener;
-import org.onosproject.net.resource.LinkResourceRequest;
-import org.onosproject.net.resource.LinkResourceService;
-import org.onosproject.net.resource.LinkResourceStore;
-import org.onosproject.net.resource.LinkResourceStoreDelegate;
-import org.onosproject.net.resource.MplsLabel;
-import org.onosproject.net.resource.MplsLabelResourceAllocation;
-import org.onosproject.net.resource.MplsLabelResourceRequest;
+import org.onosproject.net.resource.link.BandwidthResourceAllocation;
+import org.onosproject.net.resource.link.BandwidthResourceRequest;
+import org.onosproject.net.resource.link.DefaultLinkResourceAllocations;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LambdaResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceEvent;
+import org.onosproject.net.resource.link.LinkResourceListener;
+import org.onosproject.net.resource.link.LinkResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceService;
+import org.onosproject.net.resource.link.LinkResourceStore;
+import org.onosproject.net.resource.link.LinkResourceStoreDelegate;
+import org.onosproject.net.resource.link.MplsLabel;
+import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
+import org.onosproject.net.resource.link.MplsLabelResourceRequest;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.resource.ResourceRequest;
 import org.onosproject.net.resource.ResourceType;
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
index d48d107..ca75a20 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
@@ -43,7 +43,7 @@
 import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.Key;
-import org.onosproject.net.resource.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
 import org.onosproject.store.trivial.impl.SimpleIntentStore;
 
 import java.util.Collection;
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
index 70b00e0..58fa129 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
@@ -38,8 +38,8 @@
 import org.onosproject.net.intent.Key;
 import org.onosproject.net.intent.MockIdGenerator;
 import org.onosproject.net.link.LinkEvent;
-import org.onosproject.net.resource.LinkResourceEvent;
-import org.onosproject.net.resource.LinkResourceListener;
+import org.onosproject.net.resource.link.LinkResourceEvent;
+import org.onosproject.net.resource.link.LinkResourceListener;
 import org.onosproject.net.topology.Topology;
 import org.onosproject.net.topology.TopologyEvent;
 import org.onosproject.net.topology.TopologyListener;
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompilerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompilerTest.java
index 32d917f..e57d9db 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompilerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompilerTest.java
@@ -34,9 +34,9 @@
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
 import org.onosproject.net.intent.constraint.LambdaConstraint;
 import org.onosproject.net.intent.impl.PathNotFoundException;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LinkResourceService;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LinkResourceService;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java b/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
index 31174c6..436ed0f 100644
--- a/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
+++ b/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
@@ -36,9 +36,7 @@
 import org.onosproject.net.link.LinkService;
 import org.onosproject.net.packet.PacketService;
 import org.onosproject.net.proxyarp.ProxyArpService;
-import org.onosproject.net.resource.LabelResourceAdminService;
-import org.onosproject.net.resource.LinkResourceService;
-import org.onosproject.net.resource.LabelResourceService;
+import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.statistic.StatisticService;
 import org.onosproject.net.topology.PathService;
 import org.onosproject.net.topology.TopologyService;
@@ -107,8 +105,8 @@
                         DriverAdminService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
                         StorageAdminService.class.getName(), ServicePermission.GET),
-                new PermissionInfo(ServicePermission.class.getName(),
-                        LabelResourceAdminService.class.getName(), ServicePermission.GET),
+//                new PermissionInfo(ServicePermission.class.getName(),
+//                        LabelResourceAdminService.class.getName(), ServicePermission.GET),
 //                new PermissionInfo(ServicePermission.class.getName(),
 //                        TunnelAdminService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
@@ -151,8 +149,8 @@
                         LinkService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
                         LinkResourceService.class.getName(), ServicePermission.GET),
-                new PermissionInfo(ServicePermission.class.getName(),
-                        LabelResourceService.class.getName(), ServicePermission.GET),
+//                new PermissionInfo(ServicePermission.class.getName(),
+//                        LabelResourceService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
                         PacketService.class.getName(), ServicePermission.GET),
                 new PermissionInfo(ServicePermission.class.getName(),
@@ -224,14 +222,14 @@
                 IntentService.class.getName()));
         serviceDirectory.put(Permission.INTENT_EVENT, ImmutableSet.of(
                 IntentService.class.getName()));
-        serviceDirectory.put(Permission.LINK_READ, ImmutableSet.of(
-                LinkService.class.getName(), LinkResourceService.class.getName(),
-                LabelResourceService.class.getName()));
-        serviceDirectory.put(Permission.LINK_WRITE, ImmutableSet.of(
-                LinkResourceService.class.getName(), LabelResourceService.class.getName()));
-        serviceDirectory.put(Permission.LINK_EVENT, ImmutableSet.of(
-                LinkService.class.getName(), LinkResourceService.class.getName(),
-                LabelResourceService.class.getName()));
+//        serviceDirectory.put(Permission.LINK_READ, ImmutableSet.of(
+//                LinkService.class.getName(), LinkResourceService.class.getName(),
+//                LabelResourceService.class.getName()));
+//        serviceDirectory.put(Permission.LINK_WRITE, ImmutableSet.of(
+//                LinkResourceService.class.getName(), LabelResourceService.class.getName()));
+//        serviceDirectory.put(Permission.LINK_EVENT, ImmutableSet.of(
+//                LinkService.class.getName(), LinkResourceService.class.getName(),
+//                LabelResourceService.class.getName()));
         serviceDirectory.put(Permission.PACKET_READ, ImmutableSet.of(
                 PacketService.class.getName(), ProxyArpService.class.getName()));
         serviceDirectory.put(Permission.PACKET_WRITE, ImmutableSet.of(
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
index f7f459c..7f45343 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
@@ -69,7 +69,7 @@
 import org.onosproject.store.cluster.messaging.MessageSubject;
 import org.onosproject.store.impl.Timestamped;
 import org.onosproject.store.serializers.KryoSerializer;
-import org.onosproject.store.serializers.impl.DistributedStoreSerializers;
+import org.onosproject.store.serializers.custom.DistributedStoreSerializers;
 import org.slf4j.Logger;
 
 import java.io.IOException;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
index 828b5a0..35d004e 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/NewDistributedFlowRuleStore.java
@@ -66,7 +66,7 @@
 import org.onosproject.store.flow.ReplicaInfoService;
 import org.onosproject.store.serializers.KryoSerializer;
 import org.onosproject.store.serializers.StoreSerializer;
-import org.onosproject.store.serializers.impl.DistributedStoreSerializers;
+import org.onosproject.store.serializers.custom.DistributedStoreSerializers;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/host/impl/GossipHostStore.java b/core/store/dist/src/main/java/org/onosproject/store/host/impl/GossipHostStore.java
index f5178de..b2e4b97 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/host/impl/GossipHostStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/host/impl/GossipHostStore.java
@@ -62,7 +62,7 @@
 import org.onosproject.store.cluster.messaging.MessageSubject;
 import org.onosproject.store.impl.Timestamped;
 import org.onosproject.store.serializers.KryoSerializer;
-import org.onosproject.store.serializers.impl.DistributedStoreSerializers;
+import org.onosproject.store.serializers.custom.DistributedStoreSerializers;
 import org.slf4j.Logger;
 
 import java.io.IOException;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java b/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
index c6a6106..c5045ab 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
@@ -58,7 +58,7 @@
 import org.onosproject.store.cluster.messaging.MessageSubject;
 import org.onosproject.store.impl.Timestamped;
 import org.onosproject.store.serializers.KryoSerializer;
-import org.onosproject.store.serializers.impl.DistributedStoreSerializers;
+import org.onosproject.store.serializers.custom.DistributedStoreSerializers;
 import org.slf4j.Logger;
 
 import java.io.IOException;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
index b5e1655..bfdc536 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
@@ -26,7 +26,7 @@
 import org.onosproject.net.Port;
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.intent.IntentId;
-import org.onosproject.net.resource.DeviceResourceStore;
+import org.onosproject.net.resource.device.DeviceResourceStore;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.ConsistentMap;
 import org.onosproject.store.service.Serializer;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentLinkResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentLinkResourceStore.java
index 454d04c..84f7bb2 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentLinkResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentLinkResourceStore.java
@@ -26,16 +26,16 @@
 import org.onosproject.net.LinkKey;
 import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.link.LinkService;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.BandwidthResourceAllocation;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceEvent;
-import org.onosproject.net.resource.LinkResourceStore;
-import org.onosproject.net.resource.LinkResourceStoreDelegate;
-import org.onosproject.net.resource.MplsLabel;
-import org.onosproject.net.resource.MplsLabelResourceAllocation;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResourceAllocation;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceEvent;
+import org.onosproject.net.resource.link.LinkResourceStore;
+import org.onosproject.net.resource.link.LinkResourceStoreDelegate;
+import org.onosproject.net.resource.link.MplsLabel;
+import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.resource.ResourceAllocationException;
 import org.onosproject.net.resource.ResourceType;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/ClusterMessageSerializer.java b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/ClusterMessageSerializer.java
similarity index 97%
rename from core/store/dist/src/main/java/org/onosproject/store/serializers/impl/ClusterMessageSerializer.java
rename to core/store/dist/src/main/java/org/onosproject/store/serializers/custom/ClusterMessageSerializer.java
index 2038893..76bf798 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/ClusterMessageSerializer.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/ClusterMessageSerializer.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.store.serializers.impl;
+package org.onosproject.store.serializers.custom;
 
 import org.onosproject.cluster.NodeId;
 import org.onosproject.store.cluster.messaging.ClusterMessage;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/DistributedStoreSerializers.java b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/DistributedStoreSerializers.java
similarity index 96%
rename from core/store/dist/src/main/java/org/onosproject/store/serializers/impl/DistributedStoreSerializers.java
rename to core/store/dist/src/main/java/org/onosproject/store/serializers/custom/DistributedStoreSerializers.java
index d717a31..5465b9b 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/DistributedStoreSerializers.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/DistributedStoreSerializers.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.store.serializers.impl;
+package org.onosproject.store.serializers.custom;
 
 import org.onosproject.store.impl.MastershipBasedTimestamp;
 import org.onosproject.store.impl.Timestamped;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MastershipBasedTimestampSerializer.java b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/MastershipBasedTimestampSerializer.java
similarity index 96%
rename from core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MastershipBasedTimestampSerializer.java
rename to core/store/dist/src/main/java/org/onosproject/store/serializers/custom/MastershipBasedTimestampSerializer.java
index 20fbc79..eb1b2b5 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MastershipBasedTimestampSerializer.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/MastershipBasedTimestampSerializer.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.store.serializers.impl;
+package org.onosproject.store.serializers.custom;
 
 import org.onosproject.store.impl.MastershipBasedTimestamp;
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MessageSubjectSerializer.java b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/MessageSubjectSerializer.java
similarity index 96%
rename from core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MessageSubjectSerializer.java
rename to core/store/dist/src/main/java/org/onosproject/store/serializers/custom/MessageSubjectSerializer.java
index 8544019..7ddee1b 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MessageSubjectSerializer.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/MessageSubjectSerializer.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.store.serializers.impl;
+package org.onosproject.store.serializers.custom;
 
 import org.onosproject.store.cluster.messaging.MessageSubject;
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/package-info.java b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/package-info.java
similarity index 81%
rename from core/store/dist/src/main/java/org/onosproject/store/serializers/impl/package-info.java
rename to core/store/dist/src/main/java/org/onosproject/store/serializers/custom/package-info.java
index e1c5a54..5cd4bee 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/package-info.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/serializers/custom/package-info.java
@@ -17,4 +17,6 @@
 /**
  * Cluster messaging and distributed store serializers.
  */
-package org.onosproject.store.serializers.impl;
+//FIXME what is the right name for this package?
+//FIXME can this be moved to onos-core-serializers?
+package org.onosproject.store.serializers.custom;
diff --git a/core/store/dist/src/test/java/org/onosproject/store/impl/MastershipBasedTimestampTest.java b/core/store/dist/src/test/java/org/onosproject/store/impl/MastershipBasedTimestampTest.java
index 48377ce..eb9d324 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/impl/MastershipBasedTimestampTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/impl/MastershipBasedTimestampTest.java
@@ -21,7 +21,7 @@
 
 import org.junit.Test;
 import org.onosproject.store.Timestamp;
-import org.onosproject.store.serializers.impl.MastershipBasedTimestampSerializer;
+import org.onosproject.store.serializers.custom.MastershipBasedTimestampSerializer;
 import org.onlab.util.KryoNamespace;
 
 import com.google.common.testing.EqualsTester;
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
index 7220fdb..9356a29 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
@@ -152,18 +152,18 @@
 import org.onosproject.net.packet.DefaultPacketRequest;
 import org.onosproject.net.packet.PacketPriority;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.BandwidthResourceAllocation;
-import org.onosproject.net.resource.BandwidthResourceRequest;
-import org.onosproject.net.resource.DefaultLinkResourceAllocations;
-import org.onosproject.net.resource.DefaultLinkResourceRequest;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LambdaResourceRequest;
-import org.onosproject.net.resource.LinkResourceRequest;
-import org.onosproject.net.resource.MplsLabel;
-import org.onosproject.net.resource.MplsLabelResourceAllocation;
-import org.onosproject.net.resource.MplsLabelResourceRequest;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResourceAllocation;
+import org.onosproject.net.resource.link.BandwidthResourceRequest;
+import org.onosproject.net.resource.link.DefaultLinkResourceAllocations;
+import org.onosproject.net.resource.link.DefaultLinkResourceRequest;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LambdaResourceRequest;
+import org.onosproject.net.resource.link.LinkResourceRequest;
+import org.onosproject.net.resource.link.MplsLabel;
+import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
+import org.onosproject.net.resource.link.MplsLabelResourceRequest;
 import org.onosproject.store.Timestamp;
 import org.onosproject.store.service.Versioned;
 
diff --git a/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java b/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java
index ad3e440..ac9da38 100644
--- a/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java
+++ b/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java
@@ -59,13 +59,13 @@
 import org.onosproject.net.flow.FlowRuleBatchEntry;
 import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.BandwidthResourceAllocation;
-import org.onosproject.net.resource.DefaultLinkResourceAllocations;
-import org.onosproject.net.resource.DefaultLinkResourceRequest;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LinkResourceRequest;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResourceAllocation;
+import org.onosproject.net.resource.link.DefaultLinkResourceAllocations;
+import org.onosproject.net.resource.link.DefaultLinkResourceRequest;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LinkResourceRequest;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.intent.constraint.AnnotationConstraint;
 import org.onosproject.net.intent.constraint.BandwidthConstraint;
diff --git a/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleLinkResourceStore.java b/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleLinkResourceStore.java
index d8af6be..77b918a 100644
--- a/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleLinkResourceStore.java
+++ b/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleLinkResourceStore.java
@@ -32,13 +32,13 @@
 import org.onosproject.net.Annotations;
 import org.onosproject.net.Link;
 import org.onosproject.net.intent.IntentId;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.BandwidthResourceAllocation;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceEvent;
-import org.onosproject.net.resource.LinkResourceStore;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResourceAllocation;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceEvent;
+import org.onosproject.net.resource.link.LinkResourceStore;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.resource.ResourceAllocationException;
 import org.onosproject.net.resource.ResourceType;
diff --git a/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleLinkResourceStoreTest.java b/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleLinkResourceStoreTest.java
index 78035c2..5841c32 100644
--- a/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleLinkResourceStoreTest.java
+++ b/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleLinkResourceStoreTest.java
@@ -31,12 +31,12 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.BandwidthResource;
-import org.onosproject.net.resource.BandwidthResourceAllocation;
-import org.onosproject.net.resource.LambdaResource;
-import org.onosproject.net.resource.LambdaResourceAllocation;
-import org.onosproject.net.resource.LinkResourceAllocations;
-import org.onosproject.net.resource.LinkResourceStore;
+import org.onosproject.net.resource.link.BandwidthResource;
+import org.onosproject.net.resource.link.BandwidthResourceAllocation;
+import org.onosproject.net.resource.link.LambdaResource;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
+import org.onosproject.net.resource.link.LinkResourceAllocations;
+import org.onosproject.net.resource.link.LinkResourceStore;
 import org.onosproject.net.resource.ResourceAllocation;
 import org.onosproject.net.resource.ResourceAllocationException;
 import org.onosproject.net.resource.ResourceRequest;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/DefaultLabelResource.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/DefaultLabelResource.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/resource/DefaultLabelResource.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/DefaultLabelResource.java
index 41651de..8eed7c1 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/DefaultLabelResource.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/DefaultLabelResource.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResource.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResource.java
similarity index 89%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResource.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResource.java
index eac1d81..612240f 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResource.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResource.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.onosproject.net.Annotated;
 import org.onosproject.net.DeviceId;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceAdminService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceAdminService.java
similarity index 95%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceAdminService.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceAdminService.java
index 8d29500..6576ebf 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceAdminService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceAdminService.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.onosproject.net.DeviceId;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceDelegate.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceDelegate.java
similarity index 75%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceDelegate.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceDelegate.java
index c8ff44f..25287b9 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceDelegate.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceDelegate.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.onosproject.store.StoreDelegate;
 /**
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceEvent.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceEvent.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceEvent.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceEvent.java
index 93f1d19..b532378 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceEvent.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceEvent.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.onosproject.event.AbstractEvent;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceId.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceId.java
similarity index 89%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceId.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceId.java
index f23ad6d..688dbff 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceId.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceId.java
@@ -1,4 +1,6 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
+
+import org.onosproject.net.resource.ResourceId;
 
 import java.util.Objects;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceListener.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceListener.java
similarity index 78%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceListener.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceListener.java
index 3aee8d8..599a2b4 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceListener.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceListener.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.onosproject.event.EventListener;
 /**
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourcePool.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourcePool.java
similarity index 98%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourcePool.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourcePool.java
index 02ff9ee..e590dd9 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourcePool.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourcePool.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceProvider.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProvider.java
similarity index 78%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceProvider.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProvider.java
index 5c5183a..d0b46d0 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceProvider.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProvider.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.onosproject.net.provider.Provider;
 /**
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceProviderRegistry.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProviderRegistry.java
similarity index 82%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceProviderRegistry.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProviderRegistry.java
index 689ff4e..4d50297 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceProviderRegistry.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProviderRegistry.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.onosproject.net.provider.ProviderRegistry;
 /**
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceProviderService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProviderService.java
similarity index 93%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceProviderService.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProviderService.java
index 6e2fa5b..e804cc9 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceProviderService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceProviderService.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.provider.ProviderService;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceRequest.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceRequest.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceRequest.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceRequest.java
index f28e33b..7e429e2 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceRequest.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceRequest.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import java.util.Collection;
 import java.util.Objects;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceService.java
similarity index 97%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceService.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceService.java
index e88a215..9b35de1 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceService.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import java.util.Collection;
 import java.util.Set;
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceStore.java b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceStore.java
similarity index 98%
rename from core/api/src/main/java/org/onosproject/net/resource/LabelResourceStore.java
rename to incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceStore.java
index 451969d..8fdc77d 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LabelResourceStore.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/resource/label/LabelResourceStore.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import java.util.Collection;
 import java.util.Set;
diff --git a/core/api/src/test/java/org/onosproject/net/resource/DefaultLabelResourceTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/DefaultLabelResourceTest.java
similarity index 94%
rename from core/api/src/test/java/org/onosproject/net/resource/DefaultLabelResourceTest.java
rename to incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/DefaultLabelResourceTest.java
index 0e5ec27..5d7c02f 100644
--- a/core/api/src/test/java/org/onosproject/net/resource/DefaultLabelResourceTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/DefaultLabelResourceTest.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.junit.Test;
 import org.onosproject.event.AbstractEventTest;
diff --git a/core/api/src/test/java/org/onosproject/net/resource/LabelResourcePoolTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/LabelResourcePoolTest.java
similarity index 92%
rename from core/api/src/test/java/org/onosproject/net/resource/LabelResourcePoolTest.java
rename to incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/LabelResourcePoolTest.java
index f4d91c1..8783508 100644
--- a/core/api/src/test/java/org/onosproject/net/resource/LabelResourcePoolTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/LabelResourcePoolTest.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import org.junit.Test;
 import org.onosproject.event.AbstractEventTest;
diff --git a/core/api/src/test/java/org/onosproject/net/resource/LabelResourceRequestTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/LabelResourceRequestTest.java
similarity index 96%
rename from core/api/src/test/java/org/onosproject/net/resource/LabelResourceRequestTest.java
rename to incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/LabelResourceRequestTest.java
index bc538b2..1b08f7c 100644
--- a/core/api/src/test/java/org/onosproject/net/resource/LabelResourceRequestTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/resource/label/LabelResourceRequestTest.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource;
+package org.onosproject.incubator.net.resource.label;
 
 import java.util.Collections;
 
diff --git a/core/net/src/main/java/org/onosproject/net/resource/impl/LabelResourceManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/resource/label/impl/LabelResourceManager.java
similarity index 89%
rename from core/net/src/main/java/org/onosproject/net/resource/impl/LabelResourceManager.java
rename to incubator/net/src/main/java/org/onosproject/incubator/net/resource/label/impl/LabelResourceManager.java
index e719ab8..94daed0 100644
--- a/core/net/src/main/java/org/onosproject/net/resource/impl/LabelResourceManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/resource/label/impl/LabelResourceManager.java
@@ -1,4 +1,4 @@
-package org.onosproject.net.resource.impl;
+package org.onosproject.incubator.net.resource.label.impl;
 
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -21,18 +21,18 @@
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.provider.AbstractProviderRegistry;
 import org.onosproject.net.provider.AbstractProviderService;
-import org.onosproject.net.resource.LabelResource;
-import org.onosproject.net.resource.LabelResourceAdminService;
-import org.onosproject.net.resource.LabelResourceDelegate;
-import org.onosproject.net.resource.LabelResourceEvent;
-import org.onosproject.net.resource.LabelResourceId;
-import org.onosproject.net.resource.LabelResourceListener;
-import org.onosproject.net.resource.LabelResourcePool;
-import org.onosproject.net.resource.LabelResourceProvider;
-import org.onosproject.net.resource.LabelResourceProviderRegistry;
-import org.onosproject.net.resource.LabelResourceProviderService;
-import org.onosproject.net.resource.LabelResourceService;
-import org.onosproject.net.resource.LabelResourceStore;
+import org.onosproject.incubator.net.resource.label.LabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
+import org.onosproject.incubator.net.resource.label.LabelResourceDelegate;
+import org.onosproject.incubator.net.resource.label.LabelResourceEvent;
+import org.onosproject.incubator.net.resource.label.LabelResourceId;
+import org.onosproject.incubator.net.resource.label.LabelResourceListener;
+import org.onosproject.incubator.net.resource.label.LabelResourcePool;
+import org.onosproject.incubator.net.resource.label.LabelResourceProvider;
+import org.onosproject.incubator.net.resource.label.LabelResourceProviderRegistry;
+import org.onosproject.incubator.net.resource.label.LabelResourceProviderService;
+import org.onosproject.incubator.net.resource.label.LabelResourceService;
+import org.onosproject.incubator.net.resource.label.LabelResourceStore;
 import org.slf4j.Logger;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkArgument;
diff --git a/incubator/pom.xml b/incubator/pom.xml
index 0eb6e89..ca8cd7e 100644
--- a/incubator/pom.xml
+++ b/incubator/pom.xml
@@ -42,6 +42,13 @@
             <groupId>org.onosproject</groupId>
             <artifactId>onos-api</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-api</artifactId>
+            <classifier>tests</classifier>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/DistributedLabelResourceStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/resource/impl/DistributedLabelResourceStore.java
similarity index 96%
rename from core/store/dist/src/main/java/org/onosproject/store/resource/impl/DistributedLabelResourceStore.java
rename to incubator/store/src/main/java/org/onosproject/incubator/store/resource/impl/DistributedLabelResourceStore.java
index ce122c0..09a558d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/DistributedLabelResourceStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/resource/impl/DistributedLabelResourceStore.java
@@ -1,4 +1,4 @@
-package org.onosproject.store.resource.impl;
+package org.onosproject.incubator.store.resource.impl;
 
 import static org.onlab.util.Tools.groupedThreads;
 import static org.slf4j.LoggerFactory.getLogger;
@@ -28,15 +28,15 @@
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.resource.DefaultLabelResource;
-import org.onosproject.net.resource.LabelResource;
-import org.onosproject.net.resource.LabelResourceDelegate;
-import org.onosproject.net.resource.LabelResourceEvent;
-import org.onosproject.net.resource.LabelResourceEvent.Type;
-import org.onosproject.net.resource.LabelResourceId;
-import org.onosproject.net.resource.LabelResourcePool;
-import org.onosproject.net.resource.LabelResourceRequest;
-import org.onosproject.net.resource.LabelResourceStore;
+import org.onosproject.incubator.net.resource.label.DefaultLabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResource;
+import org.onosproject.incubator.net.resource.label.LabelResourceDelegate;
+import org.onosproject.incubator.net.resource.label.LabelResourceEvent;
+import org.onosproject.incubator.net.resource.label.LabelResourceEvent.Type;
+import org.onosproject.incubator.net.resource.label.LabelResourceId;
+import org.onosproject.incubator.net.resource.label.LabelResourcePool;
+import org.onosproject.incubator.net.resource.label.LabelResourceRequest;
+import org.onosproject.incubator.net.resource.label.LabelResourceStore;
 import org.onosproject.store.AbstractStore;
 import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
 import org.onosproject.store.cluster.messaging.ClusterMessage;
@@ -45,7 +45,7 @@
 import org.onosproject.store.flow.ReplicaInfoService;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.serializers.KryoSerializer;
-import org.onosproject.store.serializers.impl.DistributedStoreSerializers;
+import org.onosproject.store.serializers.custom.DistributedStoreSerializers;
 import org.onosproject.store.service.ConsistentMap;
 import org.onosproject.store.service.Serializer;
 import org.onosproject.store.service.StorageService;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/LabelResourceMessageSubjects.java b/incubator/store/src/main/java/org/onosproject/incubator/store/resource/impl/LabelResourceMessageSubjects.java
similarity index 92%
rename from core/store/dist/src/main/java/org/onosproject/store/resource/impl/LabelResourceMessageSubjects.java
rename to incubator/store/src/main/java/org/onosproject/incubator/store/resource/impl/LabelResourceMessageSubjects.java
index 68bce92..0a6f164 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/LabelResourceMessageSubjects.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/resource/impl/LabelResourceMessageSubjects.java
@@ -1,4 +1,4 @@
-package org.onosproject.store.resource.impl;
+package org.onosproject.incubator.store.resource.impl;
 
 import org.onosproject.store.cluster.messaging.MessageSubject;