maybe I should just use managed pointers