I do have to remove those bad parts right away in the -maintenance method. First off, I'm going to assume that by "remove" you don't just mean remove from the array, but are talking about dealloc'ing the bad parts. Are you sure about that? Is it not enough that at that point things are set up so that they will be freed in the near future? Do their dealloc methods have side effects that need to happen at that precise moment?