add shared_ptr for ::get(), linked with cache