Closes #4 - Refactor custom exceptions to include messages