some refactoring and allow Exception to be based to ensure[Not]