Okay, I just discovered there is another kind of loop that can arise. Consider: Package: A Package: B Version: 1 Depends: A Package B: Version: 2 Conflicts: A Commands to order: Remove A Install B What do you do? Remove A will fail because B depends on it, install B will fail because it conflicts with A. And as with the perl loop removing B will cause problems for B's dependants. Jason