exceptions must derive from BaseException