add some comments, resist errors