Inline documentation.
Inline documentation for exceptions.
Move events to their own interface and class.
Add events to Application.
Inline documentation.
Refactored events.