don't use setjmp/longjmp, or problems if an interrupt routine