Add methods
Improve processEvent
Remove macro