add tap function