I will def add some comments, I am going to work on this for a couple of hours now