diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L2ModificationInstruction.java b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L2ModificationInstruction.java
index a0ab04c..8c51624 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L2ModificationInstruction.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L2ModificationInstruction.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.net.flow.instructions;
 
+import static com.google.common.base.MoreObjects.toStringHelper;
+
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -15,12 +17,12 @@
         /**
          * Ether src modification.
          */
-        L2_SRC,
+        ETH_SRC,
 
         /**
          * Ether dst modification.
          */
-        L2_DST,
+        ETH_DST,
 
         /**
          * VLAN id modification.
@@ -66,6 +68,13 @@
             return this.mac;
         }
 
+        @Override
+        public String toString() {
+            return toStringHelper(subtype().toString())
+                    .add("mac", mac).toString();
+        }
+
+
     }
 
     /**
@@ -88,6 +97,12 @@
             return this.vlanId;
         }
 
+        @Override
+        public String toString() {
+            return toStringHelper(subtype().toString())
+                    .add("id", vlanId).toString();
+        }
+
     }
 
     /**
@@ -110,6 +125,12 @@
             return this.vlanPcp;
         }
 
+        @Override
+        public String toString() {
+            return toStringHelper(subtype().toString())
+                    .add("pcp", Long.toHexString(vlanPcp)).toString();
+        }
+
     }
 
 
