stopReadingEvents channels handled in separate variables to avoid sharing, cleanups in the code