Rather than having one gigantic function that has all of the things to execute in order, we should probably have some sort of infrastructure that allows actions to be scheduled - with dependencies. As the first step, we would figure out what needed to be done - based on disperse.conf and any buildsystem-specific files. We'd add the tasks to a queue and then report on their progress - until one fails.