updated listener callback