Democrats took one step forward and one step sideways on Tuesday, with progressive activists claiming a huge victory in Philadelphia’s race for district attorney and Republicans easily holding on to a Georgia legislative seat that overlaps with the fought-over 6th Congressional District.

In Philadelphia, the resignation of a scandal-plagued district attorney sparked a new election, with Tuesday’s Democratic primary election largely determining who’d get the job. (Republicans are not fielding a credible candidate.) George Soros, who has donated to elect DAs who favor criminal justice reform in various states, poured in money to help Larry Krasner, a civil rights lawyer. The progressive Working Families Party led a coalition of community groups for Krasner. The result: a victory for Krasner, who pledged to end stop-and-frisk searches and never seek capital punishment.

“This victory will resonate nationally, showing that voters are eager for criminal justice reform,” Delvone Michael, WFP’s senior political strategist, said in a statement to reporters. “Voters are rejecting the same old ‘tough on crime’ platforms in favor of progressive policies that make our communities safe and just.”

In Georgia, however, Republicans held back a Democratic tide, with Kay Kirkpatrick winning a state Senate seat that had been left open when the incumbent quit to run in the 6th Congressional District. In the first round, held the same day as the primary that set up a runoff between Democrat Jon Ossoff and Republican Karen Handel for a U.S. House seat, Democrat Christine Triebsch led in total votes for the Senate seat.

Yet Republicans, who outnumber Democrats across the district, held on to their base. Kirkpatrick won by 14 points, a decline from the 20-point margin by which Republicans had won in the past. And back in D.C., Republicans were expressing some optimism about the summer’s special elections.

“Everybody’s very optimistic,” said Rep. Robert Aderholt (R-Ala.) after Wednesday morning’s conference meeting. “Matter of fact, the speaker was just talking about how since the passage of the health care bill that we passed, you know, things are actually looking even more optimistic in some of these special races.”

But at the same time, in South Carolina, Republicans fumbled a chance to start the month-long campaign for the 5th Congressional District, vacated by Mick Mulvaney, who became White House budget director. Two conservative state legislators, Ralph Norman and Tommy Pope, were deadlocked in the May 2 primary. They headed into a runoff and deadlocked again, with Norman (backed by the Club for Growth) holding a lead of just 200 votes over Pope (backed by the U.S. Chamber of Commerce). That triggered an automatic recount, eating away at the 34 days between the runoff and the general election, where the nominee will face Democrat Archie Parnell.

Parnell, a 66-year-old tax lawyer making his first bid for office, has already welcomed Norman to the general election by chiding him for staying silent on scandals involving President Trump.