typeclass all the things