cache now returns a copy