Final Commit.

All requirements met. Documentation and comments added.