proper equality testing for listener
method name reflects behaviour better
call listeners from inside runnable