completed Types and Typeclasses