This may solve a lot of problem, like #15 ,for currently Listener, I have to use a BlockingQueue to implement some pull style code.