future monad outline