lots of additional work w/ monoids and monads