making listener protocols more explicit