ByLisa Miller,
a former writer at New York Magazine
Photo: Brigitte Lacombe
Photo: Brigitte Lacombe
How do you dress for your mastectomy? The surgery itself is easy, actually. During the cutting, you’re wearing nothing at all, unconscious and strapped to a table in a martyr’s pose, arms out in a T, while an OR crew that looks like the cast of a reality show bustles around doing God knows what. But after. What do you wear when your body no longer resembles itself?
The mastectomy veterans who became my sister-guides universally recommended the Brobe for the immediate recovery. These advisers were invaluable in so many ways, but at the Brobe I felt I had to draw a line. If maternitywear is an indignity to style-conscious women, then mastectomywear is far, far worse, and within that realm the Brobe reigns supreme. Nothing more than a wraparound robe with a built-in bra, the Brobe — crucially — has deep interior pockets, the function of which is to hold the gross drainage tubes that protrude from your body after a mastectomy and dangle painfully and disgustingly at your side. If you have a mastectomy, you need some way to support and manage those tubes, and the manufacturers of the Brobe and its imitators have capitalized on this.
Anticipating my mastectomy, I might not have known what to wear, but I knew it wasn’t a freaking Brobe. My rejection of it, I understood, illuminated the darkest corners of my closeted vanity. I didn’t want to have breast cancer, but if I had to have breast cancer, I didn’t want to be target-marketed because of my illness. “Fuck it,” I said to my husband, Charlie, with a stubbornness he recognized.
I got the news that I needed a mastectomy while on the subway on the way home from work. “A lumpectomy is off the table, hon,” said the surgeon on the phone. The call had come in between Nevins and Atlantic on the 2 train, and I had taken it there since one of the zillions of things they don’t tell you about having cancer is that the surgeons who hold your life in their hands are extremely busy people, so you take their calls wherever you are. At some point in the midst of receiving this news, I moved off the train and sat on a bench on the platform and held its hard edge with both my hands. Whatever I had been previously — mother, writer, keeper of the schedule, maker of the family-vacation lasagna — was in an instant subsumed by this. Henceforth and forever, I would be a person who at 56 had to sacrifice her left breast to the cancer gods.
The next day was Saturday. Charlie and I sat in bed for hours, spelunking in an internet hole called “Going Flat” — photos of women, a growing number, who chose to flaunt their mastectomy scars instead of reconstructing their breasts. The photos were clinical in a shocking way, the women determined to exhibit their injuries as strength. This path initially appealed to me. I could see myself becoming, in middle age, like a mythical Amazon, displaying my power through breastlessness. I would get a magnificent tattoo of a sunflower — long stemmed, spiny, defiant — where my breast used to be, and fuck it. Fuck the male gaze and its constant fascination with my breasts. Fuck the extra surgery and the cost and the pain and the hassle and the imperative that I look a certain way to comply with someone else’s idea of me. My sweet husband looked at the brutal pictures of the women and the scars and didn’t say a word.
It was in the middle of this exploration that my gynecologist called (on a Saturday! From home! I love her!), and it was she who reminded me of myself. “You’ve been a cisgender heterosexual woman for a very long time,” she gently said. “You might want to think carefully about what it would mean to have such a radically different body.”
Right.
My gynecologist could not have known how far my body and I had already grown apart or how long I’d been putting off an honest reckoning with that relationship. Many women describe a lifelong dissatisfaction with their bodies, but I had been on excellent terms with mine for most of my life, possibly because it had come to me, straight out of the box, in a lucky size and shape.
Starting as a teenager and into my 40s, I wore clothes with a kind of arrogance, appearing as if I didn’t care what I wore, while at the same time inviting attention that flattered me. In my 20s, that meant rumpled and salvaged, a look that morphed, as I ascended professionally, into something more ironic, a takedown of the preppy women I grew up among: Lois Lane meets country club. In plaid pedal pushers, pencil skirts, cardigans, and pearls, I aimed to evoke the reference librarian who, after a couple of whiskeys, might be up for a romp. This approach served for many years, flexible enough to accommodate my considerable professional ambition and the opportunities it afforded me. To my job at The Wall Street Journal, I wore suits with narrow, knee-length skirts and high-heeled loafers with sassy tassels. To interview Senator Barack Obama on his campaign plane, I wore a gray ’50s-style circle skirt with embroidered flowers, a brown ribbed cardigan, and flats.
My baby (at 40) changed my body meaningfully for the first time since puberty, of course. That extra ten pounds is no myth. But the baby also reordered my life in so many other ways that, in the throes of her infancy and toddlerhood, establishing a post-baby personal style seemed like a laughable concern. With little disposable income and less time to shop, I bought a couple of pairs of expensive jeans and a few bulky sweaters and figured I would revisit the question of my fashion identity at some later date. And over the next decade, I elevated the pose of not caring to an art. Out to walk the dog, I mixed plaids with plaids, stripes with stripes, and wore mud-crusted men’s slip-on shoes. My favorite item was a pair of bubblegum-pink sweatpants, purchased at Walmart during an unexpectedly chilly vacation and stained with red paint from a renovation of our daughter’s room. Like a nun’s habit, my dog-walking clothes were a kind of dare: They shrouded my body even as they alluded to it. There’s something beneath these garments, and it might be amazing.
This was bravado, though. The truth was that I was falling, sagging, swelling up. My body, which had given me so much pleasure, which had allowed me to eat and drink as much as I cared to and run marathons and take backpacking vacations and swim miles in the ocean and in Manhattan pools, was ceasing to live up to my expectations of it, like a close friend who starts forgetting your birthday. My waist, increasingly on the same longitude as my hips, became indistinct, while my formerly muscular abdomen began to protrude in what can only be called a “pooch.” My ass, my own private measure of my durable hotness, began to fall ever so slightly, an erosion I tracked with the intensity of a geologist.
Before my eyes, I was becoming alien to myself. I found myself averting my glance from my image in the mirror, as the old women from whom I had once recoiled (and to whom I believed myself superior) haunted me: Miss K., my third-grade teacher, whose flabby upper arms would quiver hypnotically as she pointed to the blackboard; my great-grandmother, whose wide, board-flat naked bottom mooned me as she climbed into bed with her nightgown accidentally hiked up around her waist on the rare occasions when we shared a room. These women had signified mortification to me. That we were connected by the same human mortality was a reality my brain understood — yet I continued to push away, always believing that my obvious physical gifts and tenacious spirit would show me a workaround, somehow.
Stuck in this avoidance, I struggled with how to dress myself. I had outgrown my old flirtatious-ironic style, but how now to appear mature but not cartoonish, elegant but not self-serious? How to deal with the fact that I had ceased to be, in the eyes of most of the world, anyway, an interesting sexual object? I delayed the project of confronting all this until the pending mastectomy forced the issue. I was aging, my body changing, and there would be no stopping it. Not ever.
The weeks leading up to the surgery were filled with grief for the loss not just of the breast itself but of the hubris that came with knowing I had been young and beautiful. I decided to reconstruct my left breast and not to “go flat,” because, honest to God, the Park Avenue plastic surgeon was the first person I met during the whole shitty ordeal with a sense of humor, who showed me the possibility of feeling pretty again.
“This is the weirdest conversation I’ve ever had,” Charlie said during our first visit to his office, when the doctor, after he was done with his camera and his calipers, explained the process and the desired result, using words and phrases like perky and origami nipple with a straight face and placing a gel implant the shape of a giant lima bean into the palm of my hand.
It was Charlie who came through with an alternative to the Brobe. He bought me a navy-blue Tracksmith hoodie in a soft wool blend with interior pockets large and deep enough to hold the gross tubes. On the morning of my discharge, I rose before dawn and dressed to leave the hospital in the clothes I’d packed: black fleece-lined sweatpants and my new hoodie. When the nurse came in and found me seated in my chair, she laughed and said I looked like I was about to go for a run, and I was delighted; my fashion bar had never been so low. Not having cancer was the only “look” I hoped to achieve.
The cancer was discovered early, thankfully. It was small, slow-growing, and contained. I’m fine, and more: very aware of and grateful for how lucky I’ve been. Odds are great that I will die of something else, and I’m not preoccupied with what that will be. My new left breast is a work-in-progress — a construction project, I joke to people who ask. It is both my body and not my body, and I find I am constantly inviting my closest friends to touch it. I would never ask friends to touch my actual breast, but this feels so much not like a breast to me, more like a foreign object the size and shape of a softball stuck under my numb skin. It is hard like a softball, too, and when I sleep it awakens me with its strangeness.
Soon there will be another surgery, in which the hard saline implant will be exchanged for something softer and more naturally drooping, like my former self, though my plastic surgeon reminds me constantly that the new prosthetic left breast will not be flesh, so it will never succumb, inexorably, to gravity as the right one will. Even after he gives me a lift on the right — “to match,” as he puts it — the two breasts will respond differently to the passage of time. He’s managing my expectations. A certain unevenness is my destiny now, and I’m postponing the purchase of a new swimsuit until next year, when I know more clearly what shape my body will take. In the meantime, I try to heed the wisdom of a young woman I know. “The lesson of high school,” she told me, “is that everyone is so worried about their tits that no one is looking at yours as much as you think they are — although sometimes they are looking at your tits.”
Aging is loss. That’s what it is, and it’s fantastical to imagine that loss — like heartbreak or failure — won’t happen in life. My mother had been an extremely beautiful woman, the kind who caused strangers to stare, and one day near the end of her life, when she was dying of colon cancer, I helped her to bathe. She already looked awful and corpselike, but when she caught a glimpse of herself in the mirror, she was aghast. “Oh, my bosom,” she cried out in grief and shock, touching the flat of her palm to her deflated breasts, as though only now, after years and years of chemotherapy and hospitalizations, she understood what was at stake.
There’s no avoiding the wrinkles, the flab, the pooch — it’s all part of the path, with more loss to come. But I am also, more than ever, myself: able to work, to plan, to swim, to make lasagna — even, on a good day, to do crow pose. So the other day, I went shopping and spent money I don’t have on two sale-rack items far out of my price range. One is a pale-teal cashmere turtleneck sweater, the other a long, gray two-season mohair coat (which the intuitive salesman promised I could layer over a hoodie). Both are classic, well made, flattering, adult. I can wear them forever, whatever that means.
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()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),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(3),appendLandingPageParams=require(135),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 i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.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()||auth.isMobileAppRequest())&&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;
}, {"3":3,"4":4,"17":17,"124":124,"135":135}];
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(106),_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()})}}]);
}, {"106":106,"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","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.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();
// ]]