add token refresh logic