refactoring generally done, parent/child go hierarchy implemented, tests passing