revise
add comments