Change structure and usage of elements
Use reference instead of pointer to tokens
Provide an interface similar to the standard library