add tap handler