typeclasses expanded