President Donald Trump’s Tuesday night address to Congress was an unusually important occasion.

While it wasn’t technically a State of the Union, it served the same purpose: to outline his priorities and policy agenda for the coming year.

For many presidents, the SOTU can feel a bit rote. They reiterate policies they’ve already suggested in press releases or past years, trying in vain to get Congress to pass them anyway. It didn’t make news when George W. Bush called for privatizing Social Security in 2005; he’d been doing that for months. It didn’t make news when Barack Obama called on Congress to pass immigration reform in 2013; that was a longstanding priority of his.

But Trump is harder to pin down than his predecessor — for better and for worse. He is infamously prone to repeating the opinion of whoever spoke to him last, and the public is forced to resort to Kremlinological interpretations of his statements and those of key aides like Steve Bannon and Stephen Miller, along with leaks of behind-the-scenes infighting.

Tuesday night’s speech was Trump’s chance to clarify what he stood for and issue clear directives for what Congress should do on Obamacare, tax reform, infrastructure, and immigration. It was his chance to bring his party in line behind a specific, common agenda.

And … none of that happened. Instead, you got a repeat of his usual greatest rhetorical hits. So without anything more specific to go on, here are a few Kremlinological interpretations of what Trump said, and left unsaid.

Winner: law enforcement and the military

Trump’s critics sometimes interpret his martial rhetoric and encomia to law enforcement and military personnel as sinister — a sign of a leader who privileges institutions of state violence and would be unafraid to use them to secure his hold on power.

That remains debatable. All the same, it was striking how Trump not only offered rhetorical tribute to America’s men and women in uniform but also promised overflowing, Scrooge McDuck-esque piles of cash to the armed forces, as well as executive branch non-interference in the work of police officers.

“I am sending the Congress a budget that rebuilds the military, eliminates the Defense sequester, and calls for one of the largest increases in national defense spending in American history,” he declared, adding, “My budget will also increase funding for our veterans.”

He was less specific on his promises to law enforcement, but made it clear that Attorney General Jeff Sessions is not going to be commissioning the kinds of damning reports examining police department misconduct that Attorneys General Eric Holder and Loretta Lynch did. "We must work with — not against — the men and women of law enforcement," he said, emphasizing the phrase “not against” in case the implied swipe against anti–police brutality activists wasn’t clear. "We must support the incredible men and women of law enforcement. And we must support the victims of crime."

All this in a speech where the opening set of accomplishments included “a hiring freeze on nonmilitary and nonessential federal workers.” The message was clear: Law enforcement and soldiers are a protected class, to be shielded from the cuts affecting every other government activity (save perhaps for infrastructure).

Whether Trump will actually deliver all this remains to be seen. It’s easy enough for Sessions to neglect enforcement of civil rights laws as applied to local police and sheriffs, but Trump’s budget plan appears to raise defense spending a great deal less than he’s claiming, and the details on money for veterans are murky.

But the speech solidified cops and soldiers as the poster children of Trump’s brand of aggressive nationalism. His plans have always had villains — immigrants, Muslims, foreign workers — but establishing heroes is just as important for the message.

Loser: Obamacare repeal and replace

Here’s the grand total of the Obamacare repeal-and-replace plan, as offered in Trump’s speech:

First, we should ensure that Americans with preexisting conditions have access to coverage, and that we have a stable transition for Americans currently enrolled in the health care exchanges. Secondly, we should help Americans purchase their own coverage, through the use of tax credits and expanded health savings accounts — but it must be the plan they want, not the plan forced on them by the government. Thirdly, we should give our great state governors the resources and flexibility they need with Medicaid to make sure no one is left out. Fourthly, we should implement legal reforms that protect patients and doctors from unnecessary costs that drive up the price of insurance — and work to bring down the artificially high price of drugs, and bring them down immediately. Finally, the time has come to give Americans the freedom to purchase health insurance across state lines –- creating a truly competitive national marketplace that will bring cost way down and provide far better care.

With this, Sarah Kliff explained, Trump merely "told party leaders they are on the right track, but he did not provide any further direction or a pitch for unity." The plan Trump is describing above strongly matches the Better Way plan that House Speaker Paul Ryan and allies unveiled last summer. Both preserve a tax credit system to pay for insurance, expand health savings accounts, block-grant Medicaid and turn it over to the states, and demand insurance sales across state lines.

But think about what Trump left off:

He didn’t say whether the tax credits should be refundable, as in A Better Way and Obamacare, or nonrefundable, so that people not paying income taxes can’t benefit. A lot of conservatives in the House and Senate have denounced refundable credits as “Obamacare lite,” or “a major and unstoppable entitlement” because they redistribute money to pay for low-income people’s health care. It seems like Trump disagrees with that. But does he? And how does he plan to convince those skeptics?

Trump says he wants to kick Medicaid back to the states. Will he do that through a per capita cap or a full block grant, the latter of which would let states aggressively drop people from rolls? Should Medicaid expansion states continue to get federal money they started receiving under the ACA? Will all states see funding cuts? What about congressional Republicans who appear skeptical about all this?

How will Trump continue to ensure that people with preexisting conditions get coverage? Will the legal requirement remain? Some other weaker measure?

How will Trump’s plan keep healthy people buying insurance? Obamacare does this with the individual mandate. Will Trump require people to maintain insurance coverage continuously or else face penalties in the future — even though that could be unpopular for the same reasons as the individual mandate?

or else face penalties in the future — even though that could be unpopular for the same reasons as the individual mandate? Trump promises “a stable transition” for Obamacare enrollees. How? When would the law be phased out? How much time would enrollees get to find new arrangements? Will Trump sign a repeal bill before this transition is specified in law?

All of these things are controversial, all offend various stakeholders and please others, and each will provoke a major fight in Congress. Presidential guidance can help steer his party’s legislative path and minimize conflicts on these points. But Trump offered little to none.

Effectively, this was a punt back to Ryan: Trump is not going to step in and help him get the caucus in line. The result will be months more of wrangling over repeal options, with no clear path to passing anything.

Winner: NATO

This is sort of a “soft bigotry of low expectations” judgment, but it was nonetheless striking how much less critical of NATO and America’s European allies Trump was in this speech than he’s been in the past.

“We strongly support NATO — an alliance forged through the bonds of two world wars that dethroned fascism and a Cold War that defeated communism,” he began. It’s normally here, in a Trump speech, that the “but” comes. Recall that right before the inauguration, Trump reiterated his claim that the alliance is “obsolete.”

And sure enough, his next sentence was, “But our partners must meet their financial obligations.” And he continued this way: “And now, based on our very strong and frank discussions, they are beginning to do just that.”

What is this based on? Earlier this month, he declared the exact opposite:

We only ask that all of the NATO members make their full and proper financial contributions to the NATO alliance, which many of them have not been doing. Many of them have not been even close.

Trump’s claim is that in the span of less than a month, he managed to completely shift the defense spending priorities of an entire continent. This, suffice it to say, did not actually happen.

But if it’s what it takes for Trump to stop disrupting the Atlantic alliance structure, Angela Merkel and Theresa May probably won’t be complaining. To help matters, Trump made literally no reference of Russia, Vladimir Putin, or Syria, the major points of contention between him and our NATO partners (not to mention most other US politicians). He wasn’t standing down, but he was purposely not escalating this particular conflict.

Loser: immigrants of all kinds

Trump usually cloaks his anti-immigration rhetoric in security concerns. That was the rationale behind his Muslim ban proposal after the Paris attacks, and then his initial executive order restricting entry from several majority-Muslim countries. It was even present in his speech announcing his presidential run, when he declared, “When Mexico sends its people, they're not sending their best. … They're bringing drugs. They're bringing crime. They're rapists.”

But senior members of his team, including Steve Bannon and Stephen Miller, have always embraced a comprehensively nationalistic opposition to immigration, on the grounds that it endangers not only Americans’ safety but their economic livelihood. As Bannon said on a radio program with Miller in March 2016, "the beating heart of this problem" is that "we’ve looked the other way on this legal immigration." The problem isn’t just criminals — it’s any immigrants serving as competition to American workers.

This was the view that Trump expressed in his speech Tuesday night. "Protecting our workers also means reforming our system of legal immigration,” he argued. “The current, outdated system depresses wages for our poorest workers and puts great pressure on taxpayers."

Here, Trump, like many immigration restrictionists, is relying on the contested assertion by Harvard economist George Borjas that immigration reduces wages for low-skilled American workers. It’s worth noting, first off, that even Borjas agrees that immigration makes the US richer overall; his analysis is only an argument against immigration if you think it’s impossible for the US to tax the winners from migration and give the proceeds to workers who might face more competition.

But more importantly, the best quasi-experimental evidence we have from big, unexpected migrations like the Mariel boatlift from Cuba to the US, or the influx of Russian Jews to Israel in the 1990s, suggests that native workers’ wages don’t fall at all in response to big waves of immigration. If anything, they rise. Borjas has tried to knock down this result, only to be quickly debunked.

A fair read of the evidence is that immigration probably doesn’t hurt US workers at all, and that even if there is damage, restricting immigration further is a ham-handed and inefficient remedy. The fact that there’s still strong opposition to immigration despite this is not surprising. It just indicates that the opposition to immigration has, as in Trump’s case, traditionally been motivated mainly by a desire to preserve the majority culture and a fear of demographic change, and has little to do with economics.

But the shift to economics is important for what it portends for policy. Because all immigrants, legal or not, are supposed to have these negative effects on native workers, Trump is laying the groundwork for a crackdown not just on the undocumented population but on legal immigration in the future. That’s been a longstanding priority of Bannon and Miller’s, and this speech was a strong indication that it’s now Trump’s.

Winner: the “dishonest media”

For at least one night, we in the press corps — be it the New York Times, CNN, the Washington Post, or some new enemy — were spared a rant from the president about how the media is the opposition party, the enemy of the American people, or otherwise undermining the country.

This is clearly a respite, not an actual shift in Trump’s beliefs and behavior. But it was nice in a very, very small way to see that Trump could avoid off-topic jeremiads when forced to deliver a formal address to Congress.