few comments are added for elaboration