[WARNING: The following story contains spoilers about Thursday's Season 3 finale of How to Get Away with Murder. Read at your own risk.]


Some of the stars of How to Get Away with Murder told TVGuide.com that no one predicted Wes' (Alfred Enoch) killer, and now we know why. He was killed by Dominic (Nicholas Gonzalez).


Dominic is apparently a family friend of Laurel's (Karla Souza), who was ordered by her super-powerful and sketchy father, Jorge (Esai Morales), to kill him — or at the very least someone close to his daughter (Frank?). Dominic does admit to Jorge that things "got kind of messy."

Here's how it all went down: Dominic had drugged and suffocated Wes, dumped him in the basement and cut the gas line by the time Connor (Jack Falahee) arrived. Connor cracked one of Wes' ribs performing CPR and ran out the storm door — the figure Laurel saw — before the place blew.

Connor relays this to Annalise (Viola Davis) & Co., and they concoct a plan for Laurel to testify about the broken rib, which was not mentioned in the autopsy report, to prove the conspiracy against Annalise. But Denver (Benito Martinez) has a file on Laurel, including a signed affidavit saying that she falsified her kidnapping claim when she was 16, which she says she only signed to protect her father. Oh, the irony, now that we know he's probably the one who gave it to Denver.

Alfred Enoch, How to Get Away with MurderAlfred Enoch, How to Get Away with Murder

Feeling awful and wanting to do right, Connor asks Denver for an immunity deal. While he's waiting, Asher (Matt McGorry) calls the mystery number they found in Atwood's (Milauna Jackson) phone records, and it's to a burner phone in Denver's drawer. Yup, he's the one after Annalise, because of the Hapstall case last year. Of course, Denver walks in at that exact moment and locks Connor up, offering blanket immunity, which Connor refuses. When they officially arrest him, Connor offers up Oliver's (Conrad Ricamora) copy of Annalise's phone records.

The only potentially incriminating thing that Annalise deleted was Wes' voicemail, in which he warns her that the DA is trying to nail her for Sam's and Rebecca's murders, and she "can't go down for what I did." Annalise goes into full lawyering mode (we've missed this!) and reframes the voicemail to Denver as Wes being the killer of Sam and Rebecca, and says he killed himself. Denver takes the deal and Annalise, Frank (Charlie Weber) and Connor are off the hook.

But because Laurel can't leave well enough alone, at the same time, she sneaks off to New York with Asher and Michaela (Aja Naomi King) to confront Charles Mahoney (Wilson Bethel), who had been released from jail. Oh yeah, Charles — as Sylvia (Roxanne Hart) tells Annalise — is also Wes' dad, not Wallace! When Michaela refuses to go home with Charles, Laurel tries to gun him down in the middle of the street — but she gets stopped by Dominic, who says he's in town for work. He's all huggy and charming, she's all shocked and stunned. Flashbacks reveal that he called Jorge right after the house blew and Connor ran out because of the aforementioned "messy" situation, but all Jorge wanted to know was that "he" was dead.

Why? That'll be for Season 4. It's kind of underwhelming that the actual culprit is someone we've never met before, but at the same time, there's only so much internal murdering and covering-up the main group can get away with for the show and dynamics to remain somewhat sustainable. And you knew the Laurel's father thread had to come back at some point after all the shady stuff he had her do earlier in the season. Read our interview with Karla Souza here.

What did you think of the reveal?

How to Get Away with Murder returns Thursday, Jan. 19 at 10/9c on ABC.