Rework the Token & TokenTypes into a single type with stronger typing.