We need to talk about M. Night Shyamalan. He burst on to the scene with his smash hit the Sixth Sense, and followed it up with Unbreakable, but since then his track record has been, well, appalling. He’s made films like The Village, The Last Airbender, The Happening, and After Earth. But he does have the talent as a director and writer, as shown by those early films. And that brings us to Split.

Split is Shyamalan’s new horror/thriller, which stars James McAvoy as Kevin, a man with 23 different personalities inhabiting his body, who kidnaps three young girls, including Casey (Anya Taylor Joy). The trailer for the film had such huge potential and so great, but you could tell there was come apprehension as they tried to bury Shyamalan’s involvement, not revealing his name until the end of the trailer. That said a lot of the projects that Shyamalan has worked on have had a lot of potential, but this is one of the first in a long time to actual deliver on a lot of that. Shyamalan both writes and directs the film, and in both of those regards this is some of the best work that he’s managed since Unbreakable.

But what really makes this a great film is James McAvoy’s performance. He essentially plays 6 or 7 different characters throughout the film, and constantly switches effortlessly between them. You always get a clear sense of which character he’s portraying at any given time, each has a distinct posture and personality, and he’s a huge part in fleshing those out. He’s intimidating when he needs to be, and kind or childlike when that’s called for as well. It’s a genuinely brilliant performance, and one that the film lives and dies on. Alongside him Anya Taylor-Joy as Casey proves once again that she’s an extremely watchable lead. Both the other girls who are kidnapped with Casey are very annoying characters to me, the actresses who play them are both talented in other projects, so I think it’s the way the characters were written.

Instead of being stuffed full of typical Shyamalan twists the film is actually fairly straightforward. It’s an interesting story, and one that Shyamalan lets exist on its own merits without the need for a twist, and as a result is pretty much enjoyable throughout. There were times where it felt a little slow in the middle, especially based around Kevin’s psychiatrist Dr Fletcher (Betty Buckley). This did give us the chance to explore more of his character, but always took me out of the tension that the film was creating. Despite this it’s still a good story. Similarly Shyamalan’s directing is far better than his other recent films. Despite nothing in the finale really surprising me, in fact I knew exactly how it would it go, it was still an incredibly tense and well directed sequence.

This is certainly the best film that Shyamalan has delivered in a long while, but really it’s all about McAvoy. The film is good, but McAvoy’s performance is great, and really steals the show, and the film needs to be seen for that alone.