Our nation has been roiling since President Donald Trump took office in January, its divisions neither healed nor soothed by his words or actions. So there was a lot riding on his speech Tuesday night to Congress, a lot that the American people needed to hear.

At times, Trump delivered impressively. At times, he fell far short.

All Americans needed to hear his unequivocal if overdue condemnation of what he said were the hate and evil that have motivated recent incidents of violence and vandalism, like anti-Semitic acts across the country.

Also welcome was the more optimistic if inconsistent vision he expressed of a nation powered by its aspirations instead of being burdened by its fears, as well as his appeals for bipartisanship.

We hope he takes to heart his statement that the time for trivial fights is over.

But his speech also had darker passages reminiscent of his campaign speeches, descriptions of a country many people don’t recognize, and several fact-free moments, particularly on the economy.

Most puzzling were his thoughts on immigration.

The day began with a remarkable shift in tone and substance for Trump. After months of denigrating foreigners and tough talk of cracking down on immigrants here illegally, he signaled in a White House meeting with journalists his support for reforms that would grant legal status to millions. Pending the details, such a change combined with tough border security would be a step toward uniting the country around a reasonable compromise. But Trump did not mention that in his speech. Instead, he proposed to change the legal immigration system to base acceptance on merit.

Trump is the essence of unpredictability. He was subdued and focused on issues. He called for unity, but clashes with fellow Republicans and Democrats seem inevitable.

What happens next?

We hope he and everyone channel the better angels he invoked Tuesday night.