Added plenty of comments