add strategie pattern