Jonathan Lethem has come home to Brooklyn, both literally with his current book tour and figuratively with the book in question, Brooklyn Crime Novel, which spans five decades of a Boerum Hill shapeshifting alongside gentrification and its consequences. The book, Lethem says, “Is not a vision of life that stops and makes inventory of a lot of people’s meals,” but the author will. He cooks frequently when he’s not on tour — “forgiving, saucy things that are never the same twice” — and even as he navigates a busier-than-usual schedule, he finds time for pizza: “I don’t like to touch my feet to the pavement of Brooklyn without connecting to the eternal slice.”
Thursday, October 5 I’m unmoored, from food and everything else. I’m on book tour. It’s the first in a while, though I was once a veteran trudger through airports. I’ll need to draw on all the emotional jujitsu, all the stoical inside jokes with myself that used to get me through. (You start each book tour as Mark Twain, and by the end, you slump home as Hal Holbrook. That quip is aging out, I realize.) My standard wisdom: Book tour is all highs and lows, no middle. I’m king of the world, Ma! Alternately: The vehicle of self is in the ditch, axle shattered. Or you’re a gutterball, gazing up at pristine pins as you roll by. The eating? That part is beyond my control. Always has been.
Stone facts: Turning 59, I vowed to reach the best shape of my life at 60. Or at least not some new low. Knowing this whistle-stop travel was coming, I began steeling myself at summer’s end. I haven’t had an alcoholic beverage since late August, in Maine. Few desserts. Scant red meat or fried food. More spartan still, I’ve been fooling with the intermittent fasting craze (my doctor’s suggestion). I can’t often go the full 16 hours, but it turns out 14 isn’t difficult, and it has quickly become a habit. Two meals, at most, squeezed, with any light grazing, into a ten-hour window. Might this all be a tad austere for the vicarious eaters of Grub Street? Actually, the fasting is a secret splendor. Let me explain.
I believe that food is, like drugs, a matter of “set and setting.” Context is everything. The two most delicious meals of my life: (1) Age 19, my friend Eliot and I allowed his mom to drag us along to an EST recruitment seminar in Boston. We privately swore that no matter what pressure was applied, we’d both refuse to sign up. After two hours of rallying, pressure was applied. Bullying was applied. Every soul in the room signed up apart from us. The Chinese meal we ate afterward, high on our refusal to be indoctrinated, was revelatory. (2) Vietnamese in Yorba Linda after touring the Nixon birthplace and museum for a couple of hours and listening to Watergate tapes on headphones. Aloft on being released from the carpeted sensory deprivation chamber of 20th-century calamities, the lemongrass chicken set a standard I’ve chased for a quarter-century, but have never tasted since.
With fasting, each food encounter is heightened into a mini-epic. Today, sitting in my hotel lobby in Washington, D.C., writing at 2:30 in the afternoon, I’ve still not had anything but black coffee (this counts; ask my doctor), and then two eggs, inexpertly prepared. Yet I’m still, in some profound sense, mentally eating last night’s dinner. Two lovely former students, Sam and Ari, grabbed me from my Baltimore hotel and took me to Jong Kak, where we shared a seafood pancake and I devoured an awesome rendition of bibimbap with a central ingredient I’d never before encountered in this dish: spicy octopus. My fast determined that every bite was psychedelic, as if invigorated by the cephalopod’s psychic superiority to the human species.
I’m counting on the adrenaline from speaking at Politics and Prose Bookstore to raise the set and setting above and beyond what the fasting provides. Anticipation of whatever might happen eating-wise tonight is at Nixon Library levels.
Around five, I succumb to a packet of organic dried mango and a Kit Kat from the hotel minibar. I remain inside my ten-hour eating window.
After the event at Politics and Prose I go with Alix Lambert, my onstage conversation partner, her sister Nickie, and our friend Molly, to Comet Ping Pong, a pizzeria with a heavy backstory (QAnon made it briefly famous for an imaginary child-slavery basement) and a relaxed, goofy vibe that makes the backstory seem super-absurd. We sit outside. Our bearded waiter has the animation of an ’80s rockstar, but not in a way we can’t enjoy. We share three gluten-free-crust pies: “The Hottie” (tomato sauce, fontina, mozzarella, pepperoni, jalapeño), “The Smoky” (olive oil, garlic, smoky mozzarella, smoky bacon, smoky mushrooms, melted onions) and “Ca-Lamb-Ity J’s” (garlic oil, whipped feta, lamb sausage, tzatziki, za’atar, pickled onions), whose overly tricky moniker could get a conspiracy theorist’s eyeballs pinwheeling.
Friday, October 6 Trains, hotels, meetings, interviews, a party. Raining in Manhattan as I dash around. A brunch meeting with Nathan Silver, the director trying to make a movie out of my last novel, The Arrest; his screenwriter, the playwright Torrey Townsend; and producer Andrew Morrison. Then on the WNYC airwaves with Alison Stewart. To the hotel lobby for a design meeting for an art book with Jiminie Ha. Then a freelancer writing for The Nation wants to talk to me. A fabulous, if rather self-aggrandizing day to be a diarist, which I never ordinarily am. I’m grateful for being made to write this stuff down. Though, of course, it raises contemplation of why I’m no diarist: How can I exclude Israel and Palestine? The fact of how continuously and vividly I miss my children? “But sir, you had agreed to be a food diarist!”
Eating is merely expedient in this scurry, but here goes: nourishment as a velocity exercise. Washington, D.C., Union Station coffee, black. Acela train coffee, black. At Jack’s Wife Freda on Carmine Street with the Arrest guys, I gobble Maya’s Breakfast Bowl (two poached eggs, quinoa, kale, squash, tomato, radish, avocado — tasty). In my hotel room, potato chips (I’m rarely able to lay off a minibar). Between meeting Jiminie and the freelance journalist in my hotel lobby, six raw oysters I barely notice but eat for sheer fuel. (Am I eating insanely because of this diary? Or does the diary reveal the insanity of eating?) With my partner Anna now joining me, on our way to The New Yorker Festival cocktail party, we try some soup dumplings on Ninth Avenue, where I reminisce about having had much better ones, almost two decades earlier. Or perhaps my standard for soup dumplings has gone up, in two decades.
Saturday, October 7 Let’s recenter food. Or at least meals. While onstage during a midday appearance at The New Yorker Festival, my co-interviewee, Colson Whitehead, mentions how much he avoids writing descriptions of his characters’ faces. I identify with this, and now it feels it might extend to an aversion to making detailed descriptions of food items as well (“The soup dumpling’s reticulated brow conveyed a mood of permanent skepticism”). After the show, still ducking the rain, Anna and I go out with James Hannaham and my brother Blake to Citizens Of Chelsea. The restaurant calls many of its items “brekkie.” I eat the “Plant Powered Big Brekkie”: again, two poached eggs, my journey’s regular companion, and multigrain toast, smashed avocado, tomato, miso mushrooms, pickled cabbage, garnished with herbs and Fresno chiles that have some real bite.
All food is probably just rearrangements of other food, but I feel that I’m pushing this principle. Soup dumplings, oysters, and poached eggs: Apparently there is some particular mouthfeel that I’m in pursuit of on this voyage. I also polish off all the uneaten za’atar-covered pita toast that came with Anna’s green shakshuka. Speaking of green, the secret agenda this afternoon had been to impress my brother with my new green suede Nikes; he usually ranks on my “reject” sneakers. He says nothing, and when I finally resort to pointing them out to him, his reticulated brow conveys a mood of permanent skepticism. “I wouldn’t have worn them in the rain,” he says. I take it as a grudging acknowledgment.
The hotel, the festival, and, at six, a visit to the Empire State Rare Book and Print Fair at Saint Bart’s Church on Park Avenue — all of these things have trapped me between 14th Street and midtown since my arrival, a strange return to NYC for me given that I’m talking about a book set in Brooklyn. Now, on our way to the Can Factory in Gowanus to attend an evening of readings at Ugly Duckling Presse, Anna and I get off the F train at Carroll Street and duck in for a slice at Giardini Pizza on the corner of Smith and 2nd.
Giardini is, to put it simply, an ungentrified pizzeria. It is the pizzeria as my heart knows them, with the pass-through window to the street, the cooled pies arrayed behind the glass counter, the Formica two-seater booths, etc. Anna gets a slice with olives and mushrooms, but I go for plain cheese. The old ritual: It is sent back into the oven on a paddle for a flash-reheat. Then onto the paper plate. I pour on red pepper flake from the grenade-shaped glass shaker. This is the slice I have been eating all my life, since before I knew pizza came in any other variation, apart from the tray of rectangular Sicilian thick stuff my friends and I always ignored. I was eating this slice before I ever traveled in Italy and confronted a hundred delirious authenticities or fell in love with a farmhouse wood-fired pizza served outdoors in Maine; I was, at the start, paying 35 cents for this slice (okay, I barely remember this, but I do), then 50 cents, then 75, and then a dollar. It is the always slice, the eternal slice I will never be done eating. I finish it and go back to the counter for a second. What on earth was I thinking, ordering just one? Two slices was always my order, as automatic to my body as how when I sneeze I always sneeze two times.
Sunday, October 8 Now I escape the city, and the psychic enclosure of my book tour, for a couple of days. Driving up to the Catskills, Anna and I break the coffee fast at Main Street Farm in the town of Livingston Manor. I hold to character with “Avocado, Arugula & Eggs on Multigrain Toast” (yes, the eggs are poached). Surprisingly sweet balsamic vinegar on the arugula seems like it shouldn’t complement the open-face sandwich as well as it does.
After participating in a barn-raising — you know, the customary mid-book tour barn-raising — we invite over our friends Michael and Heidi, and I’m graced with the first homecooked meal of this diary, for which I function not even so much as the sous chef, more as chief bottle-washer. Anna tops porcini gnocchi with a buttery tomato-and-onion sauce and pan-blistered tomatoes and braised mixed mushrooms, with a cooked chard salad on the side — many of the ingredients straight out of her garden. Dessert is fresh raspberry coulis from the bushes by the house over a Greek yogurt so dense it’s nearly cheese. I privately vow to cook dinner tomorrow night.
Monday, October 9 While Anna Zooms with her students, I fix oatmeal. I’m damn good at this.
I place myself at least nominally in charge of dinner. Anna is clearing the fridge and harvesting from the garden, and I chop everything she sets on the butcher-block island into nice shapes and put it in the wok with tamari, fish sauce, fermented shiso leaf, rice vinegar, hot peppers, garlic, and ginger. I also make rice. I’ve learned a good wok trick from my friend Andre, but my 13-year-old son believes it is Andre’s cooking secret and I shouldn’t share it or even speak it aloud. I’ll honor this belief. The food made with my own hands is lovely, and it is lovely to be just the two of us eating it.
Neighbors have placed one generous slice of pie in the extra fridge on the porch. When Anna mentioned the presence of this pie earlier in the day, I began to envision eating it. Now, I’m ready, though it’s 10 p.m., a bit late for the intermittent-fasting window. Apple pie, brown-sugar crumb top, excellent crust. Perfect in that too-impatient-to-heat-up cold pastry way. The set and setting on this slice of pie is excellent since it is a thank-you from the people whose barn we helped raise, and it is also the release from my five-day captivity as a food diarist.
`;
// 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(406),Fingerprint2=require(408),DS=require(407),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(406),_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,"406":406,"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();
// ]]