diff --git a/unoptimized_lr/simple_lr_tables.py b/unoptimized_lr/simple_lr_tables.py
index 30319a80537e078458428a6719e0c83e1c0948eb..6fbb423feb162fef1b4985829f876e545f718caf 100644
--- a/unoptimized_lr/simple_lr_tables.py
+++ b/unoptimized_lr/simple_lr_tables.py
@@ -24,7 +24,7 @@ from functools import reduce
 
 
 
-class TableBusLayout(Layout):
+class ShiftReduceTableBusLayout(Layout):
     def __init__(self, *, row_input_width, column_input_width, output_width):
         super().__init__([
             # INPUTS
@@ -40,7 +40,7 @@ class TableBusLayout(Layout):
 
         ])
 
-class TableBus(Record):
+class ShiftReduceTableBus(Record):
     def __init__(self, *, row_input_width, column_input_width, output_width):
         super().__init__(TableBusLayout(row_input_width=row_input_width, column_input_width=column_input_width, output_width=output_width))
 
@@ -116,6 +116,25 @@ class LRTable(Elaboratable):
         return m
 
 
+class GOTOTableBusLayout(Layout):
+    def __init__(self, *, row_input_width, column_input_width, output_width):
+        super().__init__([
+            # INPUTS
+            ("row_idx",     unsigned(row_input_width)),    # FROM SOURCE
+            ("col_idx",     unsigned(column_input_width)), # FROM SOURCE
+            ("valid_in",    1),                            # FROM SOURCE
+            ("ready_in",    1),        # FROM DEST
+
+            # OUTPUTS
+            ("output_data", unsigned(output_width)), # TO DEST
+            ("valid_out",   1), # TO DEST
+            ("ready_out",   1), # TO SOURCE
+
+        ])
+
+class GOTOTableBus(Record):
+    def __init__(self, *, row_input_width, column_input_width, output_width):
+        super().__init__(TableBusLayout(row_input_width=row_input_width, column_input_width=column_input_width, output_width=output_width))
 
 class GOTOtable(Elaboratable):
     def __init__(self, *,  lang_params, input_array):