make token a struct