start filling in Monoid implementation