diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
index 9ce3186..d67e63a 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
@@ -141,7 +141,7 @@
         }
 
         @Override
-        public Builder matchMetadata(Long metadata) {
+        public Builder matchMetadata(long metadata) {
             return add(Criteria.matchMetadata(metadata));
         }
 
@@ -156,7 +156,7 @@
         }
 
         @Override
-        public Builder matchEthType(Short ethType) {
+        public Builder matchEthType(short ethType) {
             return add(Criteria.matchEthType(ethType));
         }
 
@@ -166,22 +166,22 @@
         }
 
         @Override
-        public Builder matchVlanPcp(Byte vlanPcp) {
+        public Builder matchVlanPcp(byte vlanPcp) {
             return add(Criteria.matchVlanPcp(vlanPcp));
         }
 
         @Override
-        public Builder matchIPDscp(Byte ipDscp) {
+        public Builder matchIPDscp(byte ipDscp) {
             return add(Criteria.matchIPDscp(ipDscp));
         }
 
         @Override
-        public Builder matchIPEcn(Byte ipEcn) {
+        public Builder matchIPEcn(byte ipEcn) {
             return add(Criteria.matchIPEcn(ipEcn));
         }
 
         @Override
-        public Builder matchIPProtocol(Byte proto) {
+        public Builder matchIPProtocol(byte proto) {
             return add(Criteria.matchIPProtocol(proto));
         }
 
@@ -196,42 +196,42 @@
         }
 
         @Override
-        public Builder matchTcpSrc(Short tcpPort) {
+        public Builder matchTcpSrc(short tcpPort) {
             return add(Criteria.matchTcpSrc(tcpPort));
         }
 
         @Override
-        public Builder matchTcpDst(Short tcpPort) {
+        public Builder matchTcpDst(short tcpPort) {
             return add(Criteria.matchTcpDst(tcpPort));
         }
 
         @Override
-        public Builder matchUdpSrc(Short udpPort) {
+        public Builder matchUdpSrc(short udpPort) {
             return add(Criteria.matchUdpSrc(udpPort));
         }
 
         @Override
-        public Builder matchUdpDst(Short udpPort) {
+        public Builder matchUdpDst(short udpPort) {
             return add(Criteria.matchUdpDst(udpPort));
         }
 
         @Override
-        public Builder matchSctpSrc(Short sctpPort) {
+        public Builder matchSctpSrc(short sctpPort) {
             return add(Criteria.matchSctpSrc(sctpPort));
         }
 
         @Override
-        public Builder matchSctpDst(Short sctpPort) {
+        public Builder matchSctpDst(short sctpPort) {
             return add(Criteria.matchSctpDst(sctpPort));
         }
 
         @Override
-        public Builder matchIcmpType(Byte icmpType) {
+        public Builder matchIcmpType(byte icmpType) {
             return add(Criteria.matchIcmpType(icmpType));
         }
 
         @Override
-        public Builder matchIcmpCode(Byte icmpCode) {
+        public Builder matchIcmpCode(byte icmpCode) {
             return add(Criteria.matchIcmpCode(icmpCode));
         }
 
@@ -246,17 +246,17 @@
         }
 
         @Override
-        public Builder matchIPv6FlowLabel(Integer flowLabel) {
+        public Builder matchIPv6FlowLabel(int flowLabel) {
             return add(Criteria.matchIPv6FlowLabel(flowLabel));
         }
 
         @Override
-        public Builder matchIcmpv6Type(Byte icmpv6Type) {
+        public Builder matchIcmpv6Type(byte icmpv6Type) {
             return add(Criteria.matchIcmpv6Type(icmpv6Type));
         }
 
         @Override
-        public Builder matchIcmpv6Code(Byte icmpv6Code) {
+        public Builder matchIcmpv6Code(byte icmpv6Code) {
             return add(Criteria.matchIcmpv6Code(icmpv6Code));
         }
 
@@ -281,17 +281,17 @@
         }
 
         @Override
-        public Builder matchIPv6ExthdrFlags(Integer exthdrFlags) {
+        public Builder matchIPv6ExthdrFlags(int exthdrFlags) {
             return add(Criteria.matchIPv6ExthdrFlags(exthdrFlags));
         }
 
         @Override
-        public Builder matchLambda(Short lambda) {
+        public Builder matchLambda(short lambda) {
             return add(Criteria.matchLambda(lambda));
         }
 
         @Override
-        public Builder matchOpticalSignalType(Short signalType) {
+        public Builder matchOpticalSignalType(short signalType) {
             return add(Criteria.matchOpticalSignalType(signalType));
         }
 
