add cache factory