implement event support on client side