It’s rare that I actually anticipate the release of an action movie, but when I saw previews for Looper, in which Joseph Gordon-Levitt plays a young Bruce Willis, I was intrigued. It turns out that the casting is easily the best part of the movie.

Looper stars Gordon-Levitt as Joe, a hired assassin in the year 2040 who works for a syndicate from 30 years in the future. In the future, time travel has been invented, but outlawed, so organized crime uses the technology to send hits into the past-bound, hooded, and loaded with silver bars-where “loopers” kill them and dispose of their bodies. It makes the murders impossible to trace. When the bosses want to end a looper’s contract, they send him himself to kill, along with a big payout of gold. The looper is rich, but knows he only has 30 years to live. As Joe notes, it’s not a job for forward thinkers. When “the rainmaker,” a criminal mastermind, comes into power in the future, he starts closing all the loops, setting Joe on edge. Finally, Old Joe (Bruce Willis) is sent back in time, but he’s not ready to die. Instead, he attacks Joe and sets off on an agenda to change the past so that he will never be sent back in the first place, saving the woman he loves (Qing Xu) in the process. As Old Joe can remember everything Joe does once he does it, their game of cat and mouse becomes increasingly complicated until Joe winds up on the farm of Sara (Emily Blunt) and her son Cid (Pierce Gagnon), who may hold the key to the whole problem.

Like I said, my favorite part of Looper was watching Joseph Gordon-Levitt portray a younger version of a character played by Bruce Willis. It’s clear that like many American kids of our generation, he grew up watching movies starring Willis and it’s easy to imagine he had a lot of fun rehearsing this roll. In testament to his acting, however, his performance never looks like a caricature. The prosthetic bridge on his nose certainly helps (although it is sometimes distracting), but Gordon-Levitt captures micro-movements of Willis’s face—the purse of his lips, the slight squint of his eyes—in a remarkable rendition of the actor’s mannerisms. Therefore, when the two are face-to-face the scene doesn’t come off gimmicky, as it very easily could have. In comparison, Willis himself is in the film surprisingly little. It’s almost like Gordon-Levitt is his stand-in. Willis still feels like a star in the movie, though his scenes are few and largely comprised of action scenes he could probably perform by rote. Still, the scene in the diner when Old Joe has to face his younger self, a kid fully prepared to kill him, is pretty awesome. The dialogue is full of the expected banter, but is both relatable and insightful. Who wouldn’t want to chew out their younger self a little bit?

Once the film gets both Joes in the same place at the same time, things start to go a little off the rails. What was an obnoxiously macho, but basically well-constructed story begins to meander and got so convoluted by the end that it didn’t quite feel like the movie it started as. As Sara, a tough single mother and farmer, Emily Blunt is pretty captivating. She’s sympathetic and mysterious and is able to steal some focus away from Gordon-Levitt and his prosthetic nose. Still, even her performance wasn’t enough to distract me from how the film was moving further and further into moral ambiguities about innocence, responsibility, and justice, moving rapidly from a weird form of suicide toward infanticide. Then there’s the whole subplot about a telekinetic genetic mutation in the future. By the end of the film, the story felt a little hackneyed and heavy-handed due to twists that didn’t seem wholly necessary after such a strong first act.

The real strengths of the film come from the performances of its actors and the interesting ways the plot plays with the connection between time and memory in the interaction between the Joes. In other ways, the story feels pretty unbalanced. For example, we know that in the future there are pretty severe economic disparities and drug problems, but the film never engages with these issues in any way beyond cliches about violence and juvenile delinquency. It’s only clear in the very end that the real loop in the film is cycles of violence. Thematic consistency would have made that revelation more poignant. Further, secondary characters such as Suzie (Piper Perabo) are established as though they are relevant to the plot, only to basically disappear in the second half. Most problematic, through concern for the love of Joe’s life, the film works to get the audience to root for the death of a child, while also hoping that we love the child (who could be evil, who knows?). It’s really uncomfortably ambiguous territory and the film resolves the problem instantaneously. The ending is really jarring, but I can’t decide yet if it was also satisfying. For outstanding acting, an interesting plot, but some pretty glaring meandering, I rate Looper 3.5/5 stars.

Looper was written and directed by Rian Johnson. It runs 118 minutes and is rated R for strong violence, language, some sexuality/nudity and drug content.