add some comments
add some documentation