Strategy pattern added with test