add some comments for learning