Added a bunch of documentation to top of source code files