add comments version 2, examples and more concise struct of the program needed