Added a lot more comments