diff --git a/core/api/src/main/java/org/onosproject/net/IndexedLambda.java b/core/api/src/main/java/org/onosproject/net/IndexedLambda.java
index cb7e1ae..6b5fa65 100644
--- a/core/api/src/main/java/org/onosproject/net/IndexedLambda.java
+++ b/core/api/src/main/java/org/onosproject/net/IndexedLambda.java
@@ -26,10 +26,12 @@
 
     /**
      * Creates an instance representing the wavelength specified by the given index number.
+     * It is recommended to use {@link Lambda#indexedLambda(long)} unless you want to use the
+     * concrete type, IndexedLambda, directly.
      *
      * @param index index number of wavelength
      */
-    IndexedLambda(long index) {
+    public IndexedLambda(long index) {
         this.index = index;
     }
 
diff --git a/core/api/src/main/java/org/onosproject/net/OchSignal.java b/core/api/src/main/java/org/onosproject/net/OchSignal.java
index 3f6c14f..e629b5e 100644
--- a/core/api/src/main/java/org/onosproject/net/OchSignal.java
+++ b/core/api/src/main/java/org/onosproject/net/OchSignal.java
@@ -45,13 +45,15 @@
 
     /**
      * Creates an instance with the specified arguments.
+     * It it recommended to use {@link Lambda#ochSignal(GridType, ChannelSpacing, int, int)}
+     * unless you want to use the concrete type, OchSignal, directly.
      *
      * @param gridType          grid type
      * @param channelSpacing    channel spacing
      * @param spacingMultiplier channel spacing multiplier
      * @param slotGranularity   slot width granularity
      */
-    OchSignal(GridType gridType, ChannelSpacing channelSpacing,
+    public OchSignal(GridType gridType, ChannelSpacing channelSpacing,
               int spacingMultiplier, int slotGranularity) {
         this.gridType = checkNotNull(gridType);
         this.channelSpacing = checkNotNull(channelSpacing);
diff --git a/core/api/src/main/java/org/onosproject/net/resource/LambdaResource.java b/core/api/src/main/java/org/onosproject/net/resource/LambdaResource.java
index aa14f70..e4df34e 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/LambdaResource.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/LambdaResource.java
@@ -15,36 +15,50 @@
  */
 package org.onosproject.net.resource;
 
+import org.onosproject.net.IndexedLambda;
+
 import java.util.Objects;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 /**
  * Representation of lambda resource.
  */
 public final class LambdaResource extends LinkResource {
 
-    private final int lambda;
+    private final IndexedLambda lambda;
 
     /**
      * Creates a new instance with given lambda.
      *
-     * @param lambda lambda value to be assigned
+     * @param lambda lambda to be assigned
      */
-    private LambdaResource(int lambda) {
-        this.lambda = lambda;
+    private LambdaResource(IndexedLambda lambda) {
+        this.lambda = checkNotNull(lambda);
     }
 
     // Constructor for serialization
     private LambdaResource() {
-        this.lambda = 0;
+        this.lambda = null;
     }
 
     /**
-     * Creates a new instance with given lambda.
+     * Creates a new instance with the given index of lambda.
      *
-     * @param lambda lambda value to be assigned
-     * @return {@link LambdaResource} instance with given lambda
+     * @param lambda index value of lambda to be assigned
+     * @return {@link LambdaResource} instance with the given lambda
      */
     public static LambdaResource valueOf(int lambda) {
+        return valueOf(new IndexedLambda(lambda));
+    }
+
+    /**
+     * Creates a new instance with the given lambda.
+     *
+     * @param lambda lambda to be assigned
+     * @return {@link LambdaResource} instance with the given lambda
+     */
+    public static LambdaResource valueOf(IndexedLambda lambda) {
         return new LambdaResource(lambda);
     }
 
@@ -54,7 +68,7 @@
      * @return lambda as an int value
      */
     public int toInt() {
-        return lambda;
+        return (int) lambda.index();
     }
 
     @Override
@@ -68,7 +82,7 @@
 
     @Override
     public int hashCode() {
-        return lambda;
+        return lambda.hashCode();
     }
 
     @Override
