Refactoring and rearchitecting