add usage
basic implemented
add test