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)
