genericise event bus properly