diff --git a/src/python/of10/action_list.py b/src/python/of10/action_list.py
index fbbddea..5fd57f0 100644
--- a/src/python/of10/action_list.py
+++ b/src/python/of10/action_list.py
@@ -108,11 +108,11 @@
             bytes_done += hdr.len
         return cur_string
 
-    def add(self, action):
+    def append(self, action):
         """
-        Add an action to an action list
+        Append an action to an action list
 
-        @param action The action to add
+        @param action The action to append
 
         """
         if not isinstance(action, action_class_list):
diff --git a/src/python/oftest/testutils.py b/src/python/oftest/testutils.py
index fd7d4b2..90d17ef 100644
--- a/src/python/oftest/testutils.py
+++ b/src/python/oftest/testutils.py
@@ -584,7 +584,7 @@
     if action_list is not None:
         for act in action_list:
             logging.debug("Adding action " + act.show())
-            request.actions.add(act)
+            request.actions.append(act)
 
     # Set up output/enqueue action if directed
     if egr_queue is not None:
@@ -593,12 +593,12 @@
         for egr_port in egr_port_list:
             act.port = egr_port
             act.queue_id = egr_queue
-            request.actions.add(act)
+            request.actions.append(act)
     elif egr_ports is not None:
         for egr_port in egr_port_list:
             act = of10.action.action_output()
             act.port = egr_port
-            request.actions.add(act)
+            request.actions.append(act)
 
     logging.debug(request.show())
 
@@ -679,14 +679,14 @@
     msg.data = str(pkt)
     if action_list is not None:
         for act in action_list:
-            msg.actions.add(act)
+            msg.actions.append(act)
 
     # Set up output action
     if egr_ports is not None:
         for egr_port in egr_ports:
             act = of10.action.action_output()
             act.port = egr_port
-            msg.actions.add(act)
+            msg.actions.append(act)
 
     logging.debug(msg.show())
     parent.controller.message_send(msg)
diff --git a/tests/FuncUtils.py b/tests/FuncUtils.py
index 31ccd19..f090d20 100644
--- a/tests/FuncUtils.py
+++ b/tests/FuncUtils.py
@@ -28,7 +28,7 @@
         msg.priority = priority
     act = ofp.action.output()
     act.port = port 
-    msg.actions.add(act)
+    msg.actions.append(act)
     self.controller.message_send(msg)
     do_barrier(self.controller)
 
@@ -330,7 +330,7 @@
     msg5.buffer_id = 0xffffffff
     act5 = ofp.action.output()
     act5.port = egress_port
-    msg5.actions.add(act5)
+    msg5.actions.append(act5)
 
     if priority != None :
         msg5.priority = priority
@@ -352,7 +352,7 @@
     msg8.buffer_id = 0xffffffff
     act8 = ofp.action.output()
     act8.port = of_ports[2]
-    msg8.actions.add(act8)
+    msg8.actions.append(act8)
 
     if priority != None :
         msg8.priority = priority
@@ -377,7 +377,7 @@
     act = ofp.action.enqueue()
     act.port     = egress_port
     act.queue_id = egress_queue_id
-    request.actions.add(act)
+    request.actions.append(act)
     
     logging.info("Inserting flow")
     self.controller.message_send(request)
diff --git a/tests/actions.py b/tests/actions.py
index ac4bc17..5b9828c 100644
--- a/tests/actions.py
+++ b/tests/actions.py
@@ -154,7 +154,7 @@
         request.match = match
         request.match.wildcards = ofp.OFPFW_ALL&~ofp.OFPFW_IN_PORT
         act.port = ofp.OFPP_ALL
-        request.actions.add(act)
+        request.actions.append(act)
         
         logging.info("Inserting flow")
         self.controller.message_send(request)
@@ -205,7 +205,7 @@
             request = ofp.message.flow_mod()
             request.match = match
             act.port = ofp.OFPP_CONTROLLER
-            request.actions.add(act)
+            request.actions.append(act)
 
             logging.info("Inserting flow")
             self.controller.message_send(request)
@@ -256,7 +256,7 @@
             request = ofp.message.flow_mod()
             request.match = match
             act.port = ofp.OFPP_LOCAL
-            request.actions.add(act)
+            request.actions.append(act)
 
             logging.info("Inserting flow")
             self.controller.message_send(request)
@@ -305,7 +305,7 @@
         request.match = match
         request.match.wildcards = ofp.OFPFW_ALL&~ofp.OFPFW_IN_PORT
         act.port = ofp.OFPP_FLOOD
-        request.actions.add(act)
+        request.actions.append(act)
         
         logging.info("Inserting flow")
         self.controller.message_send(request)
@@ -355,7 +355,7 @@
         request.match = match
         act.port = ofp.OFPP_IN_PORT
             
-        request.actions.add(act)
+        request.actions.append(act)
         logging.info("Inserting flow")
         self.controller.message_send(request)
         do_barrier(self.controller)
@@ -399,7 +399,7 @@
         pkt_out.in_port = of_ports[0]
         act = ofp.action.output()
         act.port = ofp.OFPP_TABLE
-        pkt_out.actions.add(act)
+        pkt_out.actions.append(act)
         self.controller.message_send(pkt_out)
 
         #Verifying packet out message recieved on the expected dataplane port. 
diff --git a/tests/bsn_mirror.py b/tests/bsn_mirror.py
index 3c79ffd..79e9b26 100644
--- a/tests/bsn_mirror.py
+++ b/tests/bsn_mirror.py
@@ -143,9 +143,9 @@
         act3.port = ports[1]
         flow_mod = ofp.message.flow_mod()
         flow_mod.match = match
-        flow_mod.actions.add(act1)
-        flow_mod.actions.add(act2)
-        flow_mod.actions.add(act3)
+        flow_mod.actions.append(act1)
+        flow_mod.actions.append(act2)
+        flow_mod.actions.append(act3)
         delete_all_flows(self.controller)
         self.controller.message_send(flow_mod)
         do_barrier(self.controller)
diff --git a/tests/detailed_contr_sw_messages.py b/tests/detailed_contr_sw_messages.py
index 9fc8359..8cb8baa 100644
--- a/tests/detailed_contr_sw_messages.py
+++ b/tests/detailed_contr_sw_messages.py
@@ -61,7 +61,7 @@
        
         act3 = ofp.action.output()
         act3.port = of_ports[1]
-        msg3.actions.add(act3)
+        msg3.actions.append(act3)
         self.controller.message_send(msg3)
         do_barrier(self.controller)
 
@@ -183,7 +183,7 @@
         act = ofp.action.output()
         act.port = of_ports[1]
         
-        request.actions.add(act)
+        request.actions.append(act)
         logging.info("Inserting flow")
         self.controller.message_send(request)
 
@@ -228,7 +228,7 @@
         request.buffer_id = 0xffffffff
         act3 = ofp.action.output()
         act3.port = of_ports[1]
-        request.actions.add(act3)
+        request.actions.append(act3)
 
         logging.info("Inserting flow")
         self.controller.message_send(request)
@@ -438,7 +438,7 @@
         request.flags = request.flags|ofp.OFPFF_EMERG|ofp.OFPFF_SEND_FLOW_REM
         act = ofp.action.output()
         act.port = of_ports[1]
-        request.actions.add(act)
+        request.actions.append(act)
 
         self.controller.message_send(request)
         
@@ -755,7 +755,7 @@
         msg3.match = match3
         act3 = ofp.action.output()
         act3.port = of_ports[1]
-        msg3.actions.add(act3)
+        msg3.actions.append(act3)
 
         self.controller.message_send(msg3)
         do_barrier(self.controller)
diff --git a/tests/flow_expire.py b/tests/flow_expire.py
index ab19ec1..70ab10e 100644
--- a/tests/flow_expire.py
+++ b/tests/flow_expire.py
@@ -62,7 +62,7 @@
         request.idle_timeout = 1
         request.flags |= ofp.OFPFF_SEND_FLOW_REM
         act.port = egress_port
-        request.actions.add(act)
+        request.actions.append(act)
         
         logging.info("Inserting flow")
         self.controller.message_send(request)
diff --git a/tests/flow_query.py b/tests/flow_query.py
index d9dbe3c..ee72fc3 100644
--- a/tests/flow_query.py
+++ b/tests/flow_query.py
@@ -562,7 +562,7 @@
             elif a == ofp.OFPAT_ENQUEUE:
                 pass                    # Enqueue actions must come last
             if act:
-                self.actions.add(act)
+                self.actions.append(act)
                 
         p = random.randint(1, 100)
         if (((1 << ofp.OFPAT_ENQUEUE) & actions_force) != 0 or p <= 33) \
@@ -573,7 +573,7 @@
             # At most 1 ENQUEUE action
             act = ofp.action.enqueue()
             (act.port, act.queue_id) = rand_pick(valid_queues)
-            self.actions.add(act)
+            self.actions.append(act)
         if (((1 << ofp.OFPAT_OUTPUT) & actions_force) != 0 \
             or (p > 33 and p <= 66) \
             ) \
@@ -591,7 +591,7 @@
                 if act.port != ofp.OFPP_IN_PORT \
                    or wildcard_get(self.match.wildcards, ofp.OFPFW_IN_PORT) == 0:
                     # OUTPUT(IN_PORT) only valid if OFPFW_IN_PORT not wildcarded
-                    self.actions.add(act)
+                    self.actions.append(act)
         else:
             # One third of the time, include neither
             pass
@@ -638,45 +638,45 @@
                 for pi in port_idxs:
                     act = ofp.action.output()
                     act.port = valid_ports[pi]
-                    self.actions.add(act)
+                    self.actions.append(act)
             elif a == ofp.OFPAT_SET_VLAN_VID:
                 act = ofp.action.set_vlan_vid()
                 act.vlan_vid = fi.rand_vlan()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_SET_VLAN_PCP:
                 act = ofp.action.set_vlan_pcp()
                 act.vlan_pcp = random.randint(0, (1 << 3) - 1)
             elif a == ofp.OFPAT_STRIP_VLAN:
                 act = ofp.action.strip_vlan()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_SET_DL_SRC:
                 act = ofp.action.set_dl_src()
                 act.dl_addr = fi.rand_dl_addr()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_SET_DL_DST:
                 act = ofp.action.set_dl_dst()
                 act.dl_addr = fi.rand_dl_addr()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_SET_NW_SRC:
                 act = ofp.action.set_nw_src()
                 act.nw_addr = fi.rand_ip_addr()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_SET_NW_DST:
                 act = ofp.action.set_nw_dst()
                 act.nw_addr = fi.rand_ip_addr()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_SET_NW_TOS:
                 act = ofp.action.set_nw_tos()
                 act.nw_tos = fi.rand_ip_tos()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_SET_TP_SRC:
                 act = ofp.action.set_tp_src()
                 act.tp_port = fi.rand_l4_port()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_SET_TP_DST:
                 act = ofp.action.set_tp_dst()
                 act.tp_port = fi.rand_l4_port()
-                self.actions.add(act)
+                self.actions.append(act)
             elif a == ofp.OFPAT_ENQUEUE:
                 # TBD - Enqueue actions are clustered in list, spread them out?
                 if len(valid_queues) == 0:
@@ -686,7 +686,7 @@
                 for qi in qidxs:
                     act = ofp.action.enqueue()
                     (act.port, act.queue_id) = valid_queues[qi]
-                    self.actions.add(act)
+                    self.actions.append(act)
 
         return self
 
diff --git a/tests/flow_stats.py b/tests/flow_stats.py
index eec92a6..9f71616 100644
--- a/tests/flow_stats.py
+++ b/tests/flow_stats.py
@@ -141,7 +141,7 @@
         flow_mod_msg.hard_timeout = 65000
         flow_mod_msg.priority = 100
         act.port = egress_port
-        flow_mod_msg.actions.add(act)
+        flow_mod_msg.actions.append(act)
        
         # send flow
         logging.info("Inserting flow")
@@ -193,7 +193,7 @@
         flow_mod_msg.hard_timeout = 0
         act = ofp.action.output()
         act.port = egress_port
-        flow_mod_msg.actions.add(act)
+        flow_mod_msg.actions.append(act)
 
         logging.info("Ingress " + str(ingress_port) + 
                        " to egress " + str(egress_port))
@@ -318,7 +318,7 @@
         flow_mod_msg.hard_timeout = 0
         act = ofp.action.output()
         act.port = egress_port
-        flow_mod_msg.actions.add(act)
+        flow_mod_msg.actions.append(act)
 
         logging.info("Ingress " + str(ingress_port) + 
                        " to egress " + str(egress_port))
@@ -491,7 +491,7 @@
         flow_mod_msg.priority = 100
         flow_mod_msg.flags = ofp.OFPFF_SEND_FLOW_REM
         act.port = egress_port
-        flow_mod_msg.actions.add(act)
+        flow_mod_msg.actions.append(act)
 
         # send flow
         logging.info("Inserting flow")
diff --git a/tests/load.py b/tests/load.py
index ed90dbf..76c3f45 100644
--- a/tests/load.py
+++ b/tests/load.py
@@ -66,11 +66,11 @@
         request.hard_timeout = 2 * barrier_count
 
         request.buffer_id = 0xffffffff
-        request.actions.add(act)
+        request.actions.append(act)
 
         act = ofp.action.output()
         act.port = ofp.OFPP_CONTROLLER
-        request.actions.add(act)
+        request.actions.append(act)
 
         self.controller.message_send(request)
         do_barrier(self.controller)
@@ -81,7 +81,7 @@
         msg.data = str(pkt)
         act = ofp.action.output()
         act.port = lb_port + 1
-        msg.actions.add(act)
+        msg.actions.append(act)
         logging.info("Sleeping before starting storm")
         time.sleep(1) # Root causing issue with fast disconnects
         logging.info("Sending packet out to %d" % (lb_port + 1))
@@ -170,7 +170,7 @@
                msg.data = str(outpkt)
                act = ofp.action.output()
                act.port = dp_port
-               msg.actions.add(act)
+               msg.actions.append(act)
 
                logging.info("PacketOutLoad to: " + str(dp_port))
                for count in range(100):
@@ -221,7 +221,7 @@
             request.priority = num_flows - i
             request.out_port = ofp.OFPP_NONE
             request.match = match
-            request.actions.add(act)
+            request.actions.append(act)
             requests.append(request)
 
         for i in range(3):
diff --git a/tests/message_types.py b/tests/message_types.py
index c05ea6a..a7f7447 100644
--- a/tests/message_types.py
+++ b/tests/message_types.py
@@ -364,7 +364,7 @@
             act = ofp.action.output()
             act.port = ofp.OFPP_CONTROLLER
             act.max_len = bytes 
-            request.actions.add(act)
+            request.actions.append(act)
             
             logging.info("Inserting flow....")
             self.controller.message_send(request)
@@ -462,7 +462,7 @@
         act = ofp.action.output()
         act.port = ofp.OFPP_CONTROLLER
         act.max_len = 65535 # Send the complete packet and do not buffer
-        request.actions.add(act)
+        request.actions.append(act)
 
         logging.info("Inserting flow....")
         self.controller.message_send(request)
diff --git a/tests/openflow_protocol_messages.py b/tests/openflow_protocol_messages.py
index 028d939..7ab49a2 100644
--- a/tests/openflow_protocol_messages.py
+++ b/tests/openflow_protocol_messages.py
@@ -221,7 +221,7 @@
                 msg.data = str(outpkt)
                 act = ofp.action.output()
                 act.port = dp_port
-                msg.actions.add(act)
+                msg.actions.append(act)
 
                 logging.info("PacketOut to: " + str(dp_port))
                 self.controller.message_send(msg)
diff --git a/tests/pktact.py b/tests/pktact.py
index dea77df..9e81af6 100644
--- a/tests/pktact.py
+++ b/tests/pktact.py
@@ -121,7 +121,7 @@
 
             request.buffer_id = 0xffffffff
             act.port = egress_port
-            request.actions.add(act)
+            request.actions.append(act)
 
             logging.info("Inserting flow")
             self.controller.message_send(request)
@@ -186,7 +186,7 @@
         request.buffer_id = 0xffffffff
         act.port = ofp.OFPP_CONTROLLER
         act.max_len = 65535
-        request.actions.add(act)
+        request.actions.append(act)
 
         logging.info("Inserting flow")
         self.controller.message_send(request)
@@ -273,7 +273,7 @@
                 request.buffer_id = 0xffffffff
                 act.port     = egress_port
                 act.queue_id = egress_queue_id
-                request.actions.add(act)
+                request.actions.append(act)
 
                 logging.info("Inserting flow")
                 self.controller.message_send(request)
@@ -402,7 +402,7 @@
                 request.buffer_id = 0xffffffff
                 act.port     = egress_port
                 act.queue_id = egress_queue_id
-                request.actions.add(act)
+                request.actions.append(act)
 
                 logging.info("Inserting flow")
                 self.controller.message_send(request)
@@ -519,9 +519,9 @@
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = egress_port1
-            request.actions.add(act)
+            request.actions.append(act)
             act.port = egress_port2
-            request.actions.add(act)
+            request.actions.append(act)
             # logging.info(request.show())
 
             logging.info("Inserting flow")
@@ -575,7 +575,7 @@
                 if egress_port == ingress_port:
                     continue
                 act.port = egress_port
-                request.actions.add(act)
+                request.actions.append(act)
             logging.debug(request.show())
 
             logging.info("Inserting flow")
@@ -627,7 +627,7 @@
                     act.port = ofp.OFPP_IN_PORT
                 else:
                     act.port = egress_port
-                request.actions.add(act)
+                request.actions.append(act)
             # logging.info(request.show())
 
             logging.info("Inserting flow")
@@ -679,7 +679,7 @@
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_FLOOD
-            request.actions.add(act)
+            request.actions.append(act)
             logging.info(request.show())
 
             logging.info("Inserting flow")
@@ -725,9 +725,9 @@
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_FLOOD
-            request.actions.add(act)
+            request.actions.append(act)
             act.port = ofp.OFPP_IN_PORT
-            request.actions.add(act)
+            request.actions.append(act)
             logging.info(request.show())
 
             logging.info("Inserting flow")
@@ -770,7 +770,7 @@
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_ALL
-            request.actions.add(act)
+            request.actions.append(act)
             logging.info(request.show())
 
             logging.info("Inserting flow")
@@ -816,9 +816,9 @@
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_ALL
-            request.actions.add(act)
+            request.actions.append(act)
             act.port = ofp.OFPP_IN_PORT
-            request.actions.add(act)
+            request.actions.append(act)
             logging.info(request.show())
 
             logging.info("Inserting flow")
@@ -875,7 +875,7 @@
             request.match = match
             request.buffer_id = 0xffffffff
             act.port = ofp.OFPP_FLOOD
-            request.actions.add(act)
+            request.actions.append(act)
             logging.info(request.show())
 
             logging.info("Inserting flow")
@@ -1776,7 +1776,7 @@
                 msg.match = match
                 msg.buffer_id = 0xffffffff
                 msg.command = ofp.OFPFC_ADD
-                msg.actions.add(acts[toggle])
+                msg.actions.append(acts[toggle])
                 flows[toggle].append(msg)
 
         # Show two sample flows
@@ -1947,7 +1947,7 @@
                 request.priority = priority
                 act = ofp.action.output()
                 act.port = output_port
-                request.actions.add(act)
+                request.actions.append(act)
                 logging.info("Inserting flow")
                 self.controller.message_send(request)
 
@@ -2078,7 +2078,7 @@
         request.buffer_id = 0xffffffff
         for act in acts:
             act.port = egress_port
-            request.actions.add(act)
+            request.actions.append(act)
 
         logging.info("Inserting flow")
         self.controller.message_send(request)
@@ -2093,7 +2093,7 @@
         request2.priority = 0
         act = ofp.action.output()
         act.port = ofp.OFPP_IN_PORT
-        request2.actions.add(act)
+        request2.actions.append(act)
         self.controller.message_send(request2)
 
         do_barrier(self.controller)
diff --git a/tests/port_stats.py b/tests/port_stats.py
index 8aeefa4..b4815c2 100644
--- a/tests/port_stats.py
+++ b/tests/port_stats.py
@@ -170,7 +170,7 @@
         flow_mod_msg.idle_timeout = 0
         flow_mod_msg.hard_timeout = 0
         act.port = egress_port
-        flow_mod_msg.actions.add(act)
+        flow_mod_msg.actions.append(act)
        
         # send flow
         logging.info("Inserting flow")
@@ -216,7 +216,7 @@
         flow_mod_msg.hard_timeout = 0
         act = ofp.action.output()
         act.port = egress_port
-        flow_mod_msg.actions.add(act)
+        flow_mod_msg.actions.append(act)
 
         logging.info("Ingress " + str(ingress_port) + 
                        " to egress " + str(egress_port))
@@ -293,7 +293,7 @@
         flow_mod_msg.hard_timeout = 0
         act = ofp.action.output()
         act.port = egress_port
-        flow_mod_msg.actions.add(act)
+        flow_mod_msg.actions.append(act)
 
         logging.info("Ingress " + str(ingress_port) + 
                        " to egress " + str(egress_port))
