add underscore
add input sanity checking