Full Comments and Doxygen

Fully comment the source code, with both method comments and in-method/inline comments. Generate doxygen for the code