add requires
add exceptions
add verify