Strategy pattern

Strategy pattern