This Merge Request is meant to be squashed in to a single commit.
It's broken into several commits for ease of review. But intermediate states do not build.
Also, the resulting build runs but looks ugly. That's expected. Further improvements coming in !758 (merged), whose build should preferrably be used for testing purposes.