Sen. Ted Cruz and Democratic challenger Rep. Beto O’Rourke’s second and likely final debate on Tuesday night was starkly personal, with O’Rourke repeatedly attacking Cruz’s integrity in between a wide-ranging debate over issues like social media regulation, climate change, and impeachment.

The debate was a vast shift in tone from the first debate last month, as O’Rourke attacked Cruz on his votes and political campaigns. During the first debate, O’Rourke told Cruz that the president’s attacks on him during the 2016 campaign were his business. Things got more heated on Tuesday, and O’Rourke explicitly called back to a Trump 2016 attack line.

While Cruz was explaining that he believes Democrats have approached climate change with a focus on government power in a way that’s bad for business, he told the audience in San Antonio that O’Rourke had supported a $10 barrel tax on oil produced in Texas, which O’Rourke denied. (The background there is complicated, and hinges on a 2016 vote on a messaging resolution in the House.)

“Senator Cruz is not going to be honest with you,” O’Rourke said in response to Cruz’s claim. “He’s dishonest. It’s why the president called him Lyin’ Ted, and it’s why the nickname stuck. Because it’s true.”

The debate was the third scheduled meeting for the candidates after a second debate was postponed during the Brett Kavanaugh confirmation hearings. Cruz, at times, referenced the hearings and Supreme Court confirmation process to draw contrasts between himself and O’Rourke.

“There is a loss of civility, there is an anger, there is a rage on the far left that is frightening,” Cruz said of grassroots activists protesting Kavanaugh’s confirmation. “The images of the left-wing mob beating on the doors of the Supreme Court — that’s not good for the country.”

Cruz leaned into a refrain often repeated by President Donald Trump and conservatives about the “political bias of big tech,” and touted that he had questioned Facebook’s Mark Zuckerberg about the company’s perceived anti-conservative bias in Senate hearings earlier this year. O’Rourke, meanwhile, said Congress should impose “thoughtful regulations” on social media to protect voters’ decisions against disinformation campaigns similar to those carried out in the 2016 election.

“We know they will attack us again, in this election and the next,” O’Rourke said of the Russian disinformation campaign, adding that citizens deserve to have the ballot protected and to be able to vote based on accurate information.

Cruz often snickered during O’Rourke’s responses to questions, while O’Rourke questioned Cruz’s record on delivering results for Texas. “Ted Cruz is for Ted Cruz,” O’Rourke said at one point.

Cruz said that he wanted to work with Trump on issues like trade, and said at multiple points that O’Rourke had called for the president’s impeachment, telling the audience that electing O’Rourke would be “two years of a partisan circus and a witch hunt on the president.” O’Rourke has said that he’s never called for Trump to be impeached, and has given multiple answers as to whether or not he would vote for impeachment in the House if the opportunity arose.

“Really interesting to hear you talk about a partisan circus after your six years in the Senate,” O’Rourke quickly fired back.

Ryan C. Brooks is a politics reporter for BuzzFeed News and is based in New York.