updated with comments and more

updated with comments