refactor
add more usage docs