independent events monad