added more comments, most methods are now explained more