Added comments to explain what parts need to be done and roughly how they should be done