diff --git a/cli/src/main/java/org/onosproject/cli/net/AllocationsCommand.java b/cli/src/main/java/org/onosproject/cli/net/AllocationsCommand.java
index 715fef0..4a350a9 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AllocationsCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AllocationsCommand.java
@@ -35,6 +35,7 @@
 import org.onosproject.net.newresource.ResourceService;
 
 import com.google.common.base.Strings;
+import org.onosproject.net.newresource.Resources;
 
 /**
  * Lists allocated resources.
@@ -106,7 +107,7 @@
         // TODO: Current design cannot deal with sub-resources
         //        (e.g., TX/RX under Port)
 
-        Resource resource = Resource.discrete(did, num).resource();
+        Resource resource = Resources.discrete(did, num).resource();
         if (lambda) {
             //print("Lambda resources:");
             Collection<ResourceAllocation> allocations
diff --git a/cli/src/main/java/org/onosproject/cli/net/ResourcesCommand.java b/cli/src/main/java/org/onosproject/cli/net/ResourcesCommand.java
index bf9201b..c64518c 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ResourcesCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ResourcesCommand.java
@@ -46,6 +46,7 @@
 import com.google.common.collect.Range;
 import com.google.common.collect.RangeSet;
 import com.google.common.collect.TreeRangeSet;
+import org.onosproject.net.newresource.Resources;
 
 /**
  * Lists available resources.
@@ -89,11 +90,11 @@
             DeviceId deviceId = deviceId(deviceIdStr);
             PortNumber portNumber = PortNumber.fromString(portNumberStr);
 
-            printResource(Resource.discrete(deviceId, portNumber).resource(), 0);
+            printResource(Resources.discrete(deviceId, portNumber).resource(), 0);
         } else if (deviceIdStr != null) {
             DeviceId deviceId = deviceId(deviceIdStr);
 
-            printResource(Resource.discrete(deviceId).resource(), 0);
+            printResource(Resources.discrete(deviceId).resource(), 0);
         } else {
             printResource(Resource.ROOT, 0);
         }
diff --git a/cli/src/main/java/org/onosproject/cli/net/TestAllocateResource.java b/cli/src/main/java/org/onosproject/cli/net/TestAllocateResource.java
index 8e72843..984987f 100644
--- a/cli/src/main/java/org/onosproject/cli/net/TestAllocateResource.java
+++ b/cli/src/main/java/org/onosproject/cli/net/TestAllocateResource.java
@@ -15,8 +15,6 @@
  */
 package org.onosproject.cli.net;
 
-import static org.onosproject.net.newresource.Resource.discrete;
-
 import java.util.Optional;
 
 import org.apache.karaf.shell.commands.Argument;
@@ -33,6 +31,7 @@
 import org.onosproject.net.newresource.ResourceConsumer;
 import org.onosproject.net.newresource.Resource;
 import org.onosproject.net.newresource.ResourceService;
+import org.onosproject.net.newresource.Resources;
 
 /**
  * Test tool to allocate resources.
@@ -73,8 +72,8 @@
 
         ResourceConsumer consumer = IntentId.valueOf(nIntendId);
 
-        Resource resource = discrete(did, portNum,
-                                         createLambda(Integer.parseInt(lambda))).resource();
+        Resource resource = Resources.discrete(did, portNum,
+                createLambda(Integer.parseInt(lambda))).resource();
 
         Optional<ResourceAllocation> allocate = resourceService.allocate(consumer, resource);
         if (allocate.isPresent()) {
