Cleaning up the code to add more annotations

Preparing for `@EventSubscriber` annotation
Adding prototype to support events
Events are working
added missing file
improved test
Merge branch 'feature/events' into develop