use raiseexception (or at least add the exception msg)