refactor, to use single time listener class