Use a signal rather than in-line event handling