add basic caching
add basic caching