diff --git a/tests/FuncUtils.py b/tests/FuncUtils.py
index 14d8023..7004580 100644
--- a/tests/FuncUtils.py
+++ b/tests/FuncUtils.py
@@ -6,9 +6,7 @@
 
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import logging
 import types
@@ -20,7 +18,7 @@
 #################### Functions for various types of flow_mod  ##########################################################################################
 
 def match_send_flowadd(self, match, priority, port):
-    msg = message.flow_mod()
+    msg = ofp.message.flow_mod()
     msg.out_port = ofp.OFPP_NONE
     msg.command = ofp.OFPFC_ADD
     # msg.cookie = random.randint(0,9007199254740992)
@@ -28,7 +26,7 @@
     msg.match = match
     if priority != None :
         msg.priority = priority
-    act = action.action_output()
+    act = ofp.action.action_output()
     act.port = port 
     msg.actions.add(act)
     self.controller.message_send(msg)
@@ -325,12 +323,12 @@
 # Strict Modify the flow Action 
         
     #Create a flow_mod message , command MODIFY_STRICT
-    msg5 = message.flow_mod()
+    msg5 = ofp.message.flow_mod()
     msg5.match = match
     msg5.cookie = random.randint(0,9007199254740992)
     msg5.command = ofp.OFPFC_MODIFY_STRICT
     msg5.buffer_id = 0xffffffff
-    act5 = action.action_output()
+    act5 = ofp.action.action_output()
     act5.port = egress_port
     msg5.actions.add(act5)
 
@@ -345,14 +343,14 @@
 # Modify the flow action
         
     #Create a flow_mod message , command MODIFY 
-    msg8 = message.flow_mod()
+    msg8 = ofp.message.flow_mod()
     msg8.match = match
     msg8.cookie = random.randint(0,9007199254740992)
     msg8.command = ofp.OFPFC_MODIFY
     #out_port will be ignored for flow adds and flow modify (here for test-case Add_Modify_With_Outport)
     msg8.out_port = of_ports[3]
     msg8.buffer_id = 0xffffffff
-    act8 = action.action_output()
+    act8 = ofp.action.action_output()
     act8.port = of_ports[2]
     msg8.actions.add(act8)
 
@@ -373,10 +371,10 @@
             "Could not generate flow match from pkt")
     
     match.in_port = ingress_port
-    request = message.flow_mod()
+    request = ofp.message.flow_mod()
     request.match = match
     request.buffer_id = 0xffffffff
-    act = action.action_enqueue()
+    act = ofp.action.action_enqueue()
     act.port     = egress_port
     act.queue_id = egress_queue_id
     request.actions.add(act)
@@ -391,7 +389,7 @@
 def get_flowstats(self,match):
     # Generate flow_stats request
     
-    stat_req = message.flow_stats_request()
+    stat_req = ofp.message.flow_stats_request()
     stat_req.match = match
     stat_req.table_id = 0xff
     stat_req.out_port = ofp.OFPP_NONE
@@ -405,7 +403,7 @@
 def get_portstats(self,port_num):
 
 # Return all the port counters in the form a tuple 
-    port_stats_req = message.port_stats_request()
+    port_stats_req = ofp.message.port_stats_request()
     port_stats_req.port_no = port_num  
     response,pkt = self.controller.transact(port_stats_req)
     self.assertTrue(response is not None,"No response received for port stats request") 
@@ -443,7 +441,7 @@
 def get_queuestats(self,port_num,queue_id):
 #Generate Queue Stats request 
 
-    request = message.queue_stats_request()
+    request = ofp.message.queue_stats_request()
     request.port_no  = port_num
     request.queue_id = queue_id
     (queue_stats, p) = self.controller.transact(request)
@@ -454,7 +452,7 @@
 def get_tablestats(self):
 # Send Table_Stats request (retrieve current table counters )
 
-    stat_req = message.table_stats_request()
+    stat_req = ofp.message.table_stats_request()
     response, pkt = self.controller.transact(stat_req,
                                                      timeout=5)
     self.assertTrue(response is not None, 
@@ -474,7 +472,7 @@
 
 def verify_tablestats(self,expect_lookup=None,expect_match=None,expect_active=None):
 
-    stat_req = message.table_stats_request()
+    stat_req = ofp.message.table_stats_request()
     
     for i in range(0,100):
 
@@ -518,7 +516,7 @@
 # Issue Strict Delete 
         
     #Create flow_mod message, command DELETE_STRICT
-    msg4 = message.flow_mod()
+    msg4 = ofp.message.flow_mod()
     msg4.out_port = ofp.OFPP_NONE
     msg4.command = ofp.OFPFC_DELETE_STRICT
     msg4.buffer_id = 0xffffffff
@@ -535,7 +533,7 @@
 # Issue Non_Strict Delete 
         
     #Create flow_mod message, command DELETE
-    msg6 = message.flow_mod()
+    msg6 = ofp.message.flow_mod()
     msg6.out_port = ofp.OFPP_NONE
     msg6.command = ofp.OFPFC_DELETE
     msg6.buffer_id = 0xffffffff
@@ -574,7 +572,7 @@
 
     cache_supported_actions = None
     if cache_supported_actions is None or not use_cache:
-        request = message.features_request()
+        request = ofp.message.features_request()
         (reply, pkt) = parent.controller.transact(request)
         parent.assertTrue(reply is not None, "Did not get response to ftr req")
         cache_supported_actions = reply.actions
diff --git a/tests/actions.py b/tests/actions.py
index ef323a0..522918a 100644
--- a/tests/actions.py
+++ b/tests/actions.py
@@ -15,9 +15,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 
@@ -51,7 +49,7 @@
         match.wildcards=ofp.OFPFW_ALL
         match.in_port = of_ports[0]
         
-        msg = message.flow_mod()
+        msg = ofp.message.flow_mod()
         msg.out_port = ofp.OFPP_NONE
         msg.command = ofp.OFPFC_ADD
         msg.buffer_id = 0xffffffff
@@ -87,7 +85,7 @@
         logging.info("Expecting Features Reply with supported actions")
 
         # Sending Features_Request
-        request = message.features_request()
+        request = ofp.message.features_request()
         (reply, pkt) = self.controller.transact(request)
         self.assertTrue(reply is not None, "Failed to get any reply")
         self.assertEqual(reply.header.type, ofp.OFPT_FEATURES_REPLY,'Response is not Features_reply')
@@ -144,7 +142,7 @@
         #Create a packet
         pkt = simple_tcp_packet()
         match = parse.packet_to_flow_match(pkt)
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         #Delete all flows 
         delete_all_flows(self.controller)
@@ -152,7 +150,7 @@
         match.in_port = ingress_port
 
         #Create a flow mod with action.port = OFPP_ALL
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
         request.match.wildcards = ofp.OFPFW_ALL&~ofp.OFPFW_IN_PORT
         act.port = ofp.OFPP_ALL
@@ -195,7 +193,7 @@
         #Create packet
         pkt = simple_tcp_packet()
         match = parse.packet_to_flow_match(pkt)
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for ingress_port in of_ports:
             #Delete all flows 
@@ -204,7 +202,7 @@
             match.in_port = ingress_port
             
             #Create a flow mod message
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             act.port = ofp.OFPP_CONTROLLER
             request.actions.add(act)
@@ -247,7 +245,7 @@
         #Clear switch state
         pkt = simple_tcp_packet()
         match = parse.packet_to_flow_match(pkt)
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for ingress_port in of_ports:
             #Delete the flows
@@ -255,7 +253,7 @@
 
             match.in_port = ingress_port
             #Create flow mod message
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             act.port = ofp.OFPP_LOCAL
             request.actions.add(act)
@@ -295,7 +293,7 @@
         #Create a packet
         pkt = simple_tcp_packet()
         match = parse.packet_to_flow_match(pkt)
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         #Delete all flows 
         delete_all_flows(self.controller)
@@ -303,7 +301,7 @@
         match.in_port = ingress_port
 
         #Create a flow mod with action.port = OFPP_ALL
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
         request.match.wildcards = ofp.OFPFW_ALL&~ofp.OFPFW_IN_PORT
         act.port = ofp.OFPP_FLOOD
@@ -345,7 +343,7 @@
         #Create a packet
         pkt = simple_tcp_packet()
         match = parse.packet_to_flow_match(pkt)
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         #Delete the flows
         delete_all_flows(self.controller)
@@ -353,7 +351,7 @@
         match.in_port = ingress_port
 
         # Create a flow mod message
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
         act.port = ofp.OFPP_IN_PORT
             
@@ -396,10 +394,10 @@
         (pkt,match) = wildcard_all(self,of_ports)
         
         #Create a packet out message
-        pkt_out =message.packet_out();
+        pkt_out =ofp.message.packet_out();
         pkt_out.data = str(pkt)
         pkt_out.in_port = of_ports[0]
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = ofp.OFPP_TABLE
         pkt_out.actions.add(act)
         self.controller.message_send(pkt_out)
@@ -442,7 +440,7 @@
         pkt = simple_tcp_packet(pktlen=len_wo_vid)
         exp_pkt = simple_tcp_packet(pktlen=len_w_vid, dl_vlan_enable=True, 
                                     dl_vlan=new_vid,dl_vlan_pcp=0)
-        vid_act = action.action_set_vlan_vid()
+        vid_act = ofp.action.action_set_vlan_vid()
         vid_act.vlan_vid = new_vid
 
         #Insert flow with action -- set vid , Send packet matching the flow, Verify recieved packet is expected packet
@@ -479,7 +477,7 @@
         new_vid = 3
         pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=old_vid)
         exp_pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=new_vid)
-        vid_act = action.action_set_vlan_vid()
+        vid_act = ofp.action.action_set_vlan_vid()
         vid_act.vlan_vid = new_vid
         
         #Insert flow with action -- set vid , Send packet matching the flow.Verify recieved packet is expected packet.
@@ -517,7 +515,7 @@
         pktlen = 64 if config["minsize"] < 64 else config["minsize"]
         pkt = simple_tcp_packet(pktlen=pktlen)
         exp_pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=vlan_id,dl_vlan_pcp=vlan_pcp, pktlen=pktlen + 4)
-        act = action.action_set_vlan_pcp()
+        act = ofp.action.action_set_vlan_pcp()
         act.vlan_pcp = vlan_pcp
 
         #Insert flow with action -- set vLAN priority, Send packet matching the flow, Verify recieved packet is expected packet
@@ -556,7 +554,7 @@
         new_vlan_pcp = 3
         pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=vid, dl_vlan_pcp=old_vlan_pcp)
         exp_pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=vid, dl_vlan_pcp=new_vlan_pcp)
-        vid_act = action.action_set_vlan_pcp()
+        vid_act = ofp.action.action_set_vlan_pcp()
         vid_act.vlan_pcp = new_vlan_pcp
 
         #Insert flow with action -- set vLAN priority, Send tagged packet matching the flow, Verify recieved packet is expected packet
diff --git a/tests/bsn_ipmask.py b/tests/bsn_ipmask.py
index b26fe3c..e640089 100644
--- a/tests/bsn_ipmask.py
+++ b/tests/bsn_ipmask.py
@@ -7,7 +7,6 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.base_tests as base_tests
 
 from oftest.testutils import *
@@ -48,7 +47,7 @@
         given wildcard index
         """
         logging.info("Setting index %d to mask is %s" % (index, mask))
-        m = message.vendor()
+        m = ofp.message.vendor()
         m.vendor = 0x005c16c7
         m.data = struct.pack("!LBBBBL", 0, index, 0, 0, 0, mask)
         self.controller.message_send(m)
@@ -58,7 +57,7 @@
         Use the BSN_GET_IP_MASK_REQUEST vendor command to get the current IP mask
         for the given wildcard index
         """
-        m = message.vendor()
+        m = ofp.message.vendor()
         m.vendor = 0x005c16c7
         m.data = struct.pack( "!LBBBBL", 1, index, 0, 0, 0, 0 )
         self.controller.message_send(m)
diff --git a/tests/bsn_mirror.py b/tests/bsn_mirror.py
index 1a114f9..8eb4016 100644
--- a/tests/bsn_mirror.py
+++ b/tests/bsn_mirror.py
@@ -7,14 +7,11 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
-import oftest.action as action
-import oftest.action_list as action_list
 import oftest.base_tests as base_tests
 
 from oftest.testutils import *
 
-class bsn_action_mirror(action.action_vendor):
+class bsn_action_mirror(ofp.action.action_vendor):
     def __init__(self):
         self.type = ofp.OFPAT_VENDOR
         self.len = 24
@@ -87,7 +84,7 @@
         Use the BSN_SET_MIRRORING vendor command to enable/disable
         mirror action support
         """
-        m = message.vendor()
+        m = ofp.message.vendor()
         m.vendor = 0x005c16c7
         m.data = struct.pack("!LBBBB", 3, enabled, 0, 0, 0)
         self.controller.message_send(m)
@@ -97,7 +94,7 @@
         Use the BSN_GET_MIRRORING_REQUEST vendor command to get the
         enabled/disabled state of mirror action support
         """
-        m = message.vendor()
+        m = ofp.message.vendor()
         m.vendor = 0x005c16c7
         m.data = struct.pack("!LBBBB", 4, 0, 0, 0, 0)
         self.controller.message_send(m)
@@ -117,7 +114,7 @@
 
         logging.info("Checking that mirror ports are not reported")
         self.assertEqual(bool(self.bsn_get_mirroring()), False)
-        m, r = self.controller.transact(message.features_request(), 2)
+        m, r = self.controller.transact(ofp.message.features_request(), 2)
         p = dict([(pt.port_no, pt) for pt in m.ports])
         self.assertFalse(mirror_ports[0] in p or mirror_ports[1] in p,
                          "Mirror port in features reply")
@@ -127,7 +124,7 @@
 
         logging.info("Checking that mirror ports are reported")
         self.assertEqual(bool(self.bsn_get_mirroring()), True)
-        m, r = self.controller.transact(message.features_request(), 2)
+        m, r = self.controller.transact(ofp.message.features_request(), 2)
         p = dict([(pt.port_no, pt) for pt in m.ports])
         self.assertTrue(mirror_ports[0] in p and mirror_ports[1] in p,
                         "Mirror port not in features reply")
@@ -142,9 +139,9 @@
         act2 = bsn_action_mirror()
         act2.dest_port = mirror_ports[1]
         act2.copy_stage = 0
-        act3 = action.action_output()
+        act3 = ofp.action.action_output()
         act3.port = ports[1]
-        flow_mod = message.flow_mod()
+        flow_mod = ofp.message.flow_mod()
         flow_mod.match = match
         flow_mod.actions.add(act1)
         flow_mod.actions.add(act2)
diff --git a/tests/bsn_shell.py b/tests/bsn_shell.py
index cc06ebe..8886c80 100644
--- a/tests/bsn_shell.py
+++ b/tests/bsn_shell.py
@@ -7,7 +7,6 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.base_tests as base_tests
 
 from oftest.testutils import *
@@ -23,7 +22,7 @@
         Use the BSN_SHELL_COMMAND vendor command to run the given command
         and receive the output
         """
-        m = message.vendor()
+        m = ofp.message.vendor()
         m.vendor = 0x005c16c7
         m.data = struct.pack("!LL", 6, 0) + cmd
         rc = self.controller.message_send(m)
diff --git a/tests/caps.py b/tests/caps.py
index 9621923..8d7779e 100644
--- a/tests/caps.py
+++ b/tests/caps.py
@@ -10,9 +10,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 
@@ -38,7 +36,7 @@
         break;
     match.in_port = port
     match.nw_src = 1
-    request = message.flow_mod()
+    request = ofp.message.flow_mod()
     count_check = 101  # fixme:  better way to determine this.
     if is_exact:
         match.wildcards = 0
@@ -49,7 +47,7 @@
     request.buffer_id = 0xffffffff      # set to NONE
     logging.info(request.show())
 
-    tstats = message.table_stats_request()
+    tstats = ofp.message.table_stats_request()
     try:  # Determine the table index to check (or "all")
         table_idx = config["caps_table_idx"]
     except:
diff --git a/tests/counters.py b/tests/counters.py
index 1c35dd7..afa1961 100644
--- a/tests/counters.py
+++ b/tests/counters.py
@@ -12,9 +12,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 import time
@@ -122,7 +120,7 @@
         (pkt,match) = wildcard_all_except_ingress(self,of_ports)
     
         #Create flow_stats request 
-        stat_req = message.flow_stats_request()
+        stat_req = ofp.message.flow_stats_request()
         stat_req.match= match
         stat_req.table_id = 0xff
         stat_req.out_port = ofp.OFPP_NONE
diff --git a/tests/cxn.py b/tests/cxn.py
index 37c2e52..1a00f1f 100644
--- a/tests/cxn.py
+++ b/tests/cxn.py
@@ -13,9 +13,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 
 from oftest.testutils import *
 
@@ -90,7 +88,7 @@
         logging.info("TCP Connected " + 
                      str(self.controllers[0].switch_addr))
         logging.info("Sending hello")
-        self.controllers[0].message_send(message.hello())
+        self.controllers[0].message_send(ofp.message.hello())
 
         logging.info("Features request not sent, waiting for timeout")
 
@@ -163,7 +161,7 @@
                     if con.cstate == 0:
                         logging.info(condesc + "Sending hello to " +
                                      str(con.switch_addr))
-                        con.message_send(message.hello())
+                        con.message_send(ofp.message.hello())
                         con.cstate = 1
                         con.count = 0
                     elif con.cstate == 1:
@@ -185,7 +183,7 @@
                     elif con.cstate == 2:
                         logging.info(condesc + "Sending features request to " +
                                      str(con.switch_addr))
-                        con.message_send(message.features_request())
+                        con.message_send(ofp.message.features_request())
                         con.cstate = 3
                         con.count = 0
                     elif con.cstate == 3:
diff --git a/tests/default_drop.py b/tests/default_drop.py
index 42261e5..574593f 100644
--- a/tests/default_drop.py
+++ b/tests/default_drop.py
@@ -7,9 +7,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.base_tests as base_tests
 
 from oftest.testutils import *
diff --git a/tests/detailed_contr_sw_messages.py b/tests/detailed_contr_sw_messages.py
index e4ebcfb..7f2787e 100644
--- a/tests/detailed_contr_sw_messages.py
+++ b/tests/detailed_contr_sw_messages.py
@@ -12,9 +12,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 
@@ -54,14 +52,14 @@
         match3.wildcards = ofp.OFPFW_ALL-ofp.OFPFW_IN_PORT
         match3.in_port = of_ports[0]
 
-        msg3 = message.flow_mod()
+        msg3 = ofp.message.flow_mod()
         msg3.command = ofp.OFPFC_ADD
         msg3.match = match3
         msg3.flags |= ofp.OFPFF_CHECK_OVERLAP
         msg3.cookie = random.randint(0,9007199254740992)
         msg3.buffer_id = 0xffffffff
        
-        act3 = action.action_output()
+        act3 = ofp.action.action_output()
         act3.port = of_ports[1]
         msg3.actions.add(act3)
         self.controller.message_send(msg3)
@@ -175,14 +173,14 @@
         match = parse.packet_to_flow_match(pkt)
         match.in_port = of_ports[0]
         
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
         request.command = ofp.OFPFC_ADD
         request.flags = request.flags|ofp.OFPFF_EMERG
         request.hard_timeout =9
         request.idle_timeout =9
         
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = of_ports[1]
         
         request.actions.add(act)
@@ -222,13 +220,13 @@
 
         #Generate a flow-mod,command OFPC_MODIFY 
 
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.command = ofp.OFPFC_MODIFY
         request.match.wildcards = ofp.OFPFW_ALL-ofp.OFPFW_IN_PORT
         request.match.in_port = of_ports[0]
         request.cookie = random.randint(0,9007199254740992)
         request.buffer_id = 0xffffffff
-        act3 = action.action_output()
+        act3 = ofp.action.action_output()
         act3.port = of_ports[1]
         request.actions.add(act3)
 
@@ -339,7 +337,7 @@
         logging.info("Expecting switch to ignore the command , without generating errors")
 
         # Issue a delete command 
-        msg = message.flow_mod()
+        msg = ofp.message.flow_mod()
         msg.match.wildcards = ofp.OFPFW_ALL
         msg.out_port = ofp.OFPP_NONE
         msg.command = ofp.OFPFC_DELETE
@@ -391,7 +389,7 @@
                         'Received flow removed message for the flow with flow_rem flag not set')
         
         # Insert another flow F' with OFPFF_SEND_FLOW_REM flag set.
-        msg9 = message.flow_mod()
+        msg9 = ofp.message.flow_mod()
         msg9.match.wildcards = ofp.OFPFW_ALL
         msg9.cookie = random.randint(0,9007199254740992)
         msg9.buffer_id = 0xffffffff
@@ -434,11 +432,11 @@
         pkt = simple_tcp_packet()
         match = parse.packet_to_flow_match(pkt)
         match.in_port = of_ports[0]
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
         request.command = ofp.OFPFC_ADD
         request.flags = request.flags|ofp.OFPFF_EMERG|ofp.OFPFF_SEND_FLOW_REM
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = of_ports[1]
         request.actions.add(act)
 
@@ -566,7 +564,7 @@
         verify_tablestats(self,expect_active=1)
 
         #Send delete command matching the flow-1 but with contraint out_port = of_port[2]
-        msg7 = message.flow_mod()
+        msg7 = ofp.message.flow_mod()
         msg7.out_port = of_ports[2]
         msg7.command = ofp.OFPFC_DELETE
         msg7.buffer_id = 0xffffffff
@@ -582,7 +580,7 @@
         logging.info("Expecting switch to delete the flow")
 
         #Send Delete command with contraint out_port = of_ports[1]
-        msg7 = message.flow_mod()
+        msg7 = ofp.message.flow_mod()
         msg7.out_port = of_ports[1]
         msg7.command = ofp.OFPFC_DELETE
         msg7.buffer_id = 0xffffffff
@@ -614,7 +612,7 @@
         logging.info("Expecting the flow entry to delete with given idle_timeout")
 
         #Insert a flow entry with idle_timeout=1.Send_Flow_Rem flag set
-        msg9 = message.flow_mod()
+        msg9 = ofp.message.flow_mod()
         msg9.match.wildcards = ofp.OFPFW_ALL
         msg9.cookie = random.randint(0,9007199254740992)
         msg9.buffer_id = 0xffffffff
@@ -696,7 +694,7 @@
         logging.info("Expecting the flow entry to delete with given hard_timeout")
 
         # Insert a flow entry with hardtimeout=1 and send_flow_removed flag set
-        msg9 = message.flow_mod()
+        msg9 = ofp.message.flow_mod()
         msg9.match.wildcards = ofp.OFPFW_ALL
         msg9.cookie = random.randint(0,9007199254740992)
         msg9.buffer_id = 0xffffffff
@@ -747,7 +745,7 @@
         self.assertTrue(match3 is not None, "Could not generate flow match from pkt")
         match3.wildcards = ofp.OFPFW_ALL-ofp.OFPFW_IN_PORT
         match3.in_port = of_ports[0]
-        msg3 = message.flow_mod()
+        msg3 = ofp.message.flow_mod()
         msg3.out_port = of_ports[2] # ignored by flow add,flow modify 
         msg3.command = ofp.OFPFC_ADD
         msg3.cookie = random.randint(0,9007199254740992)
@@ -755,7 +753,7 @@
         msg3.hard_timeout = 1
         msg3.buffer_id = 0xffffffff
         msg3.match = match3
-        act3 = action.action_output()
+        act3 = ofp.action.action_output()
         act3.port = of_ports[1]
         msg3.actions.add(act3)
 
diff --git a/tests/flow_expire.py b/tests/flow_expire.py
index 6b497cc..f5b0773 100644
--- a/tests/flow_expire.py
+++ b/tests/flow_expire.py
@@ -12,9 +12,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 
@@ -44,7 +42,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         of_ports = config["port_map"].keys()
         of_ports.sort()
@@ -57,7 +55,7 @@
         
         match.in_port = ingress_port
         
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
         request.cookie = random.randint(0,9007199254740992)
         request.buffer_id = 0xffffffff
diff --git a/tests/flow_matches.py b/tests/flow_matches.py
index 4c6df05..56fd3a7 100644
--- a/tests/flow_matches.py
+++ b/tests/flow_matches.py
@@ -13,9 +13,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 import time
diff --git a/tests/flow_query.py b/tests/flow_query.py
index ba59812..0bbf3ee 100644
--- a/tests/flow_query.py
+++ b/tests/flow_query.py
@@ -68,9 +68,7 @@
 from oftest import config
 import oftest.controller  as controller
 import ofp
-import oftest.message     as message
 import oftest.dataplane   as dataplane
-import oftest.action      as action
 import oftest.action_list as action_list
 import oftest.parse       as parse
 import pktact
@@ -528,38 +526,38 @@
                 pass                    # OUTPUT actions must come last
             elif a == ofp.OFPAT_SET_VLAN_VID:
                if not strip_vlanf:
-                  act = action.action_set_vlan_vid()
+                  act = ofp.action.action_set_vlan_vid()
                   act.vlan_vid = fi.rand_vlan()
                   set_vlanf = True
             elif a == ofp.OFPAT_SET_VLAN_PCP:
                if not strip_vlanf:
-                  act = action.action_set_vlan_pcp()
+                  act = ofp.action.action_set_vlan_pcp()
                   act.vlan_pcp = random.randint(0, (1 << 3) - 1)
                   set_vlanf = True
             elif a == ofp.OFPAT_STRIP_VLAN:
                if not set_vlanf:
-                  act = action.action_strip_vlan()
+                  act = ofp.action.action_strip_vlan()
                   strip_vlanf = True
             elif a == ofp.OFPAT_SET_DL_SRC:
-                act = action.action_set_dl_src()
+                act = ofp.action.action_set_dl_src()
                 act.dl_addr = fi.rand_dl_addr()
             elif a == ofp.OFPAT_SET_DL_DST:
-                act = action.action_set_dl_dst()
+                act = ofp.action.action_set_dl_dst()
                 act.dl_addr = fi.rand_dl_addr()
             elif a == ofp.OFPAT_SET_NW_SRC:
-                act = action.action_set_nw_src()
+                act = ofp.action.action_set_nw_src()
                 act.nw_addr = fi.rand_ip_addr()
             elif a == ofp.OFPAT_SET_NW_DST:
-                act = action.action_set_nw_dst()
+                act = ofp.action.action_set_nw_dst()
                 act.nw_addr = fi.rand_ip_addr()
             elif a == ofp.OFPAT_SET_NW_TOS:
-                act = action.action_set_nw_tos()
+                act = ofp.action.action_set_nw_tos()
                 act.nw_tos = fi.rand_ip_tos()
             elif a == ofp.OFPAT_SET_TP_SRC:
-                act = action.action_set_tp_src()
+                act = ofp.action.action_set_tp_src()
                 act.tp_port = fi.rand_l4_port()
             elif a == ofp.OFPAT_SET_TP_DST:
-                act = action.action_set_tp_dst()
+                act = ofp.action.action_set_tp_dst()
                 act.tp_port = fi.rand_l4_port()
             elif a == ofp.OFPAT_ENQUEUE:
                 pass                    # Enqueue actions must come last
@@ -573,7 +571,7 @@
             # In not forecd, one third of the time, include ENQUEUE actions
             # at end of list
             # At most 1 ENQUEUE action
-            act = action.action_enqueue()
+            act = ofp.action.action_enqueue()
             (act.port, act.queue_id) = rand_pick(valid_queues)
             self.actions.add(act)
         if (((1 << ofp.OFPAT_OUTPUT) & actions_force) != 0 \
@@ -588,7 +586,7 @@
                 else random.randint(1, len(valid_ports))
             port_idxs = port_idxs[0 : n]
             for pi in port_idxs:
-                act = action.action_output()
+                act = ofp.action.action_output()
                 act.port = valid_ports[pi]
                 if act.port != ofp.OFPP_IN_PORT \
                    or wildcard_get(self.match.wildcards, ofp.OFPFW_IN_PORT) == 0:
@@ -638,45 +636,45 @@
                 port_idxs = shuffle(range(len(valid_ports)))
                 port_idxs = port_idxs[0 : random.randint(1, len(valid_ports))]
                 for pi in port_idxs:
-                    act = action.action_output()
+                    act = ofp.action.action_output()
                     act.port = valid_ports[pi]
                     self.actions.add(act)
             elif a == ofp.OFPAT_SET_VLAN_VID:
-                act = action.action_set_vlan_vid()
+                act = ofp.action.action_set_vlan_vid()
                 act.vlan_vid = fi.rand_vlan()
                 self.actions.add(act)
             elif a == ofp.OFPAT_SET_VLAN_PCP:
-                act = action.action_set_vlan_pcp()
+                act = ofp.action.action_set_vlan_pcp()
                 act.vlan_pcp = random.randint(0, (1 << 3) - 1)
             elif a == ofp.OFPAT_STRIP_VLAN:
-                act = action.action_strip_vlan()
+                act = ofp.action.action_strip_vlan()
                 self.actions.add(act)
             elif a == ofp.OFPAT_SET_DL_SRC:
-                act = action.action_set_dl_src()
+                act = ofp.action.action_set_dl_src()
                 act.dl_addr = fi.rand_dl_addr()
                 self.actions.add(act)
             elif a == ofp.OFPAT_SET_DL_DST:
-                act = action.action_set_dl_dst()
+                act = ofp.action.action_set_dl_dst()
                 act.dl_addr = fi.rand_dl_addr()
                 self.actions.add(act)
             elif a == ofp.OFPAT_SET_NW_SRC:
-                act = action.action_set_nw_src()
+                act = ofp.action.action_set_nw_src()
                 act.nw_addr = fi.rand_ip_addr()
                 self.actions.add(act)
             elif a == ofp.OFPAT_SET_NW_DST:
-                act = action.action_set_nw_dst()
+                act = ofp.action.action_set_nw_dst()
                 act.nw_addr = fi.rand_ip_addr()
                 self.actions.add(act)
             elif a == ofp.OFPAT_SET_NW_TOS:
-                act = action.action_set_nw_tos()
+                act = ofp.action.action_set_nw_tos()
                 act.nw_tos = fi.rand_ip_tos()
                 self.actions.add(act)
             elif a == ofp.OFPAT_SET_TP_SRC:
-                act = action.action_set_tp_src()
+                act = ofp.action.action_set_tp_src()
                 act.tp_port = fi.rand_l4_port()
                 self.actions.add(act)
             elif a == ofp.OFPAT_SET_TP_DST:
-                act = action.action_set_tp_dst()
+                act = ofp.action.action_set_tp_dst()
                 act.tp_port = fi.rand_l4_port()
                 self.actions.add(act)
             elif a == ofp.OFPAT_ENQUEUE:
@@ -686,7 +684,7 @@
                 qidxs = shuffle(range(len(valid_queues)))
                 qidxs = qidxs[0 : random.randint(1, len(valid_queues))]
                 for qi in qidxs:
-                    act = action.action_enqueue()
+                    act = ofp.action.action_enqueue()
                     (act.port, act.queue_id) = valid_queues[qi]
                     self.actions.add(act)
 
@@ -1228,7 +1226,7 @@
 
     def features_get(self):
         # Get switch features
-        request = message.features_request()
+        request = ofp.message.features_request()
         (self.sw_features, pkt) = self.controller.transact(request)
         if self.sw_features is None:
             logging.error("Get switch features failed")
@@ -1270,7 +1268,7 @@
 
     def tbl_stats_get(self):
         # Get table stats
-        request = message.table_stats_request()
+        request = ofp.message.table_stats_request()
         (self.tbl_stats, pkt) = self.controller.transact(request)
         if self.tbl_stats is None:
             logging.error("Get table stats failed")
@@ -1297,7 +1295,7 @@
 
     def queue_stats_get(self):
         # Get queue stats
-        request = message.queue_stats_request()
+        request = ofp.message.queue_stats_request()
         request.port_no  = ofp.OFPP_ALL
         request.queue_id = ofp.OFPQ_ALL
         (self.queue_stats, pkt) = self.controller.transact(request)
@@ -1325,7 +1323,7 @@
                 )
 
     def flow_stats_get(self, limit = 10000):
-        request = message.flow_stats_request()
+        request = ofp.message.flow_stats_request()
         query_match           = ofp.ofp_match()
         query_match.wildcards = ofp.OFPFW_ALL
         request.match    = query_match
@@ -1355,7 +1353,7 @@
         return (n > 0)
 
     def flow_add(self, flow_cfg, overlapf = False):
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.command     = ofp.OFPFC_ADD
         flow_mod_msg.buffer_id   = 0xffffffff
         flow_cfg.to_flow_mod_msg(flow_mod_msg)
@@ -1371,7 +1369,7 @@
         return True
 
     def flow_mod(self, flow_cfg, strictf):
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.command     = ofp.OFPFC_MODIFY_STRICT if strictf \
                                    else ofp.OFPFC_MODIFY
         flow_mod_msg.buffer_id   = 0xffffffff
@@ -1384,7 +1382,7 @@
         return True
 
     def flow_del(self, flow_cfg, strictf):
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.command     = ofp.OFPFC_DELETE_STRICT if strictf \
                                    else ofp.OFPFC_DELETE
         flow_mod_msg.buffer_id   = 0xffffffff
@@ -1399,7 +1397,7 @@
         return True
 
     def barrier(self):
-        barrier = message.barrier_request()
+        barrier = ofp.message.barrier_request()
         (resp, pkt) = self.controller.transact(barrier, 30)
         return (resp is not None)
 
diff --git a/tests/flow_stats.py b/tests/flow_stats.py
index 25ba005..abd405c 100644
--- a/tests/flow_stats.py
+++ b/tests/flow_stats.py
@@ -13,9 +13,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 
@@ -74,7 +72,7 @@
     """
 
     def verifyStats(self, flow_mod_msg, match, out_port, test_timeout, packet_count):
-        stat_req = message.flow_stats_request()
+        stat_req = ofp.message.flow_stats_request()
         stat_req.match = match
         stat_req.table_id = 0xff
         stat_req.out_port = out_port
@@ -127,7 +125,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         # build flow
         ingress_port = of_ports[0];
@@ -135,7 +133,7 @@
         logging.info("Ingress " + str(ingress_port) + 
                        " to egress " + str(egress_port))
         match.in_port = ingress_port
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.match = copy.deepcopy(match)
         flow_mod_msg.cookie = random.randint(0,9007199254740992)
         flow_mod_msg.buffer_id = 0xffffffff
@@ -187,13 +185,13 @@
                         "Could not generate flow match from pkt")
         match.in_port = ingress_port
         
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.match = match
         flow_mod_msg.cookie = random.randint(0,9007199254740992)
         flow_mod_msg.buffer_id = 0xffffffff
         flow_mod_msg.idle_timeout = 0
         flow_mod_msg.hard_timeout = 0
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = egress_port
         flow_mod_msg.actions.add(act)
 
@@ -217,7 +215,7 @@
         return total_packets
 
     def verifyStats(self, match, out_port, test_timeout, packet_count):
-        stat_req = message.flow_stats_request()
+        stat_req = ofp.message.flow_stats_request()
         stat_req.match = match
         stat_req.table_id = 0xff
         stat_req.out_port = out_port
@@ -312,13 +310,13 @@
                         "Could not generate flow match from pkt")
         match.in_port = ingress_port
         
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.match = match
         flow_mod_msg.cookie = random.randint(0,9007199254740992)
         flow_mod_msg.buffer_id = 0xffffffff
         flow_mod_msg.idle_timeout = 0
         flow_mod_msg.hard_timeout = 0
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = egress_port
         flow_mod_msg.actions.add(act)
 
@@ -329,7 +327,7 @@
 
     def verifyAggFlowStats(self, match, out_port, test_timeout, 
                            flow_count, packet_count):
-        stat_req = message.aggregate_stats_request()
+        stat_req = ofp.message.aggregate_stats_request()
         stat_req.match = match
         stat_req.table_id = 0xff
         stat_req.out_port = out_port
@@ -415,7 +413,7 @@
         delete_all_flows(self.controller)
         match = ofp.ofp_match()
         match.wildcards = 0
-        stat_req = message.flow_stats_request()
+        stat_req = ofp.message.flow_stats_request()
         stat_req.match = match
         stat_req.table_id = 0xff
         stat_req.out_port = ofp.OFPP_NONE
@@ -435,7 +433,7 @@
         delete_all_flows(self.controller)
         match = ofp.ofp_match()
         match.wildcards = 0
-        stat_req = message.aggregate_stats_request()
+        stat_req = ofp.message.aggregate_stats_request()
         stat_req.match = match
         stat_req.table_id = 0xff
         stat_req.out_port = ofp.OFPP_NONE
@@ -476,7 +474,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None,
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         # build flow
         ingress_port = of_ports[0];
@@ -484,7 +482,7 @@
         logging.info("Ingress " + str(ingress_port) +
                        " to egress " + str(egress_port))
         match.in_port = ingress_port
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.match = copy.deepcopy(match)
         flow_mod_msg.cookie = random.randint(0,9007199254740992)
         flow_mod_msg.buffer_id = 0xffffffff
diff --git a/tests/load.py b/tests/load.py
index a57b51f..066f553 100644
--- a/tests/load.py
+++ b/tests/load.py
@@ -21,9 +21,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 import time
@@ -60,17 +58,17 @@
         match = packet_to_flow_match(self, pkt)
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         match.in_port = lb_port
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = lb_port + 1
 
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
         request.hard_timeout = 2 * barrier_count
 
         request.buffer_id = 0xffffffff
         request.actions.add(act)
 
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = ofp.OFPP_CONTROLLER
         request.actions.add(act)
 
@@ -78,10 +76,10 @@
         do_barrier(self.controller)
 
         # Create packet out and send to port lb_port + 1
-        msg = message.packet_out()
+        msg = ofp.message.packet_out()
         msg.in_port = lb_port
         msg.data = str(pkt)
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = lb_port + 1
         msg.actions.add(act)
         logging.info("Sleeping before starting storm")
@@ -167,10 +165,10 @@
                (simple_eth_packet(pktlen=40), "tiny Ethernet packet")]:
 
                logging.info("PKT OUT test with %s, port %s" % (opt, dp_port))
-               msg = message.packet_out()
+               msg = ofp.message.packet_out()
                msg.in_port = ofp.OFPP_NONE
                msg.data = str(outpkt)
-               act = action.action_output()
+               act = ofp.action.action_output()
                act.port = dp_port
                msg.actions.add(act)
 
@@ -193,15 +191,15 @@
 class FlowModLoad(base_tests.SimpleProtocol):
 
     def checkBarrier(self):
-        msg, pkt = self.controller.transact(message.barrier_request(), timeout=60)
+        msg, pkt = self.controller.transact(ofp.message.barrier_request(), timeout=60)
         self.assertNotEqual(msg, None, "Barrier failed")
         while self.controller.packets:
            msg = self.controller.packets.pop(0)[0]
-           self.assertNotEqual(msg.header.type, message.OFPT_ERROR,
+           self.assertNotEqual(msg.header.type, ofp.message.OFPT_ERROR,
                                "Error received")
 
     def runTest(self):
-        msg, pkt = self.controller.transact(message.table_stats_request())
+        msg, pkt = self.controller.transact(ofp.message.table_stats_request())
 
         # Some switches report an extremely high max_entries that would cause
         # us to run out of memory attempting to create all the flow-mods.
@@ -215,9 +213,9 @@
             match.wildcards = ofp.OFPFW_ALL & ~ofp.OFPFW_DL_VLAN & ~ofp.OFPFW_DL_DST
             match.dl_vlan = ofp.OFP_VLAN_NONE
             match.dl_dst = [0, 1, 2, 3, i / 256, i % 256]
-            act = action.action_output()
+            act = ofp.action.action_output()
             act.port = ofp.OFPP_CONTROLLER
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.command = ofp.OFPFC_ADD
             request.buffer_id = 0xffffffff
             request.priority = num_flows - i
diff --git a/tests/message_types.py b/tests/message_types.py
index c2427d7..b557b7e 100644
--- a/tests/message_types.py
+++ b/tests/message_types.py
@@ -12,9 +12,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 import time
@@ -36,7 +34,7 @@
 
         #Send Hello message
         logging.info("Sending Hello...")
-        request = message.hello()
+        request = ofp.message.hello()
         request.data = 'OpenFlow Will Rule The World'
         self.controller.message_send(request)
 
@@ -61,7 +59,7 @@
         
         #Send Echo Request 
         logging.info("Sending Echo With Data ...")
-        request = message.echo_request()
+        request = ofp.message.echo_request()
         request.data = 'OpenFlow Will Rule The World'
         self.controller.message_send(request)
 
@@ -96,7 +94,7 @@
 
         #Send Echo Request
         logging.info("Sending a Echo request with a version which is not supported by the switch")
-        request=message.echo_request()
+        request=ofp.message.echo_request()
         request.header.version=0  
         self.controller.message_send(request)
 
@@ -125,7 +123,7 @@
 
         # Sending Features_Request
         logging.info("Sending Features_Request...")
-        request = message.features_request()
+        request = ofp.message.features_request()
         (reply, pkt) = self.controller.transact(request)
         self.assertTrue(reply is not None, "Failed to get any reply")
         self.assertEqual(reply.header.type, ofp.OFPT_FEATURES_REPLY,'Response is not Features_reply')
@@ -207,7 +205,7 @@
        
         #Send get_config_request
         logging.info("Sending Get Config Request...")
-        request = message.get_config_request()
+        request = ofp.message.get_config_request()
         (reply, pkt) = self.controller.transact(request)
 
         #Verify get_config_reply is recieved
@@ -243,7 +241,7 @@
 
         #Send get_config_request -- retrive miss_send_len field
         logging.info("Sending Get Config Request ")
-        request = message.get_config_request()
+        request = ofp.message.get_config_request()
         (reply, pkt) = self.controller.transact(request)
         self.assertTrue(reply is not None, "Failed to get any reply")
         self.assertEqual(reply.header.type, ofp.OFPT_GET_CONFIG_REPLY,'Response is not Config Reply')
@@ -255,7 +253,7 @@
 
         #Send set_config_request --- set a different miss_sen_len field and flag
         logging.info("Sending Set Config Request...")
-        req = message.set_config()
+        req = ofp.message.set_config()
         
         if miss_send_len < 65400 :# Max miss_send len is 65535
             req.miss_send_len = miss_send_len + 100
@@ -275,7 +273,7 @@
 
         #Send get_config_request -- verify change came into effect
         logging.info("Sending Get Config Request...")
-        request = message.get_config_request()
+        request = ofp.message.get_config_request()
 
         (rep, pkt) = self.controller.transact(request)
         self.assertTrue(rep is not None, "Failed to get any reply")
@@ -304,7 +302,7 @@
         miss_send_len = [0 ,32 ,64,100]
         
         for bytes in miss_send_len :
-            req = message.set_config()
+            req = ofp.message.set_config()
             req.miss_send_len = bytes
             self.controller.message_send(req)
             sleep(1)
@@ -360,10 +358,10 @@
         for bytes in max_len :
 
             #Insert a flow entry with action --output to controller
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
-            act = action.action_output()
+            act = ofp.action.action_output()
             act.port = ofp.OFPP_CONTROLLER
             act.max_len = bytes 
             request.actions.add(act)
@@ -407,7 +405,7 @@
 
         #Set miss_send_len field 
         logging.info("Sending  set_config_request to set miss_send_len... ")
-        req = message.set_config()
+        req = ofp.message.set_config()
         req.miss_send_len = 65535
         self.controller.message_send(req)
         sleep(1)
@@ -459,9 +457,9 @@
         match.in_port = of_ports[0]
 
         #Insert a flow entry with action output to controller 
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = ofp.OFPP_CONTROLLER
         act.max_len = 65535 # Send the complete packet and do not buffer
         request.actions.add(act)
@@ -674,7 +672,7 @@
         logging.info("Running DescStatsGet test")
         
         logging.info("Sending stats request")
-        request = message.desc_stats_request()
+        request = ofp.message.desc_stats_request()
         response, pkt = self.controller.transact(request)
         self.assertTrue(response is not None,
                         "Did not get reply for desc stats")
@@ -714,7 +712,7 @@
         of_ports.sort()
         
         logging.info("Sending Queue Config Request ...")
-        request = message.queue_get_config_request()
+        request = ofp.message.queue_get_config_request()
         request.port = of_ports[0]
         response, pkt = self.controller.transact(request)
         self.assertTrue(response is not None,
diff --git a/tests/nicira_role.py b/tests/nicira_role.py
index e8ff88e..24606a2 100644
--- a/tests/nicira_role.py
+++ b/tests/nicira_role.py
@@ -7,7 +7,6 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.base_tests as base_tests
 
 from oftest.testutils import *
@@ -31,7 +30,7 @@
         given wildcard index
         """
         logging.info("Sending role request %s" % role)
-        m = message.vendor()
+        m = ofp.message.vendor()
         m.vendor = NXT_VENDOR
         m.data = struct.pack("!LL", NXT_ROLE_REQUEST, NXT_ROLE_VALUE[role])
         return m
diff --git a/tests/openflow_protocol_messages.py b/tests/openflow_protocol_messages.py
index 81b1e05..18a0396 100644
--- a/tests/openflow_protocol_messages.py
+++ b/tests/openflow_protocol_messages.py
@@ -13,9 +13,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 
@@ -41,7 +39,7 @@
         logging.info("Sending Features_Request")
         logging.info("Expecting Features_Reply")
 
-        request = message.features_request()
+        request = ofp.message.features_request()
         self.controller.message_send(request)
         
         (response, pkt) = self.controller.poll(exp_msg=ofp.OFPT_FEATURES_REPLY,
@@ -69,7 +67,7 @@
         logging.info("Sending OFPT_GET_CONFIG_REQUEST ")
         logging.info("Expecting OFPT_GET_CONFIG_REPLY ")
 
-        request = message.get_config_request()
+        request = ofp.message.get_config_request()
         self.controller.message_send(request)
         
         (response, pkt) = self.controller.poll(exp_msg=ofp.OFPT_GET_CONFIG_REPLY,
@@ -219,9 +217,9 @@
                 (simple_eth_packet(), "simple Ethernet packet"),
                 (simple_eth_packet(pktlen=40), "tiny Ethernet packet")]:
             
-                msg = message.packet_out()
+                msg = ofp.message.packet_out()
                 msg.data = str(outpkt)
-                act = action.action_output()
+                act = ofp.action.action_output()
                 act.port = dp_port
                 msg.actions.add(act)
 
@@ -297,7 +295,7 @@
         logging.info("Expecting a Hello on the control plane with version--1.0.0")
         
         #Send Hello message
-        request = message.hello()
+        request = ofp.message.hello()
         (response, pkt) = self.controller.poll(exp_msg=ofp.OFPT_HELLO,
                                                timeout=1)
         self.assertTrue(response is not None, 
@@ -320,7 +318,7 @@
         logging.info("Expecting a Echo Reply with version--1.0.0 and same xid")
 
         # Send echo_request
-        request = message.echo_request()
+        request = ofp.message.echo_request()
         (response, pkt) = self.controller.transact(request)
         self.assertEqual(response.header.type, ofp.OFPT_ECHO_REPLY,'response is not echo_reply')
         self.assertEqual(request.header.xid, response.header.xid,
@@ -343,7 +341,7 @@
         logging.info("Expecting a Barrier Reply with same xid")
 
         #Send Barrier Request
-        request = message.barrier_request()
+        request = ofp.message.barrier_request()
         (response,pkt) = self.controller.transact(request)
         self.assertEqual(response.header.type, ofp.OFPT_BARRIER_REPLY,'response is not barrier_reply')
         self.assertEqual(request.header.xid, response.header.xid,
diff --git a/tests/pktact.py b/tests/pktact.py
index c965f89..9407292 100644
--- a/tests/pktact.py
+++ b/tests/pktact.py
@@ -22,9 +22,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 import basic # for IterCases
@@ -106,7 +104,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for idx in range(len(of_ports)):
             delete_all_flows(self.controller)
@@ -118,7 +116,7 @@
 
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
 
             request.buffer_id = 0xffffffff
@@ -175,14 +173,14 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None,
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         delete_all_flows(self.controller)
 
         ingress_port = of_ports[0]
         match.in_port = ingress_port
 
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
 
         request.buffer_id = 0xffffffff
@@ -247,13 +245,13 @@
 
         # Get queue stats from switch
         
-        request = message.queue_stats_request()
+        request = ofp.message.queue_stats_request()
         request.port_no  = ofp.OFPP_ALL
         request.queue_id = ofp.OFPQ_ALL
         (queue_stats, p) = self.controller.transact(request)
         self.assertNotEqual(queue_stats, None, "Queue stats request failed")
 
-        act = action.action_enqueue()
+        act = ofp.action.action_enqueue()
 
         for idx in range(len(of_ports)):
             ingress_port = of_ports[idx]
@@ -269,7 +267,7 @@
 
                 match.in_port = ingress_port
                 
-                request = message.flow_mod()
+                request = ofp.message.flow_mod()
                 request.match = match
 
                 request.buffer_id = 0xffffffff
@@ -283,7 +281,7 @@
 
                 # Get current stats for selected egress queue
 
-                request = message.queue_stats_request()
+                request = ofp.message.queue_stats_request()
                 request.port_no  = egress_port
                 request.queue_id = egress_queue_id
                 (qs_before, p) = self.controller.transact(request)
@@ -315,7 +313,7 @@
 
                 # Get current stats for selected egress queue again
 
-                request = message.queue_stats_request()
+                request = ofp.message.queue_stats_request()
                 request.port_no  = egress_port
                 request.queue_id = egress_queue_id
                 (qs_after, p) = self.controller.transact(request)
@@ -369,7 +367,7 @@
 
         # Get queue stats from switch
         
-        request = message.queue_stats_request()
+        request = ofp.message.queue_stats_request()
         request.port_no  = ofp.OFPP_CONTROLLER
         request.queue_id = ofp.OFPQ_ALL
         (queue_stats, p) = self.controller.transact(request)
@@ -378,7 +376,7 @@
             skip_message_emit(self, "Enqueue packet to controller")
             return
 
-        act = action.action_enqueue()
+        act = ofp.action.action_enqueue()
 
         for idx in range(len(of_ports)):
             ingress_port = of_ports[idx]
@@ -398,7 +396,7 @@
 
                 match.in_port = ingress_port
                 
-                request = message.flow_mod()
+                request = ofp.message.flow_mod()
                 request.match = match
 
                 request.buffer_id = 0xffffffff
@@ -412,7 +410,7 @@
 
                 # Get current stats for selected egress queue
 
-                request = message.queue_stats_request()
+                request = ofp.message.queue_stats_request()
                 request.port_no  = egress_port
                 request.queue_id = egress_queue_id
                 (qs_before, p) = self.controller.transact(request)
@@ -454,7 +452,7 @@
 
                 # Get current stats for selected egress queue again
 
-                request = message.queue_stats_request()
+                request = ofp.message.queue_stats_request()
                 request.port_no  = egress_port
                 request.queue_id = egress_queue_id
                 (qs_after, p) = self.controller.transact(request)
@@ -503,7 +501,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for idx in range(len(of_ports)):
             delete_all_flows(self.controller)
@@ -517,7 +515,7 @@
 
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = egress_port1
@@ -561,7 +559,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for ingress_port in of_ports:
             delete_all_flows(self.controller)
@@ -570,7 +568,7 @@
                            " all non-ingress ports")
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
             for egress_port in of_ports:
@@ -613,7 +611,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for ingress_port in of_ports:
             delete_all_flows(self.controller)
@@ -621,7 +619,7 @@
             logging.info("Ingress " + str(ingress_port) + " to all ports")
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
             for egress_port in of_ports:
@@ -661,7 +659,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for of_port in of_ports:
             # Clear relevant bits that might block ports
@@ -677,7 +675,7 @@
             logging.info("Ingress " + str(ingress_port) + " to all ports")
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_FLOOD
@@ -715,7 +713,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for ingress_port in of_ports:
             delete_all_flows(self.controller)
@@ -723,7 +721,7 @@
             logging.info("Ingress " + str(ingress_port) + " to all ports")
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_FLOOD
@@ -760,7 +758,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for ingress_port in of_ports:
             delete_all_flows(self.controller)
@@ -768,7 +766,7 @@
             logging.info("Ingress " + str(ingress_port) + " to all ports")
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_ALL
@@ -806,7 +804,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         for ingress_port in of_ports:
             delete_all_flows(self.controller)
@@ -814,7 +812,7 @@
             logging.info("Ingress " + str(ingress_port) + " to all ports")
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_ALL
@@ -853,7 +851,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         # Clear OFPPC_NO_FLOOD on each port
         for of_port in of_ports:
@@ -873,7 +871,7 @@
 
             match.in_port = ingress_port
 
-            request = message.flow_mod()
+            request = ofp.message.flow_mod()
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_FLOOD
@@ -1265,7 +1263,7 @@
         pkt = simple_tcp_packet(pktlen=len)
         exp_pkt = simple_tcp_packet(pktlen=len_w_vid, dl_vlan_enable=True, 
                                     dl_vlan=new_vid)
-        vid_act = action.action_set_vlan_vid()
+        vid_act = ofp.action.action_set_vlan_vid()
         vid_act.vlan_vid = new_vid
 
         flow_match_test(self, config["port_map"], pkt=pkt, 
@@ -1320,7 +1318,7 @@
 
         pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=old_vid)
         exp_pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=new_vid)
-        vid_act = action.action_set_vlan_vid()
+        vid_act = ofp.action.action_set_vlan_vid()
         vid_act.vlan_vid = new_vid
 
         flow_match_test(self, config["port_map"], pkt=pkt, exp_pkt=exp_pkt,
@@ -1337,7 +1335,7 @@
 
 class ModifyVIDWithTagMatchWildcarded(BaseMatchCase):
     """
-    With vlan ID and priority wildcarded, perform SET_VLAN_VID action.
+    With vlan ID and priority wildcarded, perform SET_VLAN_VID ofp.action.
     The same flow should match on both untagged and tagged packets.
     """
     def runTest(self):
@@ -1364,7 +1362,7 @@
                                     dl_vlan=new_vid)
         wildcards = (required_wildcards(self) | ofp.OFPFW_DL_VLAN |
                      ofp.OFPFW_DL_VLAN_PCP)
-        vid_act = action.action_set_vlan_vid()
+        vid_act = ofp.action.action_set_vlan_vid()
         vid_act.vlan_vid = new_vid
         request = flow_msg_create(self, untagged_pkt, ing_port=ing_port, 
                                   wildcards=wildcards, egr_ports=egr_ports,
@@ -1396,7 +1394,7 @@
 
         pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=vid, dl_vlan_pcp=old_vlan_pcp)
         exp_pkt = simple_tcp_packet(dl_vlan_enable=True, dl_vlan=vid, dl_vlan_pcp=new_vlan_pcp)
-        vid_act = action.action_set_vlan_pcp()
+        vid_act = ofp.action.action_set_vlan_pcp()
         vid_act.vlan_pcp = new_vlan_pcp
 
         flow_match_test(self, config["port_map"], pkt=pkt, exp_pkt=exp_pkt,
@@ -1418,7 +1416,7 @@
         pkt = simple_tcp_packet(pktlen=len_w_vid, dl_vlan_enable=True, 
                                 dl_vlan=old_vid)
         exp_pkt = simple_tcp_packet(pktlen=len)
-        vid_act = action.action_strip_vlan()
+        vid_act = ofp.action.action_strip_vlan()
 
         flow_match_test(self, config["port_map"], pkt=pkt, exp_pkt=exp_pkt,
                         action_list=[vid_act])
@@ -1442,7 +1440,7 @@
         exp_pkt = simple_tcp_packet(pktlen=len_untagged)
         wildcards = (required_wildcards(self) | ofp.OFPFW_DL_VLAN |
                      ofp.OFPFW_DL_VLAN_PCP)
-        vid_act = action.action_strip_vlan()
+        vid_act = ofp.action.action_strip_vlan()
 
         flow_match_test(self, config["port_map"], 
                         wildcards=wildcards,
@@ -1751,8 +1749,8 @@
         logging.info("Running flow toggle with %d flows, %d iterations" %
                        (flow_count, iter_count))
         acts = []
-        acts.append(action.action_output())
-        acts.append(action.action_output())
+        acts.append(ofp.action.action_output())
+        acts.append(ofp.action.action_output())
     
         of_ports = config["port_map"].keys()
         if len(of_ports) < 3:
@@ -1771,7 +1769,7 @@
         for toggle in range(2):
             for f_idx in range(flow_count):
                 pkt = simple_tcp_packet(tcp_sport=f_idx)
-                msg = message.flow_mod()
+                msg = ofp.message.flow_mod()
                 match = packet_to_flow_match(self, pkt)
                 match.in_port = of_ports[2]
                 match.wildcards = wildcards
@@ -1943,11 +1941,11 @@
                     else:
                         new = ~orig & mask
                     setattr(match, field, new)
-                request = message.flow_mod()
+                request = ofp.message.flow_mod()
                 request.match = match
                 request.buffer_id = 0xffffffff
                 request.priority = priority
-                act = action.action_output()
+                act = ofp.action.action_output()
                 act.port = output_port
                 request.actions.add(act)
                 logging.info("Inserting flow")
@@ -2073,7 +2071,7 @@
 
         match.in_port = ingress_port
 
-        request = message.flow_mod()
+        request = ofp.message.flow_mod()
         request.match = match
         request.priority = 1
 
@@ -2087,13 +2085,13 @@
 
         # This flow speeds up negative tests
         logging.info("Inserting catch-all flow")
-        request2 = message.flow_mod()
+        request2 = ofp.message.flow_mod()
         request2.match = self.createMatch()
         request2.match.wildcards &= ~ofp.OFPFW_IN_PORT
         request2.match.in_port = ingress_port
 
         request2.priority = 0
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = ofp.OFPP_IN_PORT
         request2.actions.add(act)
         self.controller.message_send(request2)
@@ -2183,7 +2181,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         
         def testPacket(title, pkt, result):
-            act = action.action_output()
+            act = ofp.action.action_output()
             pkts = [
                 [title, pkt, result]
             ]
@@ -2379,7 +2377,7 @@
             self.assertTrue(match is not None, 
                             "Could not generate flow match from pkt")
             match.wildcards &= ~ofp.OFPFW_IN_PORT
-            act = action.action_output()
+            act = ofp.action.action_output()
             
             self.testPktsAgainstFlow(
                 [[
@@ -2415,7 +2413,7 @@
                     scapy.Ether(dst=dl_dst, src=dl_src, type=len(llc)) / llc,
                     self.RESULT_MATCH,
                 ]],
-                action.action_output(), match
+                ofp.action.action_output(), match
             )
     
             # Corrupt length field
@@ -2426,7 +2424,7 @@
                     scapy.Ether(dst=dl_dst, src=dl_src, type=ethLen) / llc,
                     self.RESULT_ANY,
                 ]],
-                action.action_output(), match
+                ofp.action.action_output(), match
             )
             
         def testPacketEthSrcDstTypeMatch(title, llc, is_snap_ip):
@@ -2448,7 +2446,7 @@
                     scapy.Ether(dst=dl_dst, src=dl_src, type=len(llc)) / llc,
                     is_match,
                 ]],
-                action.action_output(), match
+                ofp.action.action_output(), match
             )
     
             # Corrupt length field
@@ -2459,7 +2457,7 @@
                     scapy.Ether(dst=dl_dst, src=dl_src, type=ethLen) / llc,
                     self.RESULT_ANY,
                 ]],
-                action.action_output(), match
+                ofp.action.action_output(), match
             )
 
         def testPacket(title, llc, is_snap_ip):
@@ -2541,7 +2539,7 @@
                 scapy.Ether(dst=dl_dst, src=dl_src, type=len(llc)) / llc,
                 result,
             ])
-            act = action.action_output()
+            act = ofp.action.action_output()
             self.testPktsAgainstFlow(pkts, act, match)
     
         def testPacketEthTypeNotEth(title, llc, is_snap):
@@ -2561,7 +2559,7 @@
                 scapy.Ether(dst=dl_dst, src=dl_src, type=len(llc)) / llc,
                 result,
             ])
-            act = action.action_output()
+            act = ofp.action.action_output()
             self.testPktsAgainstFlow(pkts, act, match)
     
         def testPacket(title, llc, is_snap):
@@ -2650,7 +2648,7 @@
                 result,
             ])
     
-            act = action.action_output()
+            act = ofp.action.action_output()
             self.testPktsAgainstFlow(pkts, act, match)
             
         testPacket("Basic ARP",
@@ -2695,7 +2693,7 @@
                 result,
             ])
     
-            act = action.action_output()
+            act = ofp.action.action_output()
             self.testPktsAgainstFlow(pkts, act, match)
 
         testPacket("Basic MAC matching - IPv4 payload",
@@ -2792,7 +2790,7 @@
                 result,
             ])
     
-            act = action.action_output()
+            act = ofp.action.action_output()
             self.testPktsAgainstFlow(pkts, act, match)
         testPacket("Ether matching with double VLAN tag - Wrong type match",
             self.createMatch(dl_dst=parse_mac(dl_dst), dl_src=parse_mac(dl_src),
diff --git a/tests/port_stats.py b/tests/port_stats.py
index d2ade19..4aaf4ed 100644
--- a/tests/port_stats.py
+++ b/tests/port_stats.py
@@ -12,9 +12,7 @@
 from oftest import config
 import oftest.controller as controller
 import ofp
-import oftest.message as message
 import oftest.dataplane as dataplane
-import oftest.action as action
 import oftest.parse as parse
 import oftest.base_tests as base_tests
 
@@ -62,7 +60,7 @@
                     'Response packet does not match send packet')
 
 def getStats(obj, port):
-    stat_req = message.port_stats_request()
+    stat_req = ofp.message.port_stats_request()
     stat_req.port_no = port
 
     logging.info("Sending stats request")
@@ -79,7 +77,7 @@
     return packet_sent, packet_recv
 
 def getAllStats(obj):
-    stat_req = message.port_stats_request()
+    stat_req = ofp.message.port_stats_request()
     stat_req.port_no = ofp.OFPP_NONE
 
     logging.info("Sending all port stats request")
@@ -94,7 +92,7 @@
     return stats
 
 def verifyStats(obj, port, test_timeout, packet_sent, packet_recv):
-    stat_req = message.port_stats_request()
+    stat_req = ofp.message.port_stats_request()
     stat_req.port_no = port
 
     all_packets_received = 0
@@ -157,7 +155,7 @@
         match.wildcards &= ~ofp.OFPFW_IN_PORT
         self.assertTrue(match is not None, 
                         "Could not generate flow match from pkt")
-        act = action.action_output()
+        act = ofp.action.action_output()
 
         # build flow
         ingress_port = of_ports[0];
@@ -165,7 +163,7 @@
         logging.info("Ingress " + str(ingress_port) + 
                        " to egress " + str(egress_port))
         match.in_port = ingress_port
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.match = match
         flow_mod_msg.cookie = random.randint(0,9007199254740992)
         flow_mod_msg.buffer_id = 0xffffffff
@@ -210,13 +208,13 @@
                         "Could not generate flow match from pkt")
         match.in_port = ingress_port
         
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.match = match
         flow_mod_msg.cookie = random.randint(0,9007199254740992)
         flow_mod_msg.buffer_id = 0xffffffff
         flow_mod_msg.idle_timeout = 0
         flow_mod_msg.hard_timeout = 0
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = egress_port
         flow_mod_msg.actions.add(act)
 
@@ -287,13 +285,13 @@
                         "Could not generate flow match from pkt")
         match.in_port = ingress_port
         
-        flow_mod_msg = message.flow_mod()
+        flow_mod_msg = ofp.message.flow_mod()
         flow_mod_msg.match = match
         flow_mod_msg.cookie = random.randint(0,9007199254740992)
         flow_mod_msg.buffer_id = 0xffffffff
         flow_mod_msg.idle_timeout = 0
         flow_mod_msg.hard_timeout = 0
-        act = action.action_output()
+        act = ofp.action.action_output()
         act.port = egress_port
         flow_mod_msg.actions.add(act)
 
