mandatory refactoring