Setting a trait inside its own listener has a bad "smell".  There's probably a better way of handling this situation.