A lot of changes, and a tiny bit of testing. (Oh how I am going to hate myself tomorrow).