Things have to work

We avoid backing out by computing as much as 
possible beforehand:
disk space needed
collision issues
dependency issues
so that we can fail gracefully.

It works because we have enough information available
like dependencies, conflicts, etc.