introducing listeners client side