updated with comments at top