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 a0a171ad..a511eba 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
@@ -238,85 +238,31 @@
             return add(Criteria.matchIPDst(ip));
         }
 
-        /**
-         * @deprecated 1.3.0 Drake Release
-         */
-        @Deprecated
-        @Override
-        public Builder matchTcpSrc(short tcpPort) {
-            return matchTcpSrc(TpPort.tpPort(tcpPort));
-        }
-
         @Override
         public Builder matchTcpSrc(TpPort tcpPort) {
             return add(Criteria.matchTcpSrc(tcpPort));
         }
 
-        /**
-         * @deprecated 1.3.0 Drake Release
-         */
-        @Deprecated
-        @Override
-        public Builder matchTcpDst(short tcpPort) {
-            return matchTcpDst(TpPort.tpPort(tcpPort));
-        }
-
         @Override
         public Builder matchTcpDst(TpPort tcpPort) {
             return add(Criteria.matchTcpDst(tcpPort));
         }
 
-        /**
-         * @deprecated 1.3.0 Drake Release
-         */
-        @Deprecated
-        @Override
-        public Builder matchUdpSrc(short udpPort) {
-            return matchUdpSrc(TpPort.tpPort(udpPort));
-        }
-
         @Override
         public Builder matchUdpSrc(TpPort udpPort) {
             return add(Criteria.matchUdpSrc(udpPort));
         }
 
-        /**
-         * @deprecated 1.3.0 Drake Release
-         */
-        @Deprecated
-        @Override
-        public Builder matchUdpDst(short udpPort) {
-            return matchUdpDst(TpPort.tpPort(udpPort));
-        }
-
         @Override
         public Builder matchUdpDst(TpPort udpPort) {
             return add(Criteria.matchUdpDst(udpPort));
         }
 
-        /**
-         * @deprecated 1.3.0 Drake Release
-         */
-        @Deprecated
-        @Override
-        public Builder matchSctpSrc(short sctpPort) {
-            return matchSctpSrc(TpPort.tpPort(sctpPort));
-        }
-
         @Override
         public Builder matchSctpSrc(TpPort sctpPort) {
             return add(Criteria.matchSctpSrc(sctpPort));
         }
 
-        /**
-         * @deprecated 1.3.0 Drake Release
-         */
-        @Deprecated
-        @Override
-        public Builder matchSctpDst(short sctpPort) {
-            return matchSctpDst(TpPort.tpPort(sctpPort));
-        }
-
         @Override
         public Builder matchSctpDst(TpPort sctpPort) {
             return add(Criteria.matchSctpDst(sctpPort));
diff --git a/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java b/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java
index dddacea..a851821 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/TrafficSelector.java
@@ -207,16 +207,6 @@
          *
          * @param tcpPort a TCP source port number
          * @return a selection builder
-         * @deprecated in Drake release
-         */
-        @Deprecated
-        Builder matchTcpSrc(short tcpPort);
-
-        /**
-         * Matches a TCP source port number.
-         *
-         * @param tcpPort a TCP source port number
-         * @return a selection builder
          */
         Builder matchTcpSrc(TpPort tcpPort);
 
@@ -225,16 +215,6 @@
          *
          * @param tcpPort a TCP destination port number
          * @return a selection builder
-         * @deprecated in Drake release
-         */
-        @Deprecated
-        Builder matchTcpDst(short tcpPort);
-
-        /**
-         * Matches a TCP destination port number.
-         *
-         * @param tcpPort a TCP destination port number
-         * @return a selection builder
          */
         Builder matchTcpDst(TpPort tcpPort);
 
@@ -243,16 +223,6 @@
          *
          * @param udpPort an UDP source port number
          * @return a selection builder
-         * @deprecated in Drake release
-         */
-        @Deprecated
-        Builder matchUdpSrc(short udpPort);
-
-        /**
-         * Matches an UDP source port number.
-         *
-         * @param udpPort an UDP source port number
-         * @return a selection builder
          */
         Builder matchUdpSrc(TpPort udpPort);
 
@@ -261,16 +231,6 @@
          *
          * @param udpPort an UDP destination port number
          * @return a selection builder
-         * @deprecated in Drake release
-         */
-        @Deprecated
-        Builder matchUdpDst(short udpPort);
-
-        /**
-         * Matches an UDP destination port number.
-         *
-         * @param udpPort an UDP destination port number
-         * @return a selection builder
          */
         Builder matchUdpDst(TpPort udpPort);
 
@@ -279,16 +239,6 @@
          *
          * @param sctpPort a SCTP source port number
          * @return a selection builder
-         * @deprecated in Drake release
-         */
-        @Deprecated
-        Builder matchSctpSrc(short sctpPort);
-
-        /**
-         * Matches a SCTP source port number.
-         *
-         * @param sctpPort a SCTP source port number
-         * @return a selection builder
          */
         Builder matchSctpSrc(TpPort sctpPort);
 
@@ -297,16 +247,6 @@
          *
          * @param sctpPort a SCTP destination port number
          * @return a selection builder
-         * @deprecated in Drake release
-         */
-        @Deprecated
-        Builder matchSctpDst(short sctpPort);
-
-        /**
-         * Matches a SCTP destination port number.
-         *
-         * @param sctpPort a SCTP destination port number
-         * @return a selection builder
          */
         Builder matchSctpDst(TpPort sctpPort);
 
