Re: Refactoring Semigroup/Monoid