The latest London Bridge terrorist attack has chilling echoes, and there are political ones too.
The 2017 terror attacks, not just in London Bridge but also Manchester, happened during a General Election in which the focus turned quickly to cuts to frontline services.
Then, Jeremy Corbyn called on Theresa May to resign as Prime Minister for residing over a fall in police numbers as Home Secretary.
Today, speaking in York, the Labour leader said nine years of Conservative government had seen cuts to probation and community policing, which have put more lives at risk from terrorism.
"You can’t keep people safe on the cheap,” Mr Corbyn said.
“Real security does not only come from strong laws and intelligence, it comes from effective public services."
The difference this time is the Conservative Prime Minister's primary response is not to defend the government's record, but to distance himself from it.
Pushed on cuts to police, prisons and the probation service by the BBC's Andrew Marr, Boris Johnson said: “I’ve only been in office for 120 days...I’m a new prime minister. We take a different approach.”
A Senior Downing Street source told me repeatedly: "Look at what he's said in the past 100 days on law and order, judge him on that."
They were also quick to point out that many of the cuts cited by Jeremy Corbyn happened when Boris Johnson was London Mayor, and not in government.
Number 10's reaction to this attack comes straight from strategy they've adopted since Boris Johnson entered Downing Street: to paint him as the 'change candidate'.
It's clearly a tricky tactic when a) the Conservatives have been in power for so long and b) many people feel like they already know what Boris Johnson is all about, for better or for worse.
However Mr Johnson could prove harder to pin down for Labour.
Theresa May was Home Secretary when those cuts were implemented.
In 2017, it was impossible for her to create any distance from them. She had to own and defend them.
Mr Johnson doesn't feel like he has to, and is instead asking voters to judge him on his policies to reinstate 20,000 police officers and put £2.5 billion back into the prison service.
And now on his latest announcement: to end automatic early release of violence offenders and terrorists - a policy, it's worth noting, that was not in his manifesto.
The Prime Minister's hope is that voters don't link Jeremy Corbyn's attacks to him personally - that they won't see him as the Conservative MP who, from 2015, voted for cuts in government spending to local authorities and welfare, or the Conservative minister who served in Mrs May's cabinet.
In the remaining days of this election campaign, the defining battle may well be the one Mrs May was unable to win in 2017: between a Labour Party painting the Prime Minister as a vote for more of the same, and a Conservative Party portraying him as a vote for change.