Lots and lots of changes. I'll document them later.