if (TransactionManager->MetaIndexParser->Exists(Target.MetaKey) == false)
         {
            // optional targets that we do not have in the Release file are skipped
-           if (hasHashes == true && Target.IsOptional)
+           if (Target.IsOptional)
            {
               new CleanupItem(Owner, TransactionManager, Target);
               continue;
       }
       else
       {
+        // if the source wanted these files they should have given us a release file :/
+        if (Target.IsOptional)
+        {
+           new CleanupItem(Owner, TransactionManager, Target);
+           continue;
+        }
+
         // if we have no file to patch, no point in trying
         trypdiff &= (GetExistingFilename(GetFinalFileNameFromURI(Target.URI)).empty() == false);
       }