use token offset instead of pointer to make clear that token strings are still on buffer