diff --git a/unoptimized_lr/simple_lr_automaton.py b/unoptimized_lr/simple_lr_automaton.py
index f6107f99f2566f1a409a09738f001df5cde2441b..5d2bd4a5eb99ef68388440bb0a50066c70019342 100644
--- a/unoptimized_lr/simple_lr_automaton.py
+++ b/unoptimized_lr/simple_lr_automaton.py
@@ -180,7 +180,8 @@ class ParametrizationConstants():
     def __init__(self, *, number_of_terminals, number_of_nonterminals,
                           number_of_states, number_of_reduce_rules,
                           length_of_longest_rule_RHS, maximum_number_of_stack_items,
-                          longest_serialized_parse_tree):
+                          longest_serialized_parse_tree,
+                          generating_tree):
         self.number_of_terminals           = number_of_terminals
         self.number_of_nonterminals        = number_of_nonterminals
         self.number_of_states              = number_of_states
@@ -188,6 +189,7 @@ class ParametrizationConstants():
         self.length_of_longest_rule_RHS    = length_of_longest_rule_RHS
         self.maximum_number_of_stack_items = maximum_number_of_stack_items
         self.longest_serialized_parse_tree = longest_serialized_parse_tree
+        self.generating_tree = generating_tree
 
         # We calculate the ceil(log_2())'s here all in one go:
 
@@ -215,7 +217,7 @@ class ParametrizationConstants():
 
 class LR_automaton_internal(Layout):
     def __init__(self, *, parameters):
-        super().__init__([
+        interfaces = [
             # TABLES
             ("ShiftReduce_table_bus"),
             ("GOTO_table_bus"),
@@ -223,20 +225,24 @@ class LR_automaton_internal(Layout):
 
             # STACKS
             ("parse_stack_bus"),
-            ("index_stack_bus"),
-        ])
+        ]
+        if(parameters.generating_tree == True):
+            interfaces.append(("index_stack_bus"))
+        super().__init__(interfaces)
 
 
 class LR_automaton_external(Layout):
     def __init__(self, *, parameters):
-        super().__init__([
+        interfaces = [
             # INPUT
             ("input_stream"),
 
             # OUTPUTS
-            ("serialization_bus"),
             ("sideband_bus")
-        ])
+        ]
+        if (parameters.generating_tree == True):
+            interfaces.append(("serialization_bus"))
+        super().__init__(interfaces)
 
 class SimpleLRAutomaton(Elaboratable):
     def __init__(self, *, lr_tables, parameters):