Based on C++ Language Tutorial at http://www.cplusplus.com/doc/tutorial/program_structure/