Add caching

Pulled out the repeated use of request and added a cache
Actually that shouldn't be there yet. I will back out.