Strategy pattern added