diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/MirroringStatistics.java b/core/api/src/main/java/org/onosproject/net/behaviour/MirroringStatistics.java
index 6713633..633995f 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/MirroringStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/MirroringStatistics.java
@@ -16,19 +16,27 @@
 
 package org.onosproject.net.behaviour;
 
-import com.google.common.base.MoreObjects;
-
 import java.util.Map;
 import java.util.Objects;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * Represents statistics associated to a mirroring.
  */
 public final class MirroringStatistics {
 
-    private MirroringName mirroringName;
-    private int txBytes;
-    private int txPackets;
+    private final MirroringName mirroringName;
+    private final long txBytes;
+    private final long txPackets;
+
+    /**
+     * Hide private constructor to prevent calls to new().
+     */
+    private MirroringStatistics() {
+        // This should never happen
+        throw new UnsupportedOperationException();
+    }
 
     /**
      * Statistics associated to a named mirroring.
@@ -37,7 +45,7 @@
      * @param bytes transmitted bytes
      * @param packets transmitted packets
      */
-    private MirroringStatistics(String name, int bytes, int packets) {
+    private MirroringStatistics(String name, long bytes, long packets) {
         this.mirroringName = MirroringName.mirroringName(name);
         this.txBytes = bytes;
         this.txPackets = packets;
@@ -78,7 +86,7 @@
      *
      * @return the packets
      */
-    public long packtes() {
+    public long packets() {
         return txPackets;
     }
 
@@ -107,7 +115,7 @@
         return MoreObjects.toStringHelper(getClass())
                 .add("name", name())
                 .add("tx_bytes", bytes())
-                .add("tx_packets", packtes())
+                .add("tx_packets", packets())
                 .toString();
     }
 
