add monadic return