added event and exception class