better error handling using lisp condition system