reimplement token