introduced typeclasses