Generalise to permit multiple listeners