Fix method visibility
Add a first draft for event templates
Implement template-based and generic objects.

Next step: Write tests for it.