Better error handling. Separated out Exception classes to their own files