agreed, except for the exception class which should be the more specific ``InvalidArgumentException`` IMO