token is optional