refactoring and restructuring