The Bridesmaids Going Into Debt for Their Friends’ Weddings
ByCharlotte Cowles,
the Cut’s financial-advice columnist.In addition to “My Two Cents,” she writes about work and parenting for the site. Previously, she was the senior features editor at Harper's Bazaar and a senior editor at the Cut. She was also the editorial director for MM.LaFleur. Her work has also been published in Glamour, Art in America, Politico, and other places.
Photo-Illustration: by The Cut; Photo: Getty Images
Are you getting married? Best wishes! I can’t promise you a lifetime of happiness, but I am confident that your celebrations will probably cost more than you think (sorry; I hope the pictures are worth it).
How much to spend on your own wedding is your business, of course. But before you rope your dearest friends into your vision, maybe take a moment to consider what they can afford. Recent data from the Knot shows that the average costs of bridesmaid obligations add up to about $1,900 — which is a lot to ask, even (or especially) of your loved ones. Still, that hasn’t stopped many brides from expecting their friends to shell out even more, regardless of whether they have the means. And many of them don’t: Another survey found that one-third of bridal-party members went into debt for their friend’s weddings. Here, we spoke to three bridesmaids who have done so, and how they wish things could have gone differently.
“Everyone is treating me like a charity case who’s also a bad friend.” — Deena, 28, manager at a nonprofit
I am already in debt. But this wedding that I’m in this summer is about to set me back another $3,200. And that doesn’t even factor in the gift that I know my friend — let’s call her Ally — expects. I don’t think I’ve ever spent $3,200 on anything.
I met Ally in college. We were super close. Her family has a lot of money and mine doesn’t, but it didn’t matter as much during school. She’d dress me up in her clothes and bring me with her everywhere. It sounds weird, but it’s like she prided herself in taking care of me, like a pet. At the time, it seemed really thoughtful, but after we graduated, we drifted apart and the differences in our financial lives became a lot more stark. And I don’t hang out with her much because all she wants to do is go out to fancy dinners, which I can’t afford.
She called me when she got engaged, and I was super excited for her. I love her fiancé. But I didn’t think she’d ask me to be a bridesmaid because we don’t hang out or even talk very much anymore. We have almost nothing in common. So I was surprised when she asked me. I was like, “Oh, she values our friendship from college. I’m honored.” But then I realized that the rest of her bridesmaids are all very wealthy. I’m not close to any of them. I could tell that I was going to be the black sheep.
At the beginning, Ally made it seem like most of the bridesmaid costs would be covered. It’s a destination wedding, and she said her parents would get a villa where all of us would stay. For the dresses, she said she’d pick a color and we could just get whatever we wanted. I’ve never been a bridesmaid before, so I wasn’t sure what was normal. Not that I expect her to pay for things, but I know that both the bride and her fiancé have a ton of money, so I didn’t really anticipate what was coming.
The first big cost came when she changed her mind about our dresses and decided that she had a specific one that she wanted us to get. It’s $550. You have to get them custom-made. Everyone else is like, “Oh, they’re gorgeous,” and I’m like, Well, fuck. Then it turned out that the villa isn’t happening either. Instead, there’s a hotel block where we are expected to stay for three nights for $400 a night. I’ve been tracking flights to where the wedding is and it’s pretty clear that I won’t be able to find a ticket for under $380. I booked an Airbnb instead of the hotel for a fraction of the cost. And when I told her, she was pissed. All the other bridesmaids were like, “You can’t do that! We all have to get ready together!” We’re expected to get our hair and makeup professionally done and pay for it, too.
Then it came time to plan the bachelorette party. I was dreading it. Thankfully, we don’t have to fly anywhere, but the organizers picked a house that’s $8,000 for the weekend, which comes out to $750 apiece. I literally laughed out loud. I texted the bridesmaid who’s managing it and was like, “I just can’t make that work.” And she was like, “It’s really important to Ally that you be there. How much can you pay?” I was like, “Umm, I don’t know, $200?” I kept hoping they’d just forget about me and I wouldn’t have to go. Finally, we worked out a plan where I’m paying in increments. And everyone is treating me like a charity case who’s also a bad friend and making everything difficult.
At this point, I can’t win. I’ve been very open about the fact that I can’t afford the options that are being offered, but I just get shamed for it. One of the other bridesmaids was like, “What if you give up takeout for a month?” I was like, “Are you kidding me?” I’m pretty sure that Ally and I will never speak after this wedding. We’ve barely spoken in the past few months, anyway. She keeps acting like she’s given us this gift, involving us in her big day, and instead it feels like a death sentence. I wish I could just bow out, but at this point it’s too late and I’m too scared. I think all the other bridesmaids are a little scared of Ally too. I’ve already put in so much money. I don’t know who she’d replace me with.
I’m drowning aside from this wedding, too — I have $19,000 of other debt from student loans and credit cards and medical bills. If I spent everything that Ally wanted me to, I’d probably have to move. Emotionally, it’s been weighing on me. I feel so obligated to take part in this, but I also feel like nobody wants me there anymore. It’s crazy that money has divided us so much.
“I had to go to the M.A.C store and send her pictures of different lip colors so she could approve what I bought.” —Priya, 29, small-business owner
I grew up in Texas, and one of my oldest friends — let’s call her Anna — got engaged to her high-school sweetheart right after college. Her parents were very much in the social scene, and all of her mom’s friends wanted to host a bridal shower, each one trying to outdo the other. So she had five bridal showers in total.
My parents are from India, and bridal showers are not part of my culture. So I was like, “Oh, I guess this is just what white people do in Texas.” At the time, I was 22, and I was working and earning my own money. My base salary was $45,000 with bonuses that could bring that up to $65,000, so spending hundreds of dollars on gifts was a lot to me.
When the invitations started coming in, I asked Anna’s parents what the expectation was — do the bridesmaids bring a gift to each one? I wasn’t trying to be negative or impolite, but I just wanted to understand, because I had never been in a wedding before. And her grandmother cut me off and said, “We don’t talk about politics or money. That’s rude.” I hadn’t talked about either of those topics, but I felt very ashamed. It was my cue to shut up and show up.
At each shower, we’d have lunch and then watch Anna open her gifts. So it wasn’t an option to not bring one, because everyone would have noticed. In fact, for one of her showers, I didn’t have time to get a gift beforehand, and I got called out for it. I’d been traveling for work and I even changed my flight home to be there. When I arrived, the host was like, “Which of the bridesmaids didn’t bring a gift?” It was super embarrassing.
Another bridal shower was a wine-tasting event. One of Anna’s mom’s friends hosted it at her home, and it was beautiful. But then, three or four hours before it started, the host asked all the bridesmaids to contribute to the cost of the party. I checked my voice-mail and it was like, “Hey, honey, I’m just calling to remind you to bring a hundred dollars for the wine.” And I was like, “Did I miss a communication somewhere?”
To add to the pressure, Anna would talk about the stuff that was still left on her registry. Like, “Oh my gosh, I still haven’t gotten those crystal glasses.” She specifically asked all her bridesmaids to buy her place settings in her wedding china pattern. She was like, “I want to think of all my best friends every time I’m setting the table.” But each individual place setting was $125.
On top of the gifts, my bridesmaid dress was over $200, and we all had to get them altered at the bridal shop where it came from, which of course cost a lot more than it would someplace else. Anna made a whole day of it and we all went to lunch afterwards, which was another expense.
Then we had to pay to stay in the hotel for two nights for her wedding and pay for our hair and makeup for the pictures. I even had to buy all-new makeup because my skin tone didn’t match the colors she wanted us to wear — the pink lipstick didn’t look right on me, because I’m olive-toned. I had to go to the M.A.C store and send her pictures of different lip colors so she could approve what I bought. By that point, I was pretty irritated. I mean, why do I have to have matching lipstick? We’re not on a dance team.
All in all, I spent over $2,000 on the wedding. I put it on my credit cards. Because most of the charges were spread out over a year and a half, I was able to pay those bills without letting them pile up too much. But I definitely had to plan my life around it. Like, “Oh, I shouldn’t go out to dinner with these friends, or make plans this weekend, because I need to save money for the next bridal shower.” The irony is, she and her husband are already divorced, and we’ve lost touch. I haven’t spoken to her in a few years.
“It felt like a glimpse into another life that’s completely beyond my means.” —Zara, 29, manager at a media company
One of my best friends from high school married a guy who is British. So their wedding was in London, where they live, and most of the bridal party was from Europe. They have slightly different traditions in England, so the bachelorette party was right before the wedding. For me, that meant I spent about ten days in Europe, between the bachelorette party and the wedding itself, and it all added up to about $6,000.
I don’t blame the bride for how expensive everything got. The bachelorette party was meant to be a surprise for her, and it was planned by her maid of honor, who I didn’t really know. She rented this Kardashian-size villa in Italy for the weekend, and there was no conversation around what people could afford — she just booked it and sent everyone Venmo requests for $1,000. At that point, I felt like I couldn’t back out. When I got there, the charges kept coming. We rented a huge boat for a day. We got bottle service at two clubs. Obviously, I was aware that things were spiraling out of control, but I felt like my hands were tied.
Of course, it was extremely fun. The villa was so opulent. It felt like a glimpse into another life that’s completely beyond my means. I never would have been there or had those experiences otherwise. I’ve never chartered a boat. The bride is one of my very best friends, and I was really happy to share that time with her. She and her family were really generous about some of the other costs. I didn’t have to pay for my bridesmaid’s dress. They paid for us to get our hair done. But we did have to cover our stay in London, and that added up because we were there for several days between the bachelorette party and the wedding.
I used my savings — about $2,000 — to buy plane tickets and cover some of the costs, but the rest just went on my credit card. I’m sure it was a stretch for some of my other friends who were there, too, but most of the bridal party worked in finance. I work in media, and at the time, I was making $78,000 a year, so the total cost was more than 10 percent of my take-home pay. It took me over a year to pay it off.
Email your money conundrums to [email protected](and read our submission terms here.)
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();
// ]]