Another huge pack of changes, check diffs