Added Documentation to the program as well as many comments to clarify
the flow of execution.