monoid now memoized and kept locally

only the args needed to regenerate are shipped around.