ByBrian Tallerico,
a film critic with over 20 years of experience covering movies and TV.He is the president of the Chicago Film Critics Association, the co-producer of the Chicago Critics Film Festival, and managing editor of RogerEbert.com.
Kyle Chandler as John Rayburn.
Photo: Saeed Adyani/Netflix
The Ghost of Danny Rayburn (Ben Mendelsohn) returns in another strong episode of Bloodline, while Marco Diaz (Enrique Murciano) finally gets closer to the truth about what his former partner and former lover did to their brother. Early concerns about the season have been resolved, although it’s still unclear how so many loose ends will be tied up with only two episodes to go. No matter how it ends, the bulk of Bloodline’s mid-season has been solid, buoyed by great performances from Kyle Chandler, Andrea Riseborough, John Leguizamo, Norbert Leo Butz, Linda Cardellini, Murciano and Sissy Spacek.
While Diana Rayburn (Jacinda Barrett) is leaving, Nolan (Owen Teague) and his grandmother (Spacek) head to Danny’s restaurant, Viva Caputa. The food was good and people liked it, but Nolan says that dad trusted the wrong guys — a really peculiar way to say he dealt drugs behind the building. We get a flashback to that event, as Nolan catches his supposedly-straight father selling pills, likely from the pharmacy robbery. Teague is very good in this scene, conveying anger as Nolan realizes his father has let him down again.
Meg (Cardellini) talks to John (Chandler) about her meeting with Ozzy (Leguizamo) at the end of “Part 20.” She doesn’t really care about what happened at the Red Reef motel, but she can’t have a man spreading dirty laundry about the Rayburns during the campaign. He denies even caring about Ozzy, claiming his stories are all lies. How does John keep it all straight? His wife, his sister, his mother: He’s told none of them the complete truth. The series might end with his head exploding, Scanners-style.
After Ozzy tells Eric that he’s going to give the blackmail money to Eve (Riseborough) so she can jump-start her music career, Meg alerts Kevin (Butz) about the newest thorn in the Rayburns’ side. She asks Kevin if they could borrow money from his business, completely oblivious to the fact that the marina has no more employees. He’s mere days from losing it. Meg wants to help.
A shell-shocked John goes to the scene of the crime, that secluded beach where he killed his brother. He has flashbacks — visions even, as he sees Danny’s body in the shallow water. John is starting to get a little Tell-Tale Heart-ish. His guilty conscience is eating away at him. He’s shattered.
While Kevin’s business is on the edge of doom, Sally and Nolan go out to Miami, where Nolan lived with Eve most of his life. The landlord changed the locks on the old place, so they break in to get some of Nolan’s stuff. He casually pulls out some old baby photos, along with a crucial one with an teenage Nolan and Robert Rayburn (Shepard). He seems caught by it, saying “I only met him once.” Is that true? Either way, Sally is heartened to see her late husband with her grandson, making him feel more like a part of the family.
Back in the Keys, Meg meets with John’s greatest campaign contributor, Roy Gilbert (Beau Bridges). She’s got two issues — and surprisingly, the first isn’t Ozzy. She brings up Kevin, hoping that her money man might know some people who can help her brother out.
Meanwhile, Marco does the most logical thing he’s done all season. Remember when Meg told him that Alec was in the house on the rainy night that’s so crucial to the Danny Rayburn investigation? Well, Marco calls Alec to check that alibi. He won’t get a call back until later in the episode, but Meg’s story collapses. Alec wasn’t even in Florida at the time.
Kevin goes to talk with Mr. Garnett, the mysterious investor whom he met at a boat party earlier this season. Despite the receptionist’s protestations, he confronts Garnett in the lobby, saying he’s finally got a business plan. Instead of kicking him out, Garnett listens. Kevin may finally have his shit together. He gives a good speech. He even has a proposal. But Kevin wants a partner; Garnett wants to buy it outright. Given his financial state, why wouldn’t Kevin take that deal? Even he’s not sure, as he later tells Belle in a great scene for Butz. Kevin finally looks healthy and self-aware, but he wants to hold onto the business to impress his dead father.
“Part 21” also gives us a good scene between Sally and Nolan. She sees a photo of a young Eve with Nolan, but the picture, like so much in the Rayburn world, hides the truth. It was taken on a night when dad wanted to try a new restaurant. Mom saved up for months and worked extra shifts. They took the picture, but never made it to dinner. Ten minutes after the photo was taken, they fought and she kicked him out. Nolan didn’t see him for two years. And it was Father’s Day.
Mrs. Aguirre (Vivian Fleming-Alvarez) is in church again, this time talking to John. (Isn’t it a bit clichéd to stage all these meetings with an abused wife in a church?) Meg won’t return her calls. Aguirre spills the beans on Meg’s involvement with the leak of the story against her ex-husband. And she reveals something crucial: Marco helped cover up the charges.
After Ozzy continues to pressure Meg, Gilbert tells her that he’ll meet with Kevin, so she decides to tell her benefactor about the family blackmailer. He says that shakedowns happen with every campaign. It’s the cost of politics. Will Ozzy get his Rayburn payday? I have a hard time believing it’ll be that easy. And Gilbert hints at a darker fate: “If he doesn’t go away, he’ll be dealt with.”
Sadly, Riseborough continues to be underused on this show. Does Eve spend just smoke in bed all day? That’s where she is when she talks to Nolan about his “day with Grandma.” He mentions that Sally wants both of them to come over, then he asks why dad didn’t ask the family for help with the restaurant after he got arrested. Eve says that Danny was thinking of him. Nolan is confused.
While Gilbert looks like he’ll save Kevin from his dire financial straits, things get really rocky at the police station. After Jane (Taylor Rouviere) comes looking for the necklace that Danny gave her again at her father’s office — a great prelude to the scene that follows, since it primes the emotional buildup for John — Marco barges in. It’s time to talk. As he says, “We all want the same thing, John: clarity.”
In a nice scene that seems to be penance for the way she treated her granddaughter, Sally lets her daughter-in-law and grandson back into her life. We then see Meg give Ozzy the hush money he demanded (in full view of the local drug lords, no less), which finally gets us to the main event: Marco vs. John. It’s the best scene of the episode, and possibly the season.
The cop moves quickly, trying to keep John off his feet. Danny came back to ask John for help. Why? John claims he didn’t see him. Marco reveals he knows Meg lied about that night. Why? John dismisses it as a personal issue between ex-lovers. Marco suggests that Danny was the one in Meg’s house. Why is John so sure that his brother couldn’t have been there? Marco argues that John, Meg, and Kevin helped Danny get away with murder. If Danny was at the house, their whole story falls apart.
Marco digs deeper. The feeling in his gut tells him that John tried to help Danny escape after he killed someone — or he helped Danny kill someone. We know Marco isn’t right, but he’s getting closer to the truth. When Marco told John that there was a death at the Red Reef, and John knew his brother was there, why didn’t he ask if it was Danny? He knew he was staying there. It doesn’t add up. John has had enough. He fires back: “You know what doesn’t add up? Why you let Aguirre beat the shit out of his wife.” Marco is stunned, but angry. He’s not going to be brushed back.
As the room gets hotter, Marco dives deeper into John’s history, revealing what Meg just told him about their history: the death of his sister, how dad beat up Danny, how they lied to the police about it. Marco is pissed. John spits out, “I’m really sorry that you can’t stop Meg from fucking around on you.” Marco knows the facts don’t fit together. They just don’t. And he knows it because John doesn’t seem to care. He finally says, “The John Rayburn that I know would be hunting his brother’s killer to the ends of the fucking Earth, unless …”
John storms out. What a great scene. Cue “Sharks” by Morphine, a totally appropriate song to finish off the episode. Morphine rules.
Other Notes:
“Part 21” is Owen Teague’s best episode. It’s not yet clear where season three of Bloodline will go, but I hope the writers find a way to keep him involved.
Timing is crucial to the rest of this season. Nolan and Eve have finally found the family they’ve always wanted — or so it would appear — as time bombs are set to go off everywhere else.
In case you’re wondering: “Viva Caputa” doesn’t really translate to anything. It’s literal translation is “alive understood,” so unless I’m missing some slang meaning, it’s probably just an attempt to class up Danny’s Italian joint.
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(4),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(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 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,"4":4,"12":12,"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();
// ]]