refactoring entire object hierarchy (flattening out the object model)