clean code
add docs