setup: add keyboard interrupt handling; cleanup