Why not just a method on the monoid, so you don't need to allocate one if you already have it?