(+) saves the caches in case of failure
(=) cleanup