feature complete
add docs