slowly figuring out caching. Man what a huge pain, but I think I've more or less got it