why do we need to use exception throwing here? Feels like this and the caller `gc_manifests/5` could be pure code otherwise.