adding comments and explanations