begin of the strategy pattern