add Cache, untested