I added some comments, needs squashed