Commit first draft.

- Register listenrs with on
- Ungetister listeners with off
- Fire events with emit