After the main branch is up to date, merge all of dev_phase2 changes into the main branch.
We might define a safe sequence of changes to try to merge, although since all changes are interdependent, we should try first to merge everything to avoid any breakages.