strategies refactoring