Exception Refactoring

I feel like the exception class names should end in "Exception", otherwise it just feels odd to me. I've also abstracted some of the exception code to reduce repeated code.