strategy refactoring