needle pointer function