start implementing cache