handle cache better