finish refactoring propagateStages