better typeclass