implemented tap listener