extracted dist-upgrade into its own role