add rudimentary model caching