some modified
add some comment