Changed to a threaded model for improved performance and safety if listener drops off.