A lot of class-level documentation added.