Add event components

Add event components and unit tests for them.
Merge pull request #3 from maroyaka/add-event-components

Add event components