rework param definition to use typeclass