There's a lot to accomplish in this mid-season finale and while a few characters and plot points fall by the wayside - John Barrowman's Malcolm Merlyn is absent, while Grant Gustin's Barry Allen isn't as prominent as last week - for the most part, 'Three Ghosts' is exceptionally well-balanced.

As the episode's title implies, there's shades of A Christmas Carol here as Stephen Amell's Oliver is haunted by ghosts of the past, including Celina Jane's very-much-dead Shado, Manu Bennett's apparently-deceased Slade Wilson and - in a wonderful surprise - Colin Donnell's fallen friend Tommy Merlyn.

Arrow has always been about Oliver Queen's journey towards becoming a hero and 'Three Ghosts' sees him take another important step towards his ultimate destiny - not just in acquiring a mask, but in letting go of the past and forging onward - and places the whole thing within the framework of a classic Christmas story. It's incredibly canny writing.

It's not just Oliver who evolves though - the episode is a game-changer for so many of the show's characters, with Roy (Colton Haynes) potentially gaining super-strength and Barry acquiring powers of his own, in a wonderful recreation of The Flash's comic book origin that rivals Tommy's return for the most fan-pleasing moment in 'Three Ghosts'.

Advertisement - Continue Reading Below

Then there's the spectacular setting-of-the-scene for 2014 - with Slade revealed to be alive, hiding out in Starling City and positioning himself as Oliver's new chief nemesis. Alright, so the reveal is blown by the fact that Manu Bennett's voice is one of the most distinctive on US television, but it's still a joy to see Slade in the present-day and finally assuming his role as Arrow's Big Bad.

So that's the meat and potatoes of 'Three Ghosts' - the Christmas dinner, if you will - but what of the trimmings? The Arrow stunt and FX teams seem determined to out-do themselves every single week and 'Three Ghosts' is no exception, with a multitude of superbly-crafted, visually spectacular action sequences.

There's big laughs too - Barry's presence means that the writers can tip their hat to a few elements sourced from DC's comics, but his role as outsider also means that he can be used to knowingly poke fun at a few of Arrow's sillier notions, including Oliver's flimsy greasepaint disguise.

Incredibly then, 'Three Ghosts' manages to outdo last week's 'The Scientist' - itself one of the very best Arrow episodes - with a winning combination of expert action, smart humour and knowing nods to comic book mythology.

Just nine episodes in, season two of Arrow has produced an episode that feels like a season finale. Where the show's heading next is anyone's guess, but it's a sure bet that there's an enthralled fan-base on tenterhooks right now waiting to find out.

- Olicity moment of the week - Things start out rocky for Olicity this week. He felt betrayed that she so rashly shared his secret with Barry but fear not, there's a festive treat in store for Olicity fans - soon, Mr Allen is out of the picture and Felicity's all but confirmed that she has feelings for our boy.
- Didn't Oliver forget it was Christmas last year too? He can't even roll out the old 'I was marooned on an island' excuse this year either.
- Laurel's back, but put your knives away - she's plot-relevant and likeable! Keep it up Arrow writers.
- 'Three Ghosts' kills off Detective Lucas Hilton (Roger Cross) - a recurring character who's been with Arrow since the beginning. RIP Lucas.
- If the first Slade wasn't real, did Oliver destroy the entire cave just by throwing himself into things?
- Why does the second, non-imaginary Slade hate Oliver so much? Surely he knows that Ivo murdered Shado?
- Now that Oliver has his mask, all he really needs is a beard to finish the look - maybe one for season three?

Catch up on all the latest TV and Movies releases in Digital Spy's Screen Time: