Relax constraint from Monoid to Semigroup