use ReaderT to keep token available