added a very sparse listener architecture