delivery: factor out DeliveryListener