Better Errors

Created more error classes for specific problems so devs can cite and catch different types rather than catch one and check the message.