only need Monoid I think.