Refactor events to be way cleaner and less code-dupey