cleanup
allow user interrupt