Strategy

strategy pattern