Add ListenerManager

Close #17