add monoid trait and fold left version of is