Started working on fleshing out a caching impl
Initial pass at adding caching support...now it needs some tests