Rewritten the Product Model; Bugfixes; added lots of tests