provide default implementation for the 3-element monoid addition, so it's less nasty for implementations