diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
index 4d0256f..878d654 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
@@ -430,19 +430,6 @@
      *
      * @param port the TCP port number to modify to
      * @return a L4 modification
-     * @deprecated in Drake release
-     */
-    @Deprecated
-    public static L4ModificationInstruction modTcpSrc(short port) {
-       checkNotNull(port, "Src TCP port cannot be null");
-       return new ModTransportPortInstruction(L4SubType.TCP_SRC, TpPort.tpPort(port));
-    }
-
-    /**
-     * Creates a TCP src modification.
-     *
-     * @param port the TCP port number to modify to
-     * @return a L4 modification
      */
     public static L4ModificationInstruction modTcpSrc(TpPort port) {
        checkNotNull(port, "Src TCP port cannot be null");
@@ -454,19 +441,6 @@
      *
      * @param port the TCP port number to modify to
      * @return a L4 modification
-     * @deprecated in Drake release
-     */
-    @Deprecated
-    public static L4ModificationInstruction modTcpDst(short port) {
-        checkNotNull(port, "Dst TCP port cannot be null");
-        return new ModTransportPortInstruction(L4SubType.TCP_DST, TpPort.tpPort(port));
-    }
-
-    /**
-     * Creates a TCP dst modification.
-     *
-     * @param port the TCP port number to modify to
-     * @return a L4 modification
      */
     public static L4ModificationInstruction modTcpDst(TpPort port) {
         checkNotNull(port, "Dst TCP port cannot be null");
@@ -478,19 +452,6 @@
      *
      * @param port the UDP port number to modify to
      * @return a L4 modification
-     * @deprecated in Drake release
-     */
-    @Deprecated
-    public static L4ModificationInstruction modUdpSrc(short port) {
-        checkNotNull(port, "Src UDP port cannot be null");
-        return new ModTransportPortInstruction(L4SubType.UDP_SRC, TpPort.tpPort(port));
-    }
-
-    /**
-     * Creates a UDP src modification.
-     *
-     * @param port the UDP port number to modify to
-     * @return a L4 modification
      */
     public static L4ModificationInstruction modUdpSrc(TpPort port) {
         checkNotNull(port, "Src UDP port cannot be null");
@@ -502,19 +463,6 @@
      *
      * @param port the UDP port number to modify to
      * @return a L4 modification
-     * @deprecated in Drake release
-     */
-    @Deprecated
-    public static L4ModificationInstruction modUdpDst(short port) {
-        checkNotNull(port, "Dst UDP port cannot be null");
-        return new ModTransportPortInstruction(L4SubType.UDP_DST, TpPort.tpPort(port));
-    }
-
-    /**
-     * Creates a UDP dst modification.
-     *
-     * @param port the UDP port number to modify to
-     * @return a L4 modification
      */
     public static L4ModificationInstruction modUdpDst(TpPort port) {
         checkNotNull(port, "Dst UDP port cannot be null");
