1. added an error handling mechanism that makes use of exception to handle invalid situation. 2. every time that something goes bad, a proper event is triggered