Rework source order so that we can have --rev and --flush objects. Closes #1