Add set() and a cache