if you have a Monoid, you should leave it. Semigroup is a superclass, and it seems you have a zero.