add ^C functionality