distinguish the concepts between 'term' and 'token'
merge after distinguish