diff --git a/python_arborist.py b/python_arborist.py
index 8485a5ea3f63c92d69da27191687d5abe81014db..f486236f1e7d8a08529595905551708502ea154d 100644
--- a/python_arborist.py
+++ b/python_arborist.py
@@ -330,25 +330,29 @@ def deserializer(serialized_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
-                print("        BACKREFERENCE_INDEX IS", backreference_physical_index)
-
-                #this_subnode = list_of_nodes[serialized_array]
-                subnodes_array.append(serialized_array[sub_idx])
+                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(serialized_array[sub_idx])
+                subnodes_array.append(TreeNode(serialized_array[sub_idx],[]))
 
 
         print("        AND THESE SUBNODES ARE:",subnodes_array)
         print("")
 
         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)
 
-    return new_node
+