[fix] circular references with listeners