update
add more endpoints
add some unit tests