better parameters for validate() and compute() + allow type inheritance
move Type into the module types + clean up