Bugs fixed, I think, and passes checks. Need documentation.