off-by-one error
add SIGTERM handling