* added checks for illegal arguments
* removed superflous asserts
* adds tests for the product class.