Second commit.

Just because it's huge and I'm in a hurry.