Type classes as implicits and objects