added monoid class