update listeners to be more effective