avoiding allocations of PointerReader and PointerBuilder