Insurance companies are in the business of saying “no.” How four very persistent patients got their money.
ByKristen Mascia,
freelance writer and editor who covers health and parenting
Illustration: Zohar Lazar
Illustration: Zohar Lazar
There’s a moment that inevitably comes after your insurance company has denied a claim. You’ve read your member handbook and pored over your policy, bills, and explanations of benefits. You’ve asked your primary-care doctor to send a letter to your insurance company. You’ve meticulously tracked and stuck to your appeal deadlines, sent out rafts of documents to various P.O. boxes, and dialed the 800 number on the back of your insurance card half a dozen times. And then you check the mail. Where you find yet another denial. Ah, you think, I’m going to lose my mind.
Tens of millions of health-insurance claims are denied in the U.S. each year for all sorts of reasons. Sometimes patients get services during the course of an appointment that aren’t covered on their plan — they go in for a skin check and end up getting a mole removed. Sometimes they fail to get preapproval for a procedure because they didn’t know they had to get preapproval, a long and complicated process in and of itself. Sometimes the insurance company just makes a mistake — someone in a billing department submitted a claim incorrectly, say, with the wrong codes. A lot of people choose not to appeal at all; they can’t figure out how or it’s just too maddening. But for those who do, it’s almost universally an exercise in frustration. Because there are so many different types of health insurance — public and private, employer-sponsored and not, fully funded and self-funded — there’s no standard appeal process, which means patients are left to work out how to do it on their own. And it’s really challenging to get a helpful person on the phone to aid you in sorting through the mess. Major insurers are huge diffuse bureaucracies that employ thousands of claims specialists scattered around the country and, in some cases, the world. “Every time you call, you get another person,” says health-insurance advocate Adria Gross. “Or you get someone who answers the phone in the Philippines.” Unfortunately, it’s actually worth it to try. By some estimates, says Patricia Kelmar, senior director of health-care campaigns for the nonprofit U.S. PIRG, up to 50 percent of patients win their cases. Last year, class-action suits were filed against UnitedHealthcare, Cigna, and Humana for using AI programs and algorithms that allegedly automatically batched claims and wrongfully denied or decreased patients’ care. The very act of initiating an appeal can trigger a chain reaction, flagging a patient’s file so that it’s pulled out of a pile of denials for a second look. “By starting the process, there’s a greater likelihood that a human being is going to look at that claim and make a determination,” says Kelmar.
If this all gives the impression that insurance companies overcomplicate the appeals process on purpose to make more money — well, some people think they do. Insurers get to keep the money they don’t pay out on claims, says industry whistleblower Wendell Potter, who left his post as Cigna’s communications VP in 2008. “These companies know that a percentage of people simply will not appeal, often because people don’t think it’s worth the time and effort or just because it is a chore,” Potter says. Even postponing paying claims can benefit an insurance company. When you’re looking at millions upon millions of disputed claims in various stages of adjudication, says Ron Howrigon, a fellow former Cigna executive who started a health-care-consulting firm 20 years ago, “that’s a massive amount of money.” Insurers take these realities into account when they’re making business decisions, Howrigon and Potter believe.
Frustratingly, some of this should have gotten ever-so-slightly better by now. In 2022, the No Surprises Act — a law that protects patients from receiving surprise bills from out-of-network providers — went into effect. The law also requires that health-care providers and insurers give patients EOBs (or AEOBs, for “advanced explanation of benefits”) — what their out-of-pocket costs for nonemergency care would be before they actually receive that care. Having those documents in hand should help consumers anticipate how much it will cost before they go in for that MRI or surgery, which would theoretically help them avoid denials and appeals in the first place.
The problem is two years after the law went into effect, the Centers for Medicare and Medicaid Services still isn’t enforcing the EOB reform. An industry-led working group composed of payers, health providers, and others is drawing up rules for its implementation. But movement on this has been slow. “You can imagine how powerful it would be to know in advance exactly what your insurance is paying for,” Kelmar says. “But we’re all still sitting around, waiting.” Here, four people who successfully challenged their denials.
.
The Doctor Who Found a Technicality
After seeing how difficult it was for her mother to get the end-of-life care she needed, Dr. Georganne Vartorella gave up her career in internal medicine to create her own patient-advocacy firm. Since then, she has helped scores of people successfully appeal their insurance claims. Last year, a severely ill patient at risk of having her colon removed came to her. A specialist had recommended she try weekly infusions of intravenous immunoglobulin, which uses antibodies drawn from the plasma of healthy people to stop the body from attacking itself. Uncovered, IVIg is expensive: Treatment can cost upwards of $100,000 yearly.
I got a phone call from a patient who was beside herself. She had developed autoimmune gastrointestinal dysmotility; she couldn’t get rid of digested food. She consulted a well-known GI specialist. But her insurer wouldn’t pay for the treatment he recommended — even after the specialist, who’s one of the top experts on this disease, wrote an appeal letter. After she called, I reviewed the patient’s insurance policy to see which diagnoses her insurance company would cover the treatment for. Autoimmune gastrointestinal dysmotility wasn’t on the list. But stiff-person syndrome was — the rare neurological disease Céline Dion has, which causes painful, stiff muscles and muscle spasms. My client had never been given a stiff-person diagnosis. But her medical records showed that she’d had symptoms consistent with it.
I couldn’t give her a diagnosis because I no longer practice. But her primary-care doctor could. So I called him to see what he thought. He agreed, and he referred her to a neurologist, who confirmed the diagnosis — opening the door for my client to be able to get her therapy covered. —Georganne Vartorella, M.D.
.
The Daughter Who Wrote a Particularly Good Letter
Soon after Robert Daniels, 66, was diagnosed with ALS, his neurologist tipped him off to a study about a new combination therapy that wasn’t yet FDA-approved. One of the elements in the therapy was a supplement he could order online, and the other was a generic medication he could fill at the pharmacy. But Robert’s insurance plan wouldn’t pay for the generic drug. Until his daughter, Nicolette Andolfo, 39, got involved.
I remember being at his house and seeing one of his EOBs. He was paying about $2,000 a month for the drug out of pocket and had already spent $14,000. My dad was no longer able to work at his hvac company, and my stepmom had retired to take care of him. To start my dad’s appeal, I followed the instructions on his EOB. It was denied, so something called an “external appeal” was his final shot. For that, I wrote a personal letter to the Connecticut Insurance Department, citing the results of a just-published New England Journal of Medicine study of the drug and explaining why it was so critical. I tried to be professional but honest about what my father was up against: “I want him to be able to enjoy the time he has, free from the burden of trying to shoulder the exorbitant cost of the medication that may allow him to extend that time.” Then I attached the NEJM study and sent it. Attaching the study seemed to work. I was shocked when we won. From that point on, the treatment was covered. My dad even got reimbursed for some of the money he’d already spent out of pocket. —Nicolette Andolfo
.
The Mom Who Leveraged a Lawyer’s Template
For the past nine years, Melissa D., 52, has had to battle her insurance company to get her severely autistic, nonverbal adult son’s weekly intensive applied-behavior-analysis therapy covered. Jacob, now 28, started ABA when he was 6. After years of trial and error, Melissa knows how much therapy her son needs to be stable. In 2015, her insurance started trying to cut Jacob’s therapy hours.
ABA therapy is critical for Jacob. The summer we started it, he was still in a diaper. He was also hard to control. But by the end of the summer, with the help of ABA, Jacob was potty-trained and much calmer. After my husband switched jobs in 2015, and we got new insurance, getting Jacob pre-authorization for his ABA was initially smooth. Then the insurance started giving us trouble. Jacob wasn’t making enough progress, they said. We knew Jacob needed six hours of one-on-one care five days a week — but they wanted to cut the hours down to 12 per week. I stumbled onto a nonprofit that helps people with problems like ours. I started working with an attorney who knew state and federal insurance law inside and out and put together an amazing appeal. We worked with him for four years and won every time. Finally I said to our lawyer, “Look, if you give me the letter you use, I think I can take it from here.” He agreed, and I’ve been handling the process since. To make sure Jacob gets his hours, we need to reapply for prior authorization every three to six months. We always expect a denial. To prepare for those denials, I make an appointment with Jacob’s primary-care physician, scheduled before the decision comes — the appeal requires a current prescription for his therapy and a record of his most recent physical. Then I contact his ABA therapists to make sure all of his info is accurate and up to date so they can write out a progress report for him, a treatment plan, and an explanation as to why the treatment is medically necessary. Then I write a letter using the lawyer’s template, which cites a lot of state and federal law, as well as our insurance plan’s schedule of benefits and member handbook. —Melissa D.
.
The Parent Who Tracked Down a Clerical Error
Five months after the birth of her daughter, Sasha Lazare, 33, received a notification from her insurer, Oscar Health: Oscar was refusing to cover Sasha’s early induction, alleging it wasn’t medically necessary. The costs hovered around $85,000. Sasha hadn’t wanted to deliver early, but she’d had no choice; her doctor had ordered it. After her midwife sent Oscar her complete medical file, which included more information on her induction, she didn’t hear from the company again. She assumed it was resolved, but then, last fall, she got a new bill for $1,844.60.
After my midwife helped me overturn my claim rejection in 2021, I never heard from Oscar again. I switched jobs after that, and we got new health insurance. So when I got this bill last fall, I had no idea what it was for. It wasn’t itemized. I had lost access to my Oscar portal after I switched, so I couldn’t see whether it was related to the original rejected claim. One of my new employee perks is having access to a health advocate. I called that person and asked for help to see what was going on. It took her months of going back and forth between the hospital and Oscar, but finally she helped us figure out what we now believe was the root of the problem: Someone at the hospital had gotten my daughter’s date of birth wrong when they filed the claim for reimbursement. She was born on December 18. Someone had put December 23, the day her birth certificate was printed. So I think the hospital messed up — though the hospital seemed to think it was Oscar’s fault. Either way, the health advocate told us that the outstanding bill was actually legitimate because when I had given birth, we hadn’t yet met our deductible. Somehow, though, the advocate managed to get someone at the hospital to cut the bill in half — if I paid in 24 hours. —Sasha Lazare
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(3),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(136),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"3":3,"12":12,"124":124,"136":136}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(408),Fingerprint2=require(407),DS=require(406),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(408),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"408":408,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]