add event data to callback and implement merge