Back in September Doncaster Rovers were picked off by Bristol City in ruthless, comprehensive and slightly embarrassing fashion.
Evidently, four months is a very long time in football.
For Rovers turned the tables on the League One high fliers in Saturday’s frenetic FA Cup showdown, and they can consider themselves unfortunate not to already have reached the fourth round without the need for an unwanted return trip to Ashton Gate next week.
So what’s changed in that time?
In short, personnel and perspiration, confidence and containment.
Sam Johnstone, Andy Butler and Enda Stevens - none of whom featured in that 3-0 league defeat - have all brought an air of authority and calmness to Doncaster’s backline, centre-half Butler in particular.
City found this defensive unit, on the back of three successive festive cleansheets, with Paul Keegan also back to his best in the holding role, a significantly more difficult proposition to play against.
The Robins also came up against a side full of confidence, running and energy.
Those qualities were epitomised by the relentless Dean Furman as he signed off for Africa Cup of Nations duty with an all-action display in midfield and the tireless Theo Robinson in that thankless lone striker’s role.
Doncaster’s high pressing, a real feature of recent games, immediately put City on the back foot as, from the off, the away side were given no time at all to get their usual fluid, passing game going.
It would have been a phenomenal effort for Rovers to maintain this sort of intensity for the full 90 minutes and, sadly, it proved beyond them as Doncaster dropped too deep after taking the lead, handed to them by Luke McCullough’s first ever senior goal.
Matt Smith - the player Paul Dickov plucked from non-league to take to Oldham in 2011 - earned City a second bite of the cherry with an impressive header.
However, the bigger picture is that something finally appears to have clicked from a Doncaster perspective. Whether that’s down to individuals, formations, tactics, or just sheer hard work is a matter of opinion.
Dickov was quoted in the build-up to this game as describing it as the perfect barometer for where Rovers are at - and he will have been delighted with what he saw. On this evidence, Doncaster can really push on in 2015.
Rovers imposed themselves on City right from the outset.
Furman twice went close during the opening exchanges, looping a header over the bar and then latching on to an excellent through ball by Harry Forrester - another player whose form is unrecognisable from earlier in the season - only to be denied by the legs of City goalkeeper Frank Fielding.
Steve Cotterill’s side had been rocked back in a way they have not been accustomed to this term, but even during a flat first-half display, from the visitors’ point of view, there were signs of the threat posed by former Leeds frontman Smith and ex-Rovers loanee Jay Emmanuel-Thomas.
The latter was the first to test Johnstone from distance, before Luke Ayling cut inside and forced another save from the on-loan Manchester United stopper.
It was Rovers, however, who ended the first half on top. Richie Wellens, another player now getting somewhere up to full speed, broke from midfield and threaded a lovely ball through to James Coppinger, whose shot was deflected wide.
City were grateful to hear the half-time whistle.
The second period began at similar breakneck speed and Furman curled a clever effort just wide of the far post.
On 50 minutes Doncaster grabbed a deserved lead. Forrester’s left wing corner was headed back across goal by Butler and McCullough hooked it home, on the volley no less, to put Rovers in the driving seat.
Rovers immediately went for the kill, the ball dropping kindly for Coppinger whose shot was straight at Fielding.
But as a second goal failed to materialise, Rovers tended to drop slightly deeper as City finally started to find their range of passing.
Emmanuel-Thomas again stung the palms of Johnstone from distance before there was an almighty let off for McCullough, whose slip sent the former Arsenal youngster clear, only for Johnstone to come to the rescue.
Furman blazed another chance over and, on 75 minutes, Rovers were left to think what might have been, and contemplate another long journey to the West Country, as Smith rose above McCullough to head home Ayling’s right-wing cross.
That should not have been that, however. Substitute Kyle Bennett, clearly keen to make an impression, forced a save from Fielding from range but should have won the game in stoppage time, latching on to Coppinger’s cross but blazing over the bar from six yards out.
So to Ashton Gate Rovers head next week, for a third-round replay both sides could have done without.
But any City fans out there who think their team has done the hard work should beware - this time you will be coming up against a very different Doncaster.
Rovers (4-1-4-1): Johnstone 7, Wabara 7, Butler 8, McCullough 7, Stevens 8, Keegan 7, Coppinger 7, Wellens 8, Furman 8 (Tyson 89), Forrester 7 (Bennett 78), Robinson 7 (Main 78). Subs: Marosi, McCombe, Wakefield, Middleton.
Bristol City (3-5-2): Fielding 7; Ayling 7, Flint 7, Williams 7; Little 7, K Smith 6 (Freeman 89), Elliott 7, Kane 6 (Pack 83), Bryan 6; Emmanuel-Thomas 6, M Smith 6. Subs: Osbourne, Wagstaff, Richards, Wynter, Cunningham.