Added a lot of comments on public methods