please add comment to each method