type class abstracting over type classes
adapt the Monoid example to use `TypeClass`
derive Monoid instance automatically
remove useless imports