diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java b/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java
index 85f0216..8ca05af 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java
@@ -22,13 +22,13 @@
 import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
 
 /**
- * Provides access to the extension implemented by this driver.
+ * Provides access to the extension treatments implemented by this driver.
  */
 @Beta
 public interface ExtensionTreatmentResolver extends HandlerBehaviour {
 
     /**
-     * Gets an extension instruction instance of the specified type, if supported
+     * Gets an extension treatment instance of the specified type, if supported
      * by the driver.
      *
      * @param type type of extension to get
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java
index 35a2d12..3df152e 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java
@@ -19,12 +19,12 @@
 import org.onosproject.net.flow.Extension;
 
 /**
- * An extenstion for the treatment API.
+ * An extension for the treatment API.
  */
 public interface ExtensionTreatment extends Extension {
 
     /**
-     * Gets the type of the extension instruction.
+     * Gets the type of the treatment extension.
      *
      * @return type
      */
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java
index 9715fc0..1ba5897 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java
@@ -32,11 +32,10 @@
      * These numbers have no impact on the actual OF type id.
      */
     public enum ExtensionTreatmentTypes {
-        // TODO fix type numbers to include experimenter id
         NICIRA_SET_TUNNEL_DST(0),
         NICIRA_RESUBMIT(1),
-        NICIRA_SET_NSH_SPI(32),
         NICIRA_RESUBMIT_TABLE(14),
+        NICIRA_SET_NSH_SPI(32),
         NICIRA_SET_NSH_SI(33),
         NICIRA_SET_NSH_CH1(34),
         NICIRA_SET_NSH_CH2(35),
@@ -46,7 +45,7 @@
         private ExtensionTreatmentType type;
 
         /**
-         * Creates a new named extension instruction type.
+         * Creates a new named extension treatment type.
          *
          * @param type type code
          */
diff --git a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java
index dc57977..88a5353 100644
--- a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java
+++ b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java
@@ -24,34 +24,34 @@
 import org.projectfloodlight.openflow.protocol.action.OFAction;
 
 /**
- * Interprets extension instructions and converts them to/from OpenFlow objects.
+ * Interprets extension treatments and converts them to/from OpenFlow objects.
  */
 @Beta
 public interface ExtensionTreatmentInterpreter extends HandlerBehaviour {
 
     /**
-     * Returns true if the given extension instruction is supported by this
+     * Returns true if the given extension treatment is supported by this
      * driver.
      *
-     * @param extensionTreatmentType extension instruction type
-     * @return true if the instruction is supported, otherwise false
+     * @param extensionTreatmentType extension treatment type
+     * @return true if the extension is supported, otherwise false
      */
     boolean supported(ExtensionTreatmentType extensionTreatmentType);
 
     /**
-     * Maps an extension instruction to an OpenFlow action.
+     * Maps an extension treatment to an OpenFlow action.
      *
      * @param factory OpenFlow factory
-     * @param extensionTreatment extension instruction
+     * @param extensionTreatment extension treatment
      * @return OpenFlow action
      */
     OFAction mapInstruction(OFFactory factory, ExtensionTreatment extensionTreatment);
 
     /**
-     * Maps an OpenFlow action to an extension instruction.
+     * Maps an OpenFlow action to an extension treatment.
      *
      * @param action OpenFlow action
-     * @return extension instruction
+     * @return extension treatment
      */
     ExtensionTreatment mapAction(OFAction action);
 
