uses add_loc instead of tap