diff --git a/python_arborist.py b/python_arborist.py
index 79e4ac168436d28777d59e0bd137e2676e3098b7..41dea0709a71d1fa6f8f6513ab93138bece8fcaa 100644
--- a/python_arborist.py
+++ b/python_arborist.py
@@ -307,6 +307,65 @@ def run_the_sim():
     for x in trace:
         print(x)
 
+top_bit = (1<<16)
+
+
+def deserializer(serialized_array, last_idx_written):
+    random_triggered = False
+    list_of_nodes = []
+    physical_to_logical = {}
+    physical_idx = 0
+    logical_idx  = 0
+    while (physical_idx < last_idx_written + 1):
+        new_element     = serialized_array[physical_idx]
+        print("The element at the current index", physical_idx, "is:", hex(new_element))
+        number_subnodes = serialized_array[physical_idx + 1]
+        print("    WITH", number_subnodes, "SUBNODES")
+        if (number_subnodes < 1):
+            print("")
+            print("MALFORMED AT IDX", physical_idx)
+            print("TOTAL LEN OF ARRAY IS", len(serialized_array))
+            break
+
+        subnodes_array = []
+        for sub_idx in range(physical_idx + 2, physical_idx + 2 + number_subnodes):
+            if (serialized_array[sub_idx] & top_bit != 0): # index reference
+                backreference_physical_index = serialized_array[sub_idx] - top_bit
+                backreference_logical_index = physical_to_logical[backreference_physical_index]
+                print("        BACKREFERENCE PHYS INDEX IS", backreference_physical_index)
+                print("        BACKREFERENCE LOGICAL INDEX IS", backreference_logical_index)
+                                #this_subnode = list_of_nodes[serialized_array]
+                subnodes_array.append(list_of_nodes[backreference_logical_index])
+            else:                                          # new subnode altogether
+                print("        ABINITIO SUBNODE IS", serialized_array[sub_idx])
+                subnodes_array.append(TreeNode(serialized_array[sub_idx],[]))
+
+
+        print("        AND THESE SUBNODES ARE:")
+        for idx,x in enumerate(subnodes_array):
+            print("        SUBNODE NUMBER",idx)
+            walk_the_tree(x, level=3)
+            print("")
+        print("")
+
+        if (random.randint(0,10) == 0):
+            false_element = random.choices(list_of_nonterminals + list_of_terminals)[0]
+
+            if (false_element != new_element):
+                print("RANDOM TRIGGERED! EXPECT FALSE RESULT!", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
+                random_triggered = True
+                new_element = false_element
+
+        new_node = TreeNode(new_element, subnodes_array)
+
+        list_of_nodes.append(new_node)
+
+        physical_to_logical[physical_idx] = logical_idx
+        physical_idx += 2 + number_subnodes
+        logical_idx  += 1
+    print("physical to logical mapping is", physical_to_logical)
+    return (new_node, random_triggered)
+
 
 tokens ={
 "BOTTOM": 0x5a00,
@@ -377,64 +436,6 @@ print("DESER TREE FINAL is " '[{}]'.format(', '.join(hex(x) for x in serialized_
 
 
 
-top_bit = (1<<16)
-
-
-def deserializer(serialized_array, last_idx_written):
-    random_triggered = False
-    list_of_nodes = []
-    physical_to_logical = {}
-    physical_idx = 0
-    logical_idx  = 0
-    while (physical_idx < last_idx_written + 1):
-        new_element     = serialized_array[physical_idx]
-        print("The element at the current index", physical_idx, "is:", hex(new_element))
-        number_subnodes = serialized_array[physical_idx + 1]
-        print("    WITH", number_subnodes, "SUBNODES")
-        if (number_subnodes < 1):
-            print("")
-            print("MALFORMED AT IDX", physical_idx)
-            print("TOTAL LEN OF ARRAY IS", len(serialized_array))
-            break
-
-        subnodes_array = []
-        for sub_idx in range(physical_idx + 2, physical_idx + 2 + number_subnodes):
-            if (serialized_array[sub_idx] & top_bit != 0): # index reference
-                backreference_physical_index = serialized_array[sub_idx] - top_bit
-                backreference_logical_index = physical_to_logical[backreference_physical_index]
-                print("        BACKREFERENCE PHYS INDEX IS", backreference_physical_index)
-                print("        BACKREFERENCE LOGICAL INDEX IS", backreference_logical_index)
-                                #this_subnode = list_of_nodes[serialized_array]
-                subnodes_array.append(list_of_nodes[backreference_logical_index])
-            else:                                          # new subnode altogether
-                print("        ABINITIO SUBNODE IS", serialized_array[sub_idx])
-                subnodes_array.append(TreeNode(serialized_array[sub_idx],[]))
-
-
-        print("        AND THESE SUBNODES ARE:")
-        for idx,x in enumerate(subnodes_array):
-            print("        SUBNODE NUMBER",idx)
-            walk_the_tree(x, level=3)
-            print("")
-        print("")
-
-        if (random.randint(0,10) == 0):
-            false_element = random.choices(list_of_nonterminals + list_of_terminals)[0]
-
-            if (false_element != new_element):
-                print("RANDOM TRIGGERED! EXPECT FALSE RESULT!", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
-                random_triggered = True
-                new_element = false_element
-
-        new_node = TreeNode(new_element, subnodes_array)
-
-        list_of_nodes.append(new_node)
-
-        physical_to_logical[physical_idx] = logical_idx
-        physical_idx += 2 + number_subnodes
-        logical_idx  += 1
-    print("physical to logical mapping is", physical_to_logical)
-    return (new_node, random_triggered)