Unified addEvent