Fix the way listeners are created
Use concurrentHashMap