first design pattern - strategy