monads
tidy