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 da86e13..9019efb 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
@@ -12,7 +12,7 @@
     /**
      * Represents the type of traffic treatment.
      */
-    public enum L2SubType implements SubType {
+    public enum L2SubType {
         /**
          * Ether src modification.
          */
@@ -24,11 +24,6 @@
         L2_DST,
 
         /**
-         * Ethertype modification.
-         */
-        L2_TYPE,
-
-        /**
          * VLAN id modification.
          */
         VLAN_ID,
@@ -42,12 +37,11 @@
     // TODO: Create factory class 'Instructions' that will have various factory
     // to create specific instructions.
 
-    @Override
-    public abstract SubType subtype();
+    public abstract L2SubType subtype();
 
     @Override
     public Type type() {
-        return Type.MODIFICATION;
+        return Type.L2MODIFICATION;
     }
 
     /**
@@ -55,16 +49,16 @@
      */
     public static final class ModEtherInstruction extends L2ModificationInstruction {
 
-        private final SubType subtype;
+        private final L2SubType subtype;
         private final MACAddress mac;
 
-        public ModEtherInstruction(SubType subType, MACAddress addr) {
+        public ModEtherInstruction(L2SubType subType, MACAddress addr) {
             this.subtype = subType;
             this.mac = addr;
         }
 
         @Override
-        public SubType subtype() {
+        public L2SubType subtype() {
             return this.subtype;
         }
 
@@ -75,28 +69,6 @@
     }
 
     /**
-     * Represents a L2 type modification instruction.
-     */
-    public static final class ModEtherTypeInstruction extends L2ModificationInstruction {
-
-        public final short l2Type;
-
-        public ModEtherTypeInstruction(short l2Type) {
-            this.l2Type = l2Type;
-        }
-
-        @Override
-        public SubType subtype() {
-            return L2SubType.L2_TYPE;
-        }
-
-        public short l2Type() {
-            return this.l2Type;
-        }
-
-    }
-
-    /**
      * Represents a VLAN id modification instruction.
      */
     public static final class ModVlanIdInstruction extends L2ModificationInstruction {
@@ -108,7 +80,7 @@
         }
 
         @Override
-        public SubType subtype() {
+        public L2SubType subtype() {
             return L2SubType.VLAN_ID;
         }
 
@@ -130,7 +102,7 @@
         }
 
         @Override
-        public SubType subtype() {
+        public L2SubType subtype() {
             return L2SubType.VLAN_PCP;
         }
 
