add some comments for making clear such as definitions of fields