diff --git a/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslatorHelper.java b/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslatorHelper.java
index 50f6ec9..3ef7f83 100644
--- a/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslatorHelper.java
+++ b/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslatorHelper.java
@@ -37,7 +37,6 @@
 import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
 import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
 import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
-import org.onosproject.net.flow.criteria.LambdaCriterion;
 import org.onosproject.net.flow.criteria.MetadataCriterion;
 import org.onosproject.net.flow.criteria.MplsBosCriterion;
 import org.onosproject.net.flow.criteria.MplsCriterion;
@@ -68,7 +67,6 @@
 import org.onosproject.net.pi.impl.CriterionTranslators.Icmpv6CodeCriterionTranslator;
 import org.onosproject.net.pi.impl.CriterionTranslators.Icmpv6TypeCriterionTranslator;
 import org.onosproject.net.pi.impl.CriterionTranslators.IpCriterionTranslator;
-import org.onosproject.net.pi.impl.CriterionTranslators.LambdaCriterionTranslator;
 import org.onosproject.net.pi.impl.CriterionTranslators.MetadataCriterionTranslator;
 import org.onosproject.net.pi.impl.CriterionTranslators.MplsBosCriterionTranslator;
 import org.onosproject.net.pi.impl.CriterionTranslators.MplsCriterionTranslator;
@@ -119,7 +117,6 @@
                     .put(IcmpTypeCriterion.class, new IcmpTypeCriterionTranslator())
                     .put(Icmpv6CodeCriterion.class, new Icmpv6CodeCriterionTranslator())
                     .put(Icmpv6TypeCriterion.class, new Icmpv6TypeCriterionTranslator())
-                    .put(LambdaCriterion.class, new LambdaCriterionTranslator())
                     .put(MplsBosCriterion.class, new MplsBosCriterionTranslator())
                     .put(MplsCriterion.class, new MplsCriterionTranslator())
                     .put(MplsTcCriterion.class, new MplsTcCriterionTranslator())
diff --git a/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslators.java b/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslators.java
index a5d676e..6ade434 100644
--- a/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslators.java
+++ b/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslators.java
@@ -35,7 +35,6 @@
 import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
 import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
 import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
-import org.onosproject.net.flow.criteria.LambdaCriterion;
 import org.onosproject.net.flow.criteria.MetadataCriterion;
 import org.onosproject.net.flow.criteria.MplsBosCriterion;
 import org.onosproject.net.flow.criteria.MplsCriterion;
@@ -248,17 +247,6 @@
     }
 
     /**
-     * Translator of LambdaCriterion.
-     */
-    static final class LambdaCriterionTranslator extends AbstractCriterionTranslator {
-        @Override
-        public void init(Criterion criterion, int bitWidth) throws ByteSequenceTrimException {
-            LambdaCriterion c = (LambdaCriterion) criterion;
-            initAsExactMatch(copyFrom(c.lambda()), bitWidth);
-        }
-    }
-
-    /**
      * Translator of MetadataCriterion.
      */
     static final class MetadataCriterionTranslator extends AbstractCriterionTranslator {
@@ -276,7 +264,7 @@
         @Override
         public void init(Criterion criterion, int bitWidth) throws ByteSequenceTrimException {
             MplsBosCriterion c = (MplsBosCriterion) criterion;
-            initAsExactMatch(copyFrom(c.mplsBos() ? 0 : 1), bitWidth);
+            initAsExactMatch(copyFrom(c.mplsBos() ? 1 : 0), bitWidth);
         }
     }
 
@@ -355,7 +343,6 @@
                 ImmutableByteSequence mask = copyFrom(c.mask().toInt());
                 initAsTernaryMatch(value, mask, bitWidth);
             }
-
         }
     }
 
@@ -382,7 +369,7 @@
     }
 
     /**
-     * Translator of  ArpHaCriterion.
+     * Translator of ArpHaCriterion.
      */
     static final class ArpHaCriterionTranslator extends AbstractCriterionTranslator {
         @Override
@@ -424,4 +411,5 @@
             initAsExactMatch(copyFrom(c.ipEcn()), bitWidth);
         }
     }
+
 }
