monad thinking process