derive Monoid instance automatically