Change architecture and add NestedSet.