Caching strategy cleanup

Fixes #48

Common base class for many of the redundant logic