add pointer abstraction