improve tap event