add fn-monoid