Use events instead of futures