Draft: this will be split into multiple commits and rebased.