architectural refactoring