wip: start returning to the "typeclass" style