keyboard interrupt and cancel added - still buggy.