Hours after reversing himself to end the forced separations of migrant families, President Donald Trump returned to the warm embrace of his supporters at a raucous rally Wednesday to defend his hard-line immigration policies while unleashing a torrent of grievances about the media and those investigating him.

Trump downplayed the crisis that has threatened to envelop the White House amid days of heart-wrenching images of children being pulled from their immigrant parents along the nation’s southern border. He made only a brief mention of his decision to sign an executive order after spending days insisting, wrongly, that his administration had no choice but to separate families apprehended at the border because of federal law and a court decision.

“We’re going to keep families together and the border is going to be just as tough as it’s been,” Trump told the cheering crowd in Duluth.

Story continues below advertisement

Seemingly motivated to promote his hawkish immigration bona fides after his about-face on forced separations, the president denounced his political opponents and those who make unauthorized border crossings, suggesting that the money used to care for those immigrants could be better spent on the nation’s rural communities and inner cities.

“Democrats put illegal immigrants before they put American citizens. What the hell is going on?” asked Trump, prompting the crowd to chant “Build the wall!”

He even invoked his campaign kickoff speech, held three years ago this week, in which he declared that Mexico “wasn’t sending their best” in terms of migrants crossing into the U.S. That wasn’t the only throwback moment at the rally, featuring a packed arena festooned with American flags and approximately 8,000 people responding in chants to many of Trump’s cues.

He fumed over what he deemed “dishonest” coverage of his summit with North Korean leader Kim Jong Un. He raved about the economy and his tough new tariffs meant to create fair trade. And he erroneously suggested that a recent Department of Justice watchdog report into the FBI’s handling of the Hillary Clinton e-mail probe proved his innocence in the special counsel’s Russia investigation while covering up Clinton’s guilt.

“Have you been seeing this whole scam? Do you believe what you’re seeing – how that no matter what she did, no matter how many crimes she committed, which were numerous, they wanted her to be innocent,” Trump said. “But with me, nothing. No collusion, no nothing. They wanted to put us in trouble.”

The crowd responded with a “Lock her up!” chant. Trump simply shook his head.

Again attacking the special counsel probe as a “witch hunt,” Trump went on to blast the media for focusing on the recent immigration crisis at the expense of covering what he contends is bias against him at the FBI. He also accused the media of providing one-sided reports about his Singapore summit with Kim.

Story continues below advertisement

“We had a great meeting. We had great chemistry,” said Trump, who predicted that Kim “will turn that country into a great successful country.”

“These people,” said Trump, gesturing to the media at the back of the arena, “say, ‘He’s given away so much.’ You know what I gave up? A meeting.”

The Duluth rally was Trump’s first in a blue state since taking office. He narrowly lost Minnesota in 2016. And with the industrial and upper Midwest looming large for Trump’s re-election hopes, the president vowed to spend more time there before 2020.

“You know, I hate to bring this up, but we came this close to winning the state of Minnesota,” the president said. “And in 2 1/2 years, it’s going to be really easy, I think.”

Trump was in Minnesota to back Pete Stauber, a Republican congressional candidate running in a traditionally Democratic district. Home of the Iron Range, Minnesota is a place where Trump’s tariffs on foreign steel could play especially well. While economists wince and farmers brace for blowback, the crowd cheered when tariffs were mentioned on Wednesday. Trump also held a small round table with representatives from the mining industry and local leaders before the rally.

Trump brought Stauber to the stage and offered an enthusiastic endorsement. But he made no mention of the state’s GOP gubernatorial primary to replace outgoing Democratic Gov. Mark Dayton. It pits former Gov. Tim Pawlenty, a Trump critic running for his old job, against Jeff Johnson, the state GOP’s endorsed candidate who has been stronger in his support of the president.

Story continues below advertisement

Energized by the roaring crowd in his first rally since the Singapore summit, Trump soaked in the applause and caustically dismissed a few protesters who tried to interrupt. He beamed as the crowd chanted “Space Force!” in response to his plan to create a new branch of the military to safeguard the cosmos. And he leaned hard into his self-appointed role as champion of the working class and defender of traditional American values, but also mocked the idea that his opponents – whether liberals or media executives – were always called “the elite.”

“The elite! Why are they elite?” Trump wondered. “I have a much better apartment than they do. I’m smarter than they are. I’m richer than they are. I became president and they didn’t.”