Cleaned up the code a bit, and documented.