Add in caching and throttling