implement basic caching
test cache