The main changes are discussed here, although the final implemention was delivered in a different PR: