threw some user defined exceptions in there