allow custom position fn