re-factor InvalidValueException class

new methods and moved all exception handling for invalid values to
argument classes only