refactor InvalidValueException to InvalidArgumentException