add functions that support pointer(wip)
fixup! add functions that support pointer(wip)