refact, doc, add Token type