diff --git a/tests/basic.py b/tests/basic.py
index a1540a1..3fa902b 100644
--- a/tests/basic.py
+++ b/tests/basic.py
@@ -203,9 +203,8 @@
 
                logging.info("PKT OUT test with %s, port %s" % (opt, dp_port))
                msg = message.packet_out(in_port=ofp.OFPP_NONE,
-                                        data=str(outpkt))
-               act = action.action_output(port=dp_port)
-               msg.actions.add(act)
+                                        data=str(outpkt),
+                                        actions=[action.action_output(port=dp_port)])
 
                logging.info("PacketOut to: " + str(dp_port))
                self.controller.message_send(msg)
@@ -255,11 +254,10 @@
                dp_ports = of_ports[0:num_ports]
                logging.info("PKT OUT test with " + opt +
                                  ", ports " + str(dp_ports))
+               actions = [action.action_output(port=port) for port in dp_ports]
                msg = message.packet_out(in_port=ofp.OFPP_NONE,
-                                        data=str(outpkt))
-               for i in range(0,num_ports):
-                  act = action.action_output(port=dp_ports[i])
-                  msg.actions.add(act)
+                                        data=str(outpkt),
+                                        actions=actions)
 
                logging.info("PacketOut to: " + str(dp_ports))
                self.controller.message_send(msg)
diff --git a/tools/munger/scripts/message_gen.py b/tools/munger/scripts/message_gen.py
index 34036d3..053170a 100644
--- a/tools/munger/scripts/message_gen.py
+++ b/tools/munger/scripts/message_gen.py
@@ -302,10 +302,7 @@
     _p2("self.header = ofp_header()")
     _p2("self.header.type = " + msg_name)
     if has_list:
-        if list_type == None:
-            _p2('self.' + list_var + ' = []')
-        else:
-            _p2('self.' + list_var + ' = ' + list_type + '()')
+        _p2('self.' + list_var + ' = []')
     if has_string:
         _p2('self.data = ""')
     _p2('for (k, v) in kwargs.items():')
@@ -313,6 +310,9 @@
     _p4('setattr(self, k, v)')
     _p3('else:')
     _p4('raise NameError("field %s does not exist in %s" % (k, self.__class__))')
+    if has_list and list_type != None:
+        _p2('# Coerce keyword arg into list type')
+        _p2('self.%(list_var)s = %(list_type)s(self.%(list_var)s)' % dict(list_type=list_type, list_var=list_var))
 
     print """
 
