add some comment
add unit test