Very large amount of changes that I'd rather not try to explain.