Started refactoring out into a Composite pattern