refactor propagateStage() method