Strategy refactoring v1
Strategy refactoring v2