Make listener manager fully generic