Currently we are doing a deep copy of the state between each node. This is very expensive and non-optimal. Since the state rarely change between nodes (usually only 1-2 values do), we should implement a data structure that can handle this correctly.