refactoring with different strategy