add more flexibility to events