BySarah Jones,
senior writer for Intelligencer who covers politics and labor
Jessica Chastain plays the famously made-up televangelist in The Eyes of Tammy Faye, a movie that reconsiders what lay beneath all the sin and paint.
Photo: Lou Krasky/AP/Shutterstock
Tammy Faye Messner never escaped her first husband. By the time of her death, in 2007, she was still best known for her marriage to disgraced televangelist Jim Bakker and for her own role in the South Carolina–based ministry they built up — literally in the form of a Christian theme park spanning 2,900 acres — and then destroyed with the force of their own greed. She became a national punch line for her elaborate makeup and gaudy clothes and high-pitched voice. Was there anything else to Tammy Faye underneath the sin and paint?
A new film argues the affirmative. According to The Eyes of Tammy Faye, starring Jessica Chastain, the former television star just wanted to love people the way she believed God loved her. And perhaps the way she loved other things — beautiful things and the television cameras and, for decades, one weak-willed man who went to prison for defrauding his disciples of millions of dollars. To use religious parlance, these other loves proved to be stumbling blocks — obstacles on the path to a godly life, if not to salvation itself. They make Tammy Faye a difficult subject for a redemption narrative, which is largely what The Eyes of Tammy Faye sets out to be.
Perhaps my own religious background cramps my view here. I was raised a Christian fundamentalist with a love of straight lines and black-or-white answers. Tammy Faye’s God was not my God. Whereas I worshipped the Lord of scrubbed floorboards and modest apparel, Tammy preferred plush carpets and mink furs. I did not grow up watching the Bakkers’ The PTL Club, partly because it was before my time andbecause Tammy Faye was, for Christians like my parents, both an object of derision and an object lesson: The love of money corrupts absolutely and indicates deeper heresies. The Devil can recite Scripture as well as anybody, but he’s still the Devil.But I’ve come a long way from my time on the church puppet team,and as I once reevaluated my fundamentalism, maybe I could reevaluate Tammy.
The Eyes of Tammy Faye begins with a story I cannot with absolute certainty say is based on fact but is definitely a version of events that real-life Tammy, born in 1942, endorsed: She is a girl, falling to the ground and speaking in tongues after defying her mother’s prohibition on attending church. Though Tammy grew up in a religious household, she’s a child of divorce, a great shame to her mother and to her mother’s congregation. But through sheer belief — in God’s love and her own salvation — she’s able to convince the hostile group that she has in fact been blessed. Parishioners gather around where she lies on the floor, praising the Lord for her presence.
It’s an experience Chastain’s Tammy tries to re-create over and over again as an adult. She matures into a well-meaning naïf, a bubbly, burgeoning celebrity whose natural charisma draws people in and lifts up her husband’s preaching career. Beginning in the 1960s with puppets — and yes, I did shiver a bit here with recognition — Tammy’s creative ideas provide a spark that her husband and co-minister, Jim Bakker, played by Andrew Garfield, desperately needs. Before long, they graduate from the traveling-church circuit to a bona fide television show on Pat Robertson’s network, the cinematic chronology hewing closely to real life. With a new platform, she is audacious and piteous at equal turns. She dreams up new ministries while she fears the loss of her husband’s affections. She seeks the approval of her forbidding mother, played in the film by Cherry Jones, and finds its substitute in her television audiences.
Onscreen, the Bakkers’ newfound fame is threatened by Tammy’s naïveté. During a party at Robertson’s mansion, she drags a chair over to the men’s table and challenges Jerry Falwell — a brimstone Baptist, in contrast to the Pentecostalism of Robertson and the Bakkers — on his homophobia. When Falwell tells Jim that his wife is a firecracker, it’s not a compliment. It’s designed to sting two ways; Tammy should feel bad for speaking up, and Jim should feel bad for allowing her to stray. Encounters like these are lightly fictionalized, but the sentiment is true to life: Tammy was generally in the corner of outcasts, as she made clear in her books and public appearances. For example, the real Tammy did broadcast an interview with Steve Pieters, a man living with HIV/AIDS in the mid-’80s, a moment the film reenacts at length.
The sexism Tammy Faye faced was real too — and endemic to the modern Christian-right milieu in which she moved. A recent Christianity Today podcast, The Rise and Fall of Mars Hill, drives home the extent to which popular ministers built, and still build, empires on the backs of women. It takes the example of another celebrity pastor, Mark Driscoll, who is prone to anonymous message-board rants about our “pussified nation” and about how “men are supposed to rule on Christ’s behalf.” There are major differences, many of them theological, between Driscoll and the Bakkers, but the environment in which the Bakkers moved prefigures more recent debates over the proper role of women in the Christian church. Despite her devotion, Tammy and her famously made-up face preferred no such proper role. In the film, and in life, Tammy is the force propelling Jim to greater and greater heights. When they start ThePTL Club in 1974, she works alongside her husband as an equal partner in their wildly successful television ministry. After she cheats on him with a hunky born-again music producer, and is forced to apologize on TV to their club’s millions of “partners,” the phones almost immediately begin to blare. Even in her abasement, Tammy Faye could inspire donations. It’s her, not Jim, the fans truly loved.
Andrew Garfield as Jim Bakker, and Jessica Chastain as Tammy Faye.
Photo: Courtesy of Searchlight Pictures
So far, so sympathetic. But we’re here because Tammy, and her first husband, fell dramatically from grace. While Tammy bought furs, her husband Jim got up to some financial high jinks — and worse. The Federal Communications Commission found in the early 1980s that money Jim had raised to fund overseas missions had instead gone to fund construction projects at Heritage USA, the couple’s residential compound and theme park. Heritage USA was inseparable from the Bakker ministry, the site both of their claimed good works and their hubris. The construction of an on-site home for children with disabilities proved a fundraising windfall for the Bakkers; but the Los Angeles Timesreported in 1987 that after its completion, the home only housed five people — and two were Bakker cousins. The Justice Department declined to prosecute, but the hammer would eventually fall. In 1989, Jim was convicted of 24 counts of fraud and conspiracy. As the New York Times reported at the time, he “bilked followers of his PTL Ministry out of $158 million by offering promises of lifetime vacations he could not provide” and “diverted about $3.7 million to support an opulent lifestyle that ranged from oddities like an air-conditioned dog house to luxuries like a fleet of Mercedeses and Rolls-Royces.”
His imprisonment meant the end — of ThePTL Club, of the big houses, and, eventually, of their marriage. The two parted company: Tammy remarried to Roe Messner, a property developer depicted in the film; wrote books; and refashioned herself before her death in 2007. Jim, meanwhile, is back on TV, the same old snake-oil salesman. He hawks supplements and buckets of “survival food” for preppers, and in June, he and his new church had to pay $165,000 to settle a lawsuit over his claims that a product called “Silver Solution” could cure COVID.
The Bakker story was headline news in the ’80s and early ’90s. These days, audiences might be less familiar with Tammy or, if they know her at all, know only her face. To them, Tammy is a book with blank pages to be filled, worthy of attention because she is now the subject of a major film. Those who remember Tammy’s public story, however, will spend much of the film waiting to find out exactly how it plans to complicate its heroine. At best, Tammy relished her wealth without questioning its origins. At worst, Tammy was Jim’s equal partner in all things and actively helped him rob the very audience she craved. The film wavers between the two possibilities. Jim hid the worst of his misdeeds from her, it suggests, and Tammy didn’t ask many questions. She believed in his vision and helped him sell it to the end. Based on a 2000 documentary narrated by RuPaul, the film at times picks up on an earlier attempt to retrofit her with today’s baggage — to make her into a televangelist girlboss, maybe even a gay-friendly icon. Tammy was something of both, in her way. But in the process of humanizing Tammy, the film sanctifies her. What’s good for the girlboss is rarely good for anyone else. Tammy was more than a caricature, but that doesn’t mean she was a heroine.
Fundamentalists love to find fault, at least in other people. That tendency can make a person a poor critic. So I will step outside my childhood long enough to observe that the film sets out to accomplish a series of difficult things by dramatizing a work of nonfiction and telling a story narrowly through the perspective of one character. Because it is based on true events, there is an expectation that it will be an accurate story. But because it is told literally through Tammy, an unreliable narrator, it’s not quite the truth either. A film doesn’t have to be one thing or the other, truth or fiction. The search for purity is another fundamentalist impulse.
Even so, the film might have concocted a more interesting and vexing Tammy had it included certain facts it omitted from the narrative. Greed might not be Jim Bakker’s greatest sin. Evidence suggests he’s guilty of much worse, an offense the film downplays. In one scene, Tammy happens upon John Wesley Fletcher, a Bakker aide, addressing an older woman who answers phones for ThePTL Club. A woman kept calling, she said. The PTL Club’s on-air receptionists call her “the shrieker.” In real life, the woman had a name, which the film restores to her right before the credits roll. She was Jessica Hahn, and according to her, Fletcher and Bakker sexually assaulted her, then paid her with ThePTL Club’s money to keep quiet. “I knew something was taking place, but I didn’t feel in control of the situation,” she said of the encounter in 1987. Bakker says the sex was consensual, the same story that Bakker the character tells Tammy in the film. Tammy, for her part, seemed to accept Bakker’s word on the alleged assault and on other matters. In her 2003 book, I Will Survive … And You Will, Too, she refers to her ex-husband’s “one-night stand,” though Hahn’s story was by then well-known. “The lies had somehow become truth in people’s minds,” she complained.
God can love Tammy, but can we? The film wants us to try. There was a real woman underneath the makeup, it reminds us, and she got a few things right. Tammy’s real willingness to buck the fanatics in her orbit makes her a timely figure. The public’s reaction to her — the jokes about her on late-night TV, the T-shirts bearing her made-up face — feel of the moment too. To be a woman in public is to invite commentary, much of it harsh. Yet Tammy’s infallibility is what feels most relevant of all. The girlboss eventually lost her shine, if indeed she ever possessed it. Today, we’re used to icons who fail us. To borrow from Scripture, none is righteous; no, not one.
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();
// ]]