Added lots of comments at the top of classes