please wait I will add some code comments