handle shutdown and cancel properly by going through the service