anchor.diff:                     RiakcPid :: pid()) ->
       [binary()] | {error, term()}.
   gc_manifests(Manifests, RiakObject, Bucket, Key, RiakcPid) ->
  -    catch lists:foldl(fun(M, UUIDs) -> 
  -                          gc_manifest(M, RiakObject, Bucket, Key, RiakcPid, UUIDs) 
  -                      end, [], Manifests).
  +    F = fun(M, {error, _}=Error) ->
  +               Error;
  +           (M, UUIDs) -> 
  +               gc_manifest(M, RiakObject, Bucket, Key, RiakcPid, UUIDs) 
  +        end, 
  +    lists:foldl(F, [], Manifests).
   
   -spec gc_manifest(M :: lfs_manifest(),
                     RiakObject :: riakc_obj:riakc_obj(),
  
positive.code:     {ok, [binary()]} | {error, term()}.
  gc_active_manifests(Bucket, Key, RiakcPid, UUIDs) ->
     case get_active_manifests(Bucket, Key, RiakcPid) of
          {ok, _RiakObject, []} -> {ok, UUIDs};
          {ok, RiakObject, Manifests} ->
              UnchangedManifests = clean_manifests(Manifests, RiakcPid),
              case gc_manifests(UnchangedManifests, RiakObject, Bucket, Key, RiakcPid) of
                  {error, _}=Error -> Error;
                  NewUUIDs -> gc_active_manifests(Bucket, Key, RiakcPid, UUIDs ++ NewUUIDs)
              end;
          {error, notfound} ->{ok, UUIDs};
          {error, _}=Error -> Error
      end.
  
  -spec get_active_manifests(binary(), binary(), pid()) ->
  
negative.code:                           {error, term()}.
  active_manifests({ok, RiakObject, Manifests}) -> 
      {ok, RiakObject, riak_cs_manifest_utils:active_manifests(Manifests)};
  active_manifests({error, _}=Error) -> 
      Error.
  
  -spec clean_manifests([lfs_manifest()], pid()) -> [lfs_manifest()].
  clean_manifests(ActiveManifests, RiakcPid) ->
  