use with-monad to bind monad functions