added token generation