added full listener support