add some validation
add tests