diff --git a/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFCorsaSwitchDriver.java b/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFCorsaSwitchDriver.java
index 5cbdc0f..5fe41dd 100644
--- a/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFCorsaSwitchDriver.java
+++ b/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFCorsaSwitchDriver.java
@@ -38,7 +38,7 @@
 import org.projectfloodlight.openflow.types.OFVlanVidMatch;
 import org.projectfloodlight.openflow.types.TableId;
 
-import java.util.ArrayList;
+//import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -79,7 +79,7 @@
      */
     @Override
     public void write(OFMessage msg) {
-        if (msg.getType() == OFType.FLOW_MOD) {
+/*        if (msg.getType() == OFType.FLOW_MOD) {
             OFFlowMod flowMod = (OFFlowMod) msg;
             OFFlowMod.Builder builder = flowMod.createBuilder();
             builder.setTableId(TableId.of(LOCAL_TABLE));
@@ -87,11 +87,13 @@
         } else {
             channel.write(Collections.singletonList(msg));
         }
+*/
+        channel.write(Collections.singletonList(msg));
     }
 
     @Override
     public void write(List<OFMessage> msgs) {
-        List<OFMessage> newMsgs = new ArrayList<OFMessage>();
+/*        List<OFMessage> newMsgs = new ArrayList<OFMessage>();
         for (OFMessage msg : msgs) {
             if (msg.getType() == OFType.FLOW_MOD) {
                 OFFlowMod flowMod = (OFFlowMod) msg;
@@ -103,6 +105,8 @@
             }
         }
         channel.write(newMsgs);
+*/
+        channel.write(msgs);
     }
 
     @Override
diff --git a/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFOVSSwitchCorsaTTP.java b/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFOVSSwitchCorsaTTP.java
index 46fb87e..9e85def 100644
--- a/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFOVSSwitchCorsaTTP.java
+++ b/openflow/drivers/src/main/java/org/onosproject/openflow/drivers/OFOVSSwitchCorsaTTP.java
@@ -15,18 +15,18 @@
  */
 package org.onosproject.openflow.drivers;
 
-import com.google.common.collect.Lists;
 import org.onosproject.openflow.controller.Dpid;
 import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
-import org.projectfloodlight.openflow.protocol.OFFlowMod;
 import org.projectfloodlight.openflow.protocol.OFMessage;
+/*import com.google.common.collect.Lists;
+import org.projectfloodlight.openflow.protocol.OFFlowMod;
 import org.projectfloodlight.openflow.protocol.OFType;
 import org.projectfloodlight.openflow.protocol.instruction.OFInstruction;
 import org.projectfloodlight.openflow.protocol.instruction.OFInstructionGotoTable;
 import org.projectfloodlight.openflow.types.TableId;
-
-import java.util.Collections;
 import java.util.List;
+*/
+import java.util.Collections;
 
 public class OFOVSSwitchCorsaTTP extends OFCorsaSwitchDriver {
 
@@ -36,7 +36,7 @@
 
     @Override
     public void transformAndSendMsg(OFMessage msg, TableType type) {
-        log.trace("Trying to send {} of TableType {}", msg, type);
+        /*log.trace("Trying to send {} of TableType {}", msg, type);
         if (msg.getType() == OFType.FLOW_MOD) {
             OFFlowMod flowMod = (OFFlowMod) msg;
             OFFlowMod.Builder builder = flowMod.createBuilder();
@@ -84,10 +84,10 @@
                             break;
                         case NONE:
                             log.error("Should never have to go to Table 0");
-                            /*newInstructions.add(
+                            newInstructions.add(
                                     gotoTable.createBuilder()
                                             .setTableId(TableId.of(0)).build());
-                            */
+
                             break;
                         default:
                             log.warn("Unknown table type: {}", tid);
@@ -134,6 +134,7 @@
 
         } else {
             channel.write(Collections.singletonList(msg));
-        }
+        }*/
+        channel.write(Collections.singletonList(msg));
     }
 }
