first commit with strategy pattern