strategy pattern add