[#2] Built-in cache based on Shelve