adding async support for listener