After two years of trying, President Donald Trump finally got the military pageantry he has so desperately wanted.

The annual Fourth of July celebration in Washington, DC—a parade, concert, and fireworks—featured tanks, fighter planes and Trump himself. It was called “A Salute to America,” but it looked more like a salute to Trump, who made a rare address for a president on Independence Day from the Lincoln Memorial.

A rain-soaked crowd around the Lincoln Memorial chanted “USA USA!” and Air Force One flew low over Washington as Trump strode up to the podium. While water ran down the front of the bulletproof glass enveloping the podium, he opened his remarks with, “Hello, America, Hello.”

“Today we come together as one nation,” he told the crowd, which was divided by a fence that kept VIP guests separated from ordinary spectators.

Trump stuck to the script, delivering his speech with his signature stilted teleprompter cadence, taking listeners through high points of American history and greatness and acknowledging special guests like Apollo 11 flight director Gene Kranz and civil rights hero Clarence Henderson.

“We are going to be back on the Moon very soon, and someday soon, we will plant the American flag on Mars,” Trump promised Kranz.

The speech also included a lengthy tribute to the Armed Forces and timed flyovers by various aircraft.

At one point, Trump—who received five deferments from Vietnam—encouraged young people who were listening to join the military “ and make a great statement in life. And you should do it.”

Sizable crowds turned out Thursday morning for the annual parade on Constitution Ave. Trump supporters made up a large part of the crowd, with MAGA hats, pro-Trump T-shirts and Trump campaign flags prominently displayed. On the parade route, one person held up a large sign that “THANK YOU PRESIDENT TRUMP.” Vendors sold a wide array of pro-Trump merchandise, from Trump 2020 shirts to buttons declaring that “Hillary Clinton sucks.”

Fences surrounding the Lincoln Memorial and across the Reflecting Pool kept non-ticket-holders away from the memorial. The much-discussed tanks were also behind the fences, meaning the vast majority of attendees couldn’t see them.

With Trump’s speech roughly two hours out, it began to pour rain. Dozens of pro-Trump attendees lined up in a vain attempt to get into the restricted, fenced-off area closer to the stage while others power-walked to cover, temporarily ditching the Mall.

Over at the Trump International Hotel just down Pennsylvania Ave. from the White House, numerous Trump supporters and celebrants populated the lobby, ordering drinks and tiny burgers with small American flags poking out of them, stuffing more money into the Trump family coffers. The lobby restaurant and bar area, for years a top destination and watering hole for Trumpworld luminaries and administration figures, was filled with enthusiastic Trump fans, including one man wearing an American flag outfit replete with a TRUMP cape. Hotel regulars mingled in the lobby on Thursday afternoon, with Eric Bolling, a close Trump friend and a BlazeTV host, setting up shop to broadcast his July 4 show next to the bar.

QAnon fans also showed up at the hotel sporting T-shirts of John F. Kennedy Jr., who they believe faked his death 20 years ago and will reemerge today as part of a wide-ranging deep-state conspiracy to prosecute Democrats for child-sex slavery.

One woman said she thought there was a chance Kennedy would announce his presence at the rally. “It would be wonderful if he did,” said the woman, who declined to give her name.

Vincent Fusca, a Trump supporter who QAnon supporters believe is JFK Jr. in disguise, told The Daily Beast that he’ll be at today’s rally.

The day also drew Trump detractors. Maryland resident David Beigel protested by bringing three small “Baby Trump” balloons to the Trump hotel and posing for photos with fellow Trump critics. Beigel said he decided to come to the parade when he heard Trump was turning it into a “Trump festival.”

“I just figured I needed to,” Beigel said, as he stood in 90-degree heat. “The only good thing about this hotel is the shade.”

But D.C.’s subtropical climate wasn’t the only complicating factor.

There were multiple anti-Trump protests hroughout the day, including one by Code Pink that featured the famed Baby Trump balloon (though it could not be filled with helium because of Federal Aviation Administration restrictions) and counter-protests by pro-Trump collectives looking to support the president. The Parks Service granted permits for a flag-burning by the White House and a rally for Michael Flynn, the president’s former national security advisor who pleaded guilty to lying to the FBI during the Mueller investigation (and awaits sentencing.)

While Trump got his tanks trained in from Georgia, they were not able to roll through the streets of D.C. due to concerns that the weight of them would ravage city streets. And, according to Mother Jones, the Pentagon sent out written guidance to troops involved in Trump’s show to say things like, “I am proud of my job and my vehicle/tank. I am glad to share my experience with the American People,” if asked during the course of the event.

The actual “Salute to America” could likely end up the subject of a congressional inquiry—not only because of the still undisclosed cost of the entire event, which included military plane flyovers and the president’s precious tanks, but also because of the White House’s decision to create a VIP section for high-profile supporters and donors at the Lincoln Memorial. VIP tickets were provided to the Republican National Committee—but not the Democratic National Committee—that were then offered to high-dollar GOP donors. Trump’s re-election campaign also got some tickets to hand out as they saw fit.

“This is what authoritarians do: @realDonaldTrump is taking $2.5 million away from our National Park Service to glorify himself with a spectacle of military tanks rolling through Washington. And top GOP donors are getting VIP seats, all at taxpayer expense,” tweeted Sen. Bernie Sanders (I-Vt.), currently vying to be the 2020 Democratic nominee to replace Trump.

The “Salute to America” isn’t an official Trump campaign event, but neither is it a project of the National Park Service, which generally handles July 4 festivities on the Mall. Rather, according to the Department of the Interior, the event was “hosted by the President of the United States.” That put it on par with other ceremonial White House events such as its annual Christmas party and Easter Egg roll—events where the White House typically carves out attendance for prominent supporters and political donors.

The Washington Post reported that $2.5 million was taken from the National Parks recreation and entrance fees fund to pay for Trump’s fete, but it’s unclear at this point how high the cost could go.

Trump’s quest for a military parade began in France. Fresh from attending the Bastille Day festivities in Paris in 2017 with French President Emmanuel Macron, Trump huddled with some aides in the White House’s private dining room and remarked how America couldn’t let another country upstage the United States, according to a person who heard Trump make these comments. Trump then proceeded to launch into an extended riff on how the French parade had throngs of marching soldiers, big tanks, and a spectacular fireworks show.

As the president went on, and on, and on about how magnificent the whole celebration was, he came to the firmly held conclusion that America could and should do it bigger and better, the source recounted.

Last year, the Department of Defense announced that a military parade the president had demanded, originally scheduled to coincide with Veterans Day, would have to be postponed. Internally, there was sharp disagreement among senior administration officials over whether the parade should have been planned in the first place. Then-Secretary of Defense James Mattis was vehemently opposed, a source close to Mattis said.

Having failed to make Veterans Day all about him, the president settled for Independence Day.

Even the much-hyped fireworks show carried a tinge of politics.

Two companies, Phantom Fireworks and Fireworks by Grucci, donated about $750,000 worth of pyrotechnics for the ceremony, promising the Mall’s largest-ever July 4 fireworks show. The donation earned the companies’ chief executives personal shoutouts on the president’s personal Twitter account on Tuesday.

Behind the scenes, both men are also pressing for the Trump administration to abandon tariffs on imports from China that they say would deal a blow to the U.S. fireworks industry. The tariffs were part of a $300 billion package of such measures that the president forestalled last week, granting fireworks manufacturers—as well as scores of other industries—a temporary reprieve.

The U.S. Trade Representative initially announced the tariffs after discussions about the fireworks donation commenced, and all parties involved say there’s no connection between the donation and the industry’s lobby campaign. The fireworks lobby nonetheless expressed some concern that the appearance of such a connection, and media reporting on it, had created the impression of some sort of attempted quid pro quo.

“I’m a little concerned that the optics may not play very positively for the fireworks industry,” Julie Heckman, the executive director of the American Pyrotechnics Association, said in an interview on Wednesday. “The donation was genuine,” not motivated by any political considerations, Heckman said.

“We’re all for more fireworks, the bigger the better, and wanting to support the president with the D.C. celebration,” Heckman added. “We certainly wouldn't want any negative optics. I believe that APA’s testimony and formal comments [to USTR] will grant us an exclusion based on the merits.”

Those fireworks donations nonetheless boosted a ceremony that prominently featured Trump himself right as his 2020 reelection campaign kicks into gear. And it didn’t just stand to benefit him politically; Trump’s D.C. hotel also capitalized on the tourism boom surrounding the Independence Day festivities.

As of Wednesday morning, the Trump International Hotel, just blocks from the White House, was offering rooms for a minimum three-night stay beginning on Wednesday for $1,151 or more per night.

Hotel guests could also enjoy a special “Red, White, and Bliss massage treatment” at the on-site “Spa by Ivanka Trump”. Fifty minutes will run you $165.

However, Trump’s gathering did not completely scuttle traditions in the nation’s capital.

On the opposite end of the Mall, the traditional, non-partisan celebration—“A Capitol Fourth,” broadcast on PBS—took place after the Trump show wrapped. Promoters of “A Capitol Fourth” are going out of their way to note that their event had nothing to do with Trump’s tank-laden party. A tweet pinned to the top of the official Twitter account for the event read that the John Stamos-hosted celebration “remains unaffiliated with any other July 4th events around the country and in other locations in Washington, D.C.”

Additional reporting by Jackie Kucinich.