Add lots of comments describing how the program works