diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer10.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer10.java
index e308299..d6ff82c 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer10.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer10.java
@@ -138,7 +138,7 @@
         if (treatment == null) {
             return acts;
         }
-        for (Instruction i : treatment.instructions()) {
+        for (Instruction i : treatment.immediate()) {
             switch (i.type()) {
             case DROP:
                 log.warn("Saw drop action; assigning drop action");
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
index 1554fa3..61757bd 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
@@ -186,24 +186,6 @@
         return fm;
     }
 
-
-    private List<OFInstruction> buildInstructions() {
-        List<OFInstruction> instructions = new LinkedList<>();
-        if (treatment == null) {
-            return instructions;
-        }
-        for (Instruction i : treatment.instructions()) {
-            switch (i.type()) {
-                case TABLE:
-                    instructions.add(buildTableGoto(((Instructions.TableTypeTransition) i)));
-                    break;
-                default:
-                    break;
-            }
-        }
-        return instructions;
-    }
-
     private List<OFAction> buildActions(List<Instruction> treatments) {
         List<OFAction> actions = new LinkedList<>();
         boolean tableFound = false;
