code: def contract(self, process):
          
          print('TODO: process check = ', process)
          print(self.name, ' contracted to ->', self.parent)
          return self.parent
docs: this contracts the current node to its parent and 
          then either caclulates the params and values if all 
          child data exists, OR uses the default parent data.
          (In real terms it returns the parent and recalculates)
          TODO = processes need to be recalculated