proper cleanup on service exit