better exception handling, now raising custom error messages!