Move to pointers to save precious memory

Breaks the exiting contract, but we'll solve it with a version bump.