extend from AbstractToken
consolidate validation into a new class