token abstraction