Adding strategy pattern