Added a lot of comments, especially in the Button class