diff --git a/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java b/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
index e46def2..fccec73 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
@@ -92,11 +92,6 @@
     }
 
     @Override
-    public int port() {
-        return (int) this.portNumber.toLong();
-    }
-
-    @Override
     public PortNumber portNumber() {
         return this.portNumber;
     }
@@ -199,20 +194,6 @@
         /**
          * Sets port number.
          *
-         * @param port port number
-         * @return builder object
-         * @deprecated ONOS 1.12 Magpie
-         */
-        @Deprecated
-        public Builder setPort(int port) {
-            this.portNumber = PortNumber.portNumber(port);
-
-            return this;
-        }
-
-        /**
-         * Sets port number.
-         *
          * @param portNumber port number
          * @return builder object
          */
diff --git a/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java b/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
index f78768e..3dd00fb 100644
--- a/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
@@ -30,15 +30,6 @@
      * Returns the port number.
      *
      * @return port number
-     * @deprecated ONOS 1.12 Magpie please use portNumber()
-     */
-    @Deprecated
-    int  port();
-
-    /**
-     * Returns the port number.
-     *
-     * @return port number
      */
     PortNumber portNumber();
 
diff --git a/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java b/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java
index 996958f..98ff5a7 100644
--- a/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java
+++ b/core/api/src/test/java/org/onosproject/net/device/DefaultPortStatisticsTest.java
@@ -23,6 +23,7 @@
 import org.onosproject.net.NetTestTools;
 
 import com.google.common.testing.EqualsTester;
+import org.onosproject.net.PortNumber;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
@@ -45,7 +46,7 @@
             .setPacketsRxErrors(8)
             .setPacketsTxDropped(9)
             .setPacketsTxErrors(10)
-            .setPort(80)
+            .setPort(PortNumber.portNumber(80))
             .setDeviceId(NetTestTools.did("1"))
             .build();
 
@@ -60,7 +61,7 @@
             .setPacketsRxErrors(8)
             .setPacketsTxDropped(9)
             .setPacketsTxErrors(11)
-            .setPort(80)
+            .setPort(PortNumber.portNumber(80))
             .setDeviceId(NetTestTools.did("1"))
             .build();
 
@@ -84,7 +85,7 @@
         assertThat(stats1.packetsRxErrors(), is(8L));
         assertThat(stats1.packetsTxDropped(), is(9L));
         assertThat(stats1.packetsTxErrors(), is(10L));
-        assertThat(stats1.port(), is(80));
+        assertThat(stats1.portNumber().toLong(), is(80L));
     }
 
     /**
