all listeners take **kwargs to clean up unused