Add caching

Pulled out the repeated use of request and added a cache
Yes good point! That will teach me to just copy what was already there.