daily build
* use listener class
* minor code tidy up