validation strategy pattern