Jessica Jones does not want to be a murderer. Yet here she is, standing over the body of a man she just blunt-force-trauma-ed to death. All kinds of thoughts are bouncing around the inside of her skull, fears about mother-daughter cellmates and how maybe she should make it look like an accident. Then, cutting through her clutter, comes one male voice saying: “Make it look like a suicide.”
Which Jess does, swiftly and convincingly. She even lays out the evidence that Dale killed all of those other prisoners before typing an all-caps suicide note: “THE LAST LIFE I HAVE TO TAKE IS MY OWN.”
Who was the guy telling Jess to stage this little suicide, the J.D. to her Veronica? A slow clap comes from this mystery man, as she sees a vivid hallucination of Kilgrave standing in front of her.
I know it is not technically a delight to see Kilgrave, a rapist and a psychopath whom Jessica worked very hard to scrub from her life and this earth. But David Tennant is just so damn good. And here, he is the projection of Jess’s worst fears about herself: that she is a homicidal maniac, deep down, and why shouldn’t she be? She was built that way. She’s fighting her nature; she’s fighting herself. Why not just give in to what she’s capable of doing?
Jess goes home to use booze as mouthwash and breakfast in one, then chucks all of her clothes, save her beloved leather jacket. I am impressed that someone who is as much of a mess as Jess is wearing a bra and underwear that coordinate.
Meanwhile, Alisa is thrilled to wake up to a warm, reasonable female guard. She asks to call Jessica, and the guard, Marilyn, understands: “You never stop being a mom, do you?” Even though just the other day Alisa told Jess that she wasn’t actually her mom, but just some voice she used to know, Alisa agrees. Using a blind date as a cover story, Jess confirms what Alisa suspects about Dale’s untimely demise. Alisa fights back tears of pride. “I’m so proud of you.” Ah, yes, what we all wish our mothers would say to us after we accidentally kill someone.
And Kilgrave isn’t going anywhere. Not as Jess tries to wash that murder right out of her hair (“I’m proud of you, too,” he murmurs in her ear, his hands on her shoulders); not as she looks through the papers Oscar slid under her door (“Is there no crime Jessica Jones won’t commit to get what she wants?”); not as she tries to return to her old method of calming herself by reciting the names of the streets where she grew up; not even, Kilgrave promises, as she sleeps. “I’ll be in your dreams, too.” At the motel where we last saw Trish being a complete and utter psycho, Karl is gone, but Kilgrave is still there! Hallucination Kilgrave, like some soulless Jiminy Cricket, happily chirps that Jess should’ve just offed Karl when she had the chance.
Jess visits her mom — nice cop Marilyn lets the two have some alone time — to find out if Karl had any friends. Alisa jumps to the most predictable (and, as we know, accurate) conclusion: Trish, “with her pseudo-noble bullshit,” must have taken him. It’s pretty hypocritical of Alisa to call out Trish’s “pseudo-noble bullshit” but not Karl’s, but who has time to point out these double standards?
On some level, Jess can tell her mom has a point because her projection of Kilgrave hilariously says that Trish has been “cray cray” lately; then he bursts into a rendition of her song. He’s waiting for Jess back at Alias Investigations, too, feet kicked up on the desk and telling Jess that murder is in her DNA. When Jess opens her laptop to see that the last user — not her — was looking at Karl’s photos, she knows she’s been burned. Kilgrave taunts her, like her insecurities made manifest: “You just invite betrayal, don’t you?” Jess breaks into Malcolm’s apartment, but he’s not there. (As we know, he’s tied up in Trish’s trunk.)
Trish gets spotted by a fan who takes a photo of her in the car with Karl, so that’s probably going to be a problem for someone sooner rather than later. Turns out Trish is taking Karl to the storage unit where he stashed his weird science, which he reports is “perfect as the day I designed it.” So, deeply flawed and dangerous, basically the opposite of perfect?
I love the interlude of Jess using Malcolm’s, uh, prolific online-dating history to triangulate his location, and of Kilgrave grossing Jess out with his lurid descriptions of Malcolm and Trish “sticking their tongues in each others’ body parts.” (I also love that Malcolm’s Tinder sluttery wasn’t just a one-off, but actually came back to add something useful to the story.)
In the garage, Malcolm forces his way out of the trunk, and Trish just SHOOTS AT HIS FOOT. Jess arrives on the scene in time for Trish and Karl to tear out of the parking lot. Malcolm tries to apologize, but Jess — surprise, surprise! — is not having it. As Malcolm makes himself useful by figuring out the logo on the shopping bag Trish was carrying, Jess hallucinates one Kilgrave, then two. Malcolm breaks through this Kilgrave chorus to tell Jess that the bag was from a veterinary clinic, where Karl and Trish did a little supermarket sweep for the anesthesia necessary to operate on her.
Time to go back to where it all began: IGH. Are you feeling nostalgic? Karl sure is! “So many ideas were born here.” We learn some gruesome facts about something we already knew was a nightmare: that Jess’s surgery took 20 days (!!!), but don’t worry, Trish, he’s been “honing the procedure” ever since. He also warns Trish that the abilities Jess and Alisa developed were a side effect related to something specific in their DNA. Trish’s experience could be totally different. But Trish doesn’t care. Trish doesn’t care about anything except that she’s felt powerless all her life — manipulated by her mom, abused by her director, and made to feel like the weakest of all weaklings next to her superpowered sister. It’s amazing how fast Trish went from thinking Karl was a monster who needed to be exposed to seeing him as a hero who could save the world.
Jessica’s Kilgrave hallucination is gleefully telling her that Trish will “look better than you in tights!” Then there’s another hallucination, and another, and another, and to Jess’s eyes the street is swarmed with her tormentor. Her rapist, shouting at her from all sides. The one thing that snaps her out of it is his signature command: “Come on, smile for me.”
Jess comes this close to choking a rando to death, but Malcolm intervenes. As the police approach, he encourages her to go ahead without him. I am … not sure that being the only black guy at the scene of this crime will go smoothly for Malcolm, but we’ve got places to be.
As Karl injects these, like, Pop-Tarts of needles into Trish’s back, her body convulses. Blood spills from her mouth. Jess demands to be let in, but Karl, on brand as ever, can’t let a failed experiment go. “I can fix it,” he yells, but Jess is already breaking in, almost killing him to the tune of Kilgrave’s “20 days of torture; turned your mother into a murderer.” Kilgrave is so in her head now that Jess is just saying out loud the lines he’s feeding her. But she catches herself before she kills Karl. She whispers to him, “Your life is over,” and then steps away, running to rescue Trish.
Karl pulls out the gun from Trish’s bag. His lab, he realizes, is “useless as the man who built it.” He says he needs to destroy it. “Tell your mother I’m sorry.”
Jess runs out, a near-lifeless Trish over her shoulders, and holy shit that is one massive explosion.
Jess gets Trish to the hospital, though I wonder how she could survive any of this. Wasn’t the inhaler alone enough to kill her? Feels like there will be some troubling side effects, and probably not of the superstrength variety that Trish hoped for. Jess fires Malcolm for real this time, with some harsh words even for her, calling Trish “a dying lab rat” and seething that “sticking your dick in anything that moves is the same thing as sticking a needle in your arm.” Just in case Jess changes her mind about letting him go, Malcolm assures her that he quits.
Kilgrave is still lurking as Jess sits alone in the waiting room. “You’re in here, but I won,” she says to him (while really talking to her reflection in the window). Her mother will be heartbroken about Karl, but “she still has me.” Kilgrave says what Jess surely fears: “Like you’re enough.” But Jess can claim one victory, the one thing that has terrified her all season: “I’m not a killer. I’m not you. I’m not my mother. I can control myself. Which means I’m more powerful than you ever were.” Kilgrave gets in one more ominous quip on the way out (“I’ll be around if you need me”), and then he’s gone.
Karl’s death and that mega-explosion has already made the news, which Alisa can see from her cell. Earlier, she enjoyed this serene flashback to a day she and Karl spent on a beach together, the day Karl said “screw ethics” and kissed her for the first time. Now, she knows that he’s dead and that Trish was the last one to see him alive, thanks to that fan photo, which, as expected, is sizzling across social media. Alisa howls at the ache of her loss. As I write in my notes, “Oh no, oh no, Marilyn, please don’t die!!!”Marilyn goes into Alisa’s cell, where she is promptly murdered.
Mrs. Jones is breaking out. That whole deal with visitation rights is probably off the table, no? Can this end for her anywhere but the Raft? Or, if Jessica doesn’t get to her first, her death?
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();
// ]]