create separate double pointer version