Add design for traits, generic functions, bounded polymorphism and coercion