event decorator