Added lots of comments and examples