diff --git a/src/python/oftest/testutils.py b/src/python/oftest/testutils.py
index 45e5357..6892b39 100644
--- a/src/python/oftest/testutils.py
+++ b/src/python/oftest/testutils.py
@@ -970,17 +970,6 @@
     except:
         return default
 
-def test_param_get_table():
-    """
-    Return table_id to use.
-
-    The default table_id is 0.
-    This can be overridden by specifying "table" in --test-params.
-
-    e.g: --test-params table=1
-    """
-    return test_param_get("table", 0)
-
 def action_generate(parent, field_to_mod, mod_field_vals):
     """
     Create an action to modify the field indicated in field_to_mod
diff --git a/tests-1.3/actions.py b/tests-1.3/actions.py
index 77c1d94..9128f7b 100644
--- a/tests-1.3/actions.py
+++ b/tests-1.3/actions.py
@@ -36,7 +36,7 @@
 
         logging.info("Inserting flow")
         request = ofp.message.flow_add(
-                table_id=test_param_get_table(),
+                table_id=test_param_get("table", 0),
                 match=packet_to_flow_match(self, pkt),
                 instructions=[
                     ofp.instruction.apply_actions(actions)],
@@ -71,7 +71,7 @@
 
         logging.info("Inserting flow")
         request = ofp.message.flow_add(
-                table_id=test_param_get_table(),
+                table_id=test_param_get("table", 0),
                 match=packet_to_flow_match(self, pkt),
                 instructions=[
                     ofp.instruction.apply_actions(actions)],
@@ -103,7 +103,7 @@
 
         logging.info("Inserting flow")
         request = ofp.message.flow_add(
-                table_id=test_param_get_table(),
+                table_id=test_param_get("table", 0),
                 match=packet_to_flow_match(self, pkt),
                 instructions=[
                     ofp.instruction.apply_actions(actions)],
diff --git a/tests-1.3/basic.py b/tests-1.3/basic.py
index 2d0f8e8..d0ad11f 100644
--- a/tests-1.3/basic.py
+++ b/tests-1.3/basic.py
@@ -94,7 +94,7 @@
 
         for out_port in ports:
             request = ofp.message.flow_add(
-                    table_id=test_param_get_table(),
+                    table_id=test_param_get("table", 0),
                     cookie=42,
                     match=match,
                     instructions=[
@@ -134,7 +134,7 @@
 
         for out_port in ports:
             request = ofp.message.flow_add(
-                    table_id=test_param_get_table(),
+                    table_id=test_param_get("table", 0),
                     cookie=42,
                     instructions=[
                         ofp.instruction.apply_actions(
@@ -171,7 +171,7 @@
         match = packet_to_flow_match(self, parsed_pkt)
 
         request = ofp.message.flow_add(
-            table_id=test_param_get_table(),
+            table_id=test_param_get("table", 0),
             cookie=42,
             match=match,
             instructions=[
@@ -206,7 +206,7 @@
         pkt = str(simple_tcp_packet())
 
         request = ofp.message.flow_add(
-            table_id=test_param_get_table(),
+            table_id=test_param_get("table", 0),
             cookie=42,
             instructions=[
                 ofp.instruction.apply_actions(
@@ -241,7 +241,7 @@
         pkt = str(parsed_pkt)
 
         request = ofp.message.flow_add(
-            table_id=test_param_get_table(),
+            table_id=test_param_get("table", 0),
             cookie=42,
             instructions=[
                 ofp.instruction.apply_actions(
diff --git a/tests-1.3/bsn_in_ports.py b/tests-1.3/bsn_in_ports.py
index 0442b85..296a846 100644
--- a/tests-1.3/bsn_in_ports.py
+++ b/tests-1.3/bsn_in_ports.py
@@ -20,6 +20,7 @@
     """
     def runTest(self):
         in_port1, in_port2, out_port, bad_port = openflow_ports(4)
+        table_id = test_param_get("table", 0)
 
         # See the loxigen bsn_in_ports input file for encoding details
         match = ofp.match([
@@ -34,7 +35,7 @@
 
         logging.info("Inserting flow sending matching packets to port %d", out_port)
         request = ofp.message.flow_add(
-                table_id=test_param_get_table(),
+                table_id=table_id,
                 match=match,
                 instructions=[
                     ofp.instruction.apply_actions(
@@ -48,7 +49,7 @@
 
         logging.info("Inserting match-all flow sending packets to controller")
         request = ofp.message.flow_add(
-            table_id=test_param_get_table(),
+            table_id=table_id,
             instructions=[
                 ofp.instruction.apply_actions(
                     actions=[
diff --git a/tests-1.3/flow_stats.py b/tests-1.3/flow_stats.py
index 3853888..02b9cb6 100644
--- a/tests-1.3/flow_stats.py
+++ b/tests-1.3/flow_stats.py
@@ -24,7 +24,7 @@
     """
     def runTest(self):
         port1, port2, port3 = openflow_ports(3)
-        table_id = test_param_get_table()
+        table_id = test_param_get("table", 0)
         delete_all_flows(self.controller)
 
         flow1 = ofp.message.flow_add(
@@ -151,9 +151,10 @@
 
         # Generate a flow for each cookie
         flows = {}
+        table_id = test_param_get("table", 0)
         for idx, cookie in enumerate(cookies):
             flows[cookie] = ofp.message.flow_add(
-                table_id=test_param_get_table(),
+                table_id=table_id,
                 cookie=cookie,
                 match=ofp.match([ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT|idx)]),
                 buffer_id=ofp.OFP_NO_BUFFER)
diff --git a/tests-1.3/match.py b/tests-1.3/match.py
index b0a5167..68436d3 100644
--- a/tests-1.3/match.py
+++ b/tests-1.3/match.py
@@ -35,7 +35,7 @@
         packet data.
         """
         in_port, out_port = openflow_ports(2)
-        table_id = test_param_get_table()
+        table_id = test_param_get("table", 0)
 
         logging.info("Running match test for %s", match.show())
 
@@ -89,7 +89,7 @@
     """
     def runTest(self):
         in_port, out_port, bad_port = openflow_ports(3)
-        table_id = test_param_get_table()
+        table_id = test_param_get("table", 0)
 
         match = ofp.match([
             ofp.oxm.in_port(in_port)
diff --git a/tests-1.3/pktin_match.py b/tests-1.3/pktin_match.py
index 17da936..efc064b 100644
--- a/tests-1.3/pktin_match.py
+++ b/tests-1.3/pktin_match.py
@@ -34,7 +34,7 @@
 
         logging.debug("Inserting match-all flow sending packets to controller")
         request = ofp.message.flow_add(
-            table_id=test_param_get_table(),
+            table_id=test_param_get("table", 0),
             instructions=[
                 ofp.instruction.apply_actions(
                     actions=[
