South Africa's political parties on Saturday swept into the final weekend of campaigning ahead of Wednesday's election in which the ruling African National Congress might find its greatest challenge from within.
Twenty-five years after the racist apartheid system ended, the party of the late Nelson Mandela is shaken by corruption allegations that toppled a president last year.
They 'ended up stealing from us'
Top opposition parties Democratic Alliance and Economic Freedom Fighters are seizing on public frustration and ANC divisions in the hope of drawing more voters and forcing the ruling party into giving up a greater share of power.
"I am angry that the very people who were elected to lead us ended up stealing from us," DA leader Mmusi Maimane told supporters at a rally in the Soweto township of Johannesburg on Saturday. "And what's most offensive is that they stole from the poor."
President Cyril Ramaphosa, a former Mandela protege who took office after Jacob Zuma was forced out, has vowed to tackle the graft that has sapped the very welfare programs and basic services that many South Africans badly need.
But Ramaphosa faces pushback from Zuma allies within the ANC, and some South Africans have expressed concern that despite his assured election win the party will later oust him from power.
Ramaphosa is expected to make his final appeal to voters on Sunday. And so will the leader of the opposition EFF, Julius Malema, who by some measures has gained ground among voters with populist calls to seize white-owned land without compensation and nationalise mines and banks.
That outspoken stance has attracted some younger voters in particular as many struggle with unemployment above 25%, while other South Africans worry that the EFF's views are too extreme and could further hurt the already sluggish economy of sub-Saharan Africa's most developed country.
"We will lift our failed economy back into real growth," the DA's Maimane said Saturday. "Not the ANC's best-case scenario of 1% or 1.5%, but proper, sustained growth that will create millions of jobs." He said his party would privatise some unprofitable state-owned companies.
The DA gained support in the municipal elections in 2016 as the ANC lost control of Johannesburg and the capital, Pretoria. It runs the only province that isn't governed by the ANC and is eyeing coalitions with other smaller parties to weaken the ANC's grip in government.
But the DA has been slowed by infighting.
'Safe harbour for racists'
Race remains sensitive in South Africa. While the ANC in a tweet on Saturday accused the DA of being a "safe harbour for racists," Maimane told the rally that his party is the only one where "blacks, whites, Indians and coloureds (mixed-race) are working together to better this country. They will not succeed in dividing us."
Shane Makhanya, a 24-year-old who is unemployed, said he would vote for the DA because it is not obsessed about race.
"When you listen to the other political parties, they base everything on race," he said.
"The other parties are always looking at things from a black and white perspective."
Another 24-year-old supporter, Lereng Kalane, said she had chosen the DA because the ANC had failed to provide basic services to most townships, the communities throughout South Africa where many blacks still live.