add unit tests
add arg parsing