WIP; refactoring token classes to reduce code duplication