compilers are independent classes; added custom exceptions