Reworked exceptions to be more modular/intelligent