added more comments for learning