write my own tap method