Added Strategy design pattern