add comments
add test