Well, where to even begin.

The two-hour Season 3 finale of ABC’s How to Get Away With Murder was rife with tension, anger, screaming and hatred, in addition to two major shocking revelations concerning Wes’s (Alfred Enoch) murder and true identity.

At the end of last week’s episode, the surprising spoiler that was revealed was that Conor (Jack Falahee) was at Annalise’s house the night of the fire/Wes’s death. Oliver (Conrad Ricamora) is the one who exposed this secret and confronted Conor about it after he went through Annalise Keating’s (Viola Davis) phone and saw Conor used Thomas’s phone to check his voicemail and realized Annalise left Conor a message telling him to meet her at her house that night.

Laurel (Karla Souza) desperately continues to push for attacking the Mahoney family, as she is still fervently convinced they are implicated in Wes’s death. However, Annalise and Bonnie (Liza Weil) are still hesitant to fight the Mahoneys because they know how dangerous that family is.

Annalise continues to enlist the help of Nate (Billy Brown), who is still working for D.A. Todd Denver (Benito Ramirez), to help take down Nate’s former girlfriend/workplace superior, Assistant D.A. Renee Atwood (Milauna Jackson). Atwood, as we learned last episode from her own confession, forged Nate’s signature on the form to approve the removal of Wes’s body from the morgue. Annalise and Bonnie are convinced she also approved Wes’s cremation and fight Atwood on this in court but are unsuccessful.

Nate manages to steal Atwood’s wi-fi password and gives it to Annalise so the Keating 4, plus Oliver and Bonnie, can use that to see if they can find anything on Atwood to prove she had contact with the Mahoneys at any point and was thus involved in Wes’s murder. Nate even goes as far as to break into Atwood’s car and accesses her GPS to track her whereabouts, and finds that she recently visited New York’s financial district, where the Mahoneys live, and begins to suspect she might be a co-conspirator in Wes’s death. Nate tells this to Annalise, who tells him to talk to her and see if he can woo Atwood again, having been her former lover. Nate confronts Atwood to say he knows she was in New York and asks her why, but doesn’t say how he knows when she asks him. Atwood becomes defensive and says she was just there for a job interview, since her job at the Philadelphia D.A.’s office is essentially over after her signature-forgery scandal.

Charles Mahoney (the son of Wes’ real father Wallace Mahoney), is released from jail after being falsely accused of Wallace’s murder, which we know Frank (Charlie Weber) committed.

At one point amidst all Annalise and Bonnie’s team’s investigation of Wes’s murder/Atwood’s possible collusion with the Mahoneys, Conor confesses to Michaela (Aja Naomi King) that he believes it’s possible he might have accidentally killed Wes. Conor then explains to the group that not only was he at Annalise’s house the night of the fire (as Oliver and we the audience already know), but he found Wes’s unconscious body in the basement and when he realized Wes didn’t seem to have a pulse, Conor began performing CPR on him. Conor, crying, then adds that he thinks he might have fractured one of Wes’s ribs or broken a bone by accident after several compressions because he heard a “crack.” The group is shocked, especially Laurel who, unsurprisingly, becomes enraged and lashes out at Conor, urging him to go kill himself. Oliver is the only one who defends Conor.

At her OB appointment, Laurel mulls over having an abortion, likely because she doesn’t want her baby to grow up fatherless.

Conor offers to let Annalise and Bonnie confess to the judge and the D.A. by taking the witness stand in court– despite the fact that Wes’s autopsy report made no mention of a rib fracture or broken bone– but Annalise refuses this, saying Laurel should testify instead as the other victim in the fire who is now “remembering” more details of the night of the incident.

However, Laurel’s testimony goes disastrously as she commits perjury: she lies about never having lied to authorities before. D.A. Denver proves this with a document Laurel signed years ago when she lived in Mexico in which she falsely claimed she was kidnapped. Laurel then clarifies to the Keating squad that she truly was kidnapped, unlike what everyone in the court likely thought at that moment, but that she only said she wasn’t kidnapped in order to save her father’s career (her father is the head of a giant telecommunications firm in Mexico)– her father swept Laurel’s kidnapping under the rug, pretended like it never happened in order to save his career and reputation.

Why is this relevant to Wes’s/Annalise’s case? I shall explain in a bit.

After Laurel’s testimony, Conor goes to visit the D.A. and tells Denver he wants to take Wes’s immunity deal to incriminate Annalise. Oliver has found an unknown number that Atwood dialed several times around the time of Wes’s death, and despite Asher’s (Matt McGorry) insistence, Annalise refuses to call the blocked number to find out if it is in fact the Mahoneys. Asher, frustrated, finally decides to call the “mystery number” using his cellphone. At that moment, a burner/prepaid phone rings in one of Denver’s office drawers, and Conor, alone, pulls it out. He answers it and realizes Asher is on the other line, and that the D.A. is the “anonymous source” that ratted out Annalise. Asher– and Michaela and Laurel, who are with him– also realize this, and just then, Denver walks back into his office and finds that Connor has discovered his secret. Thus, D.A. Denver holds Conor captive, handcuffs and all, for one day in a basement.

Asher attempts to go into the D.A.’s office without his secretary’s permission and is escorted out of the courthouse by security. However, Asher texts Bonnie where to meet Denver and corner him, in the men’s bathroom. Bonnie confronts Denver by saying she knows about his burner phone, which Denver vehemently denies and dismisses as a ridiculous claim.

Annalise travels to New York to meet with Sylvia Mahoney (Roxanne Hart), Wallace Mahoney’s wife and Charles’s mother, to confront her about all the damage Sylvia has done to her. Sylvia denies she had anything to do with the staged car accident that killed Annalise’s unborn child 10 years prior, and Annalise accuses her and her family of killing Wes, adding she knows Sylvia did a DNA test on Wes to prove he was a Mahoney. Sylvia then reveals that Wes is not actually Wallace’s son but Charles’s. What??! Sylvia’s son Charles is the one who raped Wes’s mother Rose all those years ago when Annalise was defending Rose.

Annalise tells her group all of this and Michaela calls her out for being naive by believing Sylvia when she claimed Wes was her grandson. Michaela thinks Sylvia is lying and simply “played” Annalise. We the viewers don’t now for sure if this is true, although there is one quick flashback scene from 10 years prior where Sylvia and Charles are going out to dinner together and they unexpectedly run into Rose and a young Wes. We immediately see that Charles becomes very uncomfortable, as does Rose, while Wes (whom we still don’t know why or when exactly his name changed from “Christophe” to Wes?!) can’t stop staring at Charles.

A flashback from the night of the fire reveals exactly how Wes dies: he called Annalise and left her a message after Nate left the house. Wes, believing he was alone, told Annalise in the voicemail that the police were attempting to pin all the previous murders (of her husband Sam, Wes’s ex-girlfriend Rebecca, former Assistant D.A. Emily Sinclair, etc.) on Annalise, but Wes says he did all this and so “he could never live with himself” if Annalise was punished for something he did. We know this is only partly true, since the only one of the previous murders Wes actually committed was Sam Keating, whom he killed in order to protect Rebecca.

Annalise deleted that voicemail from her phone just before she was arrested, but Oliver, whom she asked to erase her phone’s contents, says deleted phone messages can be recovered. Annalise then uses this as evidence to the D.A. to create a false narrative that Wes’s death was a suicide in order to save herself and the rest of her crew, despite Laurel’s objections, since she refuses to paint her ex-boyfriend as a psycho. Annalise plays Wes’s voice message to Denver, and lies to the D.A. by saying Wes had a long history of violence and mental health problems and that his problems culminated with him killing himself.

The D.A. in turn presents Wes’s message to the Pennsylvania Attorney General, and admits his whole case accusing Annalise for his murder was wrong– in front of Nate.

However, an ugly confrontation/ screaming match between Denver and Nate ensues, where Nate accuses Denver– who is still his boss- of paying off everyone under his control– the police detectives, lawyers, etc. to frame Annalise when he himself is involved in Wes’s murder. Denver finishes by yelling “I am sending you and that bitch (referring to Annalise) to prison!” and firing Nate.

The flashback of Wes’s death reveals that right after he finished leaving the voice message for Annalise, he was attacked from behind by an unknown stranger, whom Wes managed to elbow in the face and then knock down with a bottle of liquor before attempting to run away and call for help. The unknown assailant, however, did manage to inject Wes in the neck with an unknown substance that slowed Wes down and eventually knocked him to the ground, rendering him defenseless. The attacker put a gag in Wes’s mouth and choked him to death.

One or two hours later, when Conor arrived at the house to find Wes unconscious in the basement, the flashback again shows him attempting to save Wes, although Conor rushes out immediately before the house bursts into flames after he realizes someone cut off the gas line. Conor runs for his life as Annalise’s house explodes behind him.

We then see Wes’s killer sitting in a nearby car calling someone on the phone to say “it’s done, but we have a little bit of a problem.” We don’t immediately see who is on the other end of the line, but we assume it’s D.A. Denver, as a scene later on in the present shows Denver meeting with the unknown killer, who gives him Wes’s phone. Denver threatens Conor by saying he will plant the phone in Conor’s car in order to then frame him for Wes’s death, now that he knows Annalise is not a credible suspect.

The final flashback of Wes’s murder and the house fire reveals the final piece of the mystery: who gave the unknown killer the order to kill Wes. The killer calls his boss to say again “it’s done, but we have a problem.” The person on the other end of the phone line is revealed to be… Laurel’s father!!

What did he have against Wes? Was it just the fact he believed Wes was the cause of Laurel’s problems? Was it because Wes got his daughter pregnant?

Conor is released from Denver’s clutches and after Conor and Oliver– who had filed a missing person report and was a nervous wreck who was frantically calling the police to try to find him– have sex, Oliver asks Conor to marry him, leaving Conor stunned and speechless.

Frank renews his commitment to helping Annalise with Wes’s murder case.

Laurel then enlists the help of Michaela and Asher to hatch a plan by which she hopes to use Michaela as bait to get information out of and possibly kill Charles Mahoney, whom Laurel is still convinced is Wes’s killer. Michaela flirts with Charles at a bar, and he invites her to go home with him, while Laurel and Asher watch from across the bar.

Laurel and Asher meet Michaela in the bar bathroom and she says Charles is waiting outside with a taxi to take them home, but Laurel becomes frustrated and shows them a gun she has in her purse to kill Charles as a backup plan. Whoa!!

As Michaela and Asher freak out at Laurel having reached full-blown Liam Neeson-Taken mode, Laurel rushes out of the bar to confront Charles, who is still waiting a block away with the cab. As Laurel approaches him, slowly pulling out her gun, she is interrupted by a guy named Dominic, who seems to casually run into her, and hugs her, thus foiling her plan. Michaela and Asher approach and Laurel, still surprised, introduces Dominic to them as a “family friend,” which seems to be true. Dominic happens to be Wes’s killer, who likely realized Laurel would try to go after Charles Mahoney and decided to stop her from killing him by pretending to run into her at the right moment.

Annalise also reveals at an AA meeting that Wes (without saying his name) was her real son!

Season 4 will surely have more surprises this fall, as we see whether Laurel finds out that her own father was behind her boyfriend’s murder, or if she remains convinced Charles is the culprit and continues to track him down.

Read more about: