applied to the "engine" 0.9.6 branch rather than the non-engine one. This merges all the changes back across so they are in-sync w.r.t. these changes.