WIP: Merging in progress. Not tested.
WIP: Merged and updated changes. Tested.