In 1936 author Munro Leaf and illustrator Robert Lawson published The Story of Ferdinand, a simple children’s book about a peaceful bull that loves flowers and refuses to fight the matador. It started with a small run but quickly became a best-seller, and since it was published it has sold millions of copies all over the globe. 2017’s film adaptation Ferdinand is the first since the 1930s, and while it also has a good message, the execution leaves something to be desired.

The film opens on a momentous day in young Ferdinand’s (John Cena) life; the matador has come to choose a bull to fight and his father is up for the selection. But Ferdinand isn’t interested in fighting, as he spends his time coaxing the few flowers in the paddock to grow, much to the amusement of the other bull calves. When his father is selected to fight the matador and does not return, Ferdinand breaks out of his pen and manages to catch a train to take him far away from the ranch. At the end of his journey he finds himself lost in a field full of flowers, and a young girl, Nina (Lily Day), convinces him to follow her home to her father’s flower orchard.

Nina and Ferdinand become inseparable, and the bull is happier than he ever thought possible, but once he reaches his full size and is forced to wait at home during the biggest flower festival of the year, it becomes clear that a disaster is just over the horizon. When he attempts to sneak into the festival he causes a ruckus and destroys half the town before he is caught by the police and sent to the ranch where he grew up. He finds the bull calves he left behind have also grown up and none are happy to see him. Feeling all alone, he makes friends with a ridiculous goat, Lupe (Kate McKinnon) who is determined to make him the greatest fighting bull in a generation despite Ferdinand’s own plans. At first, he despairs of finding a way back to Nina and the beautiful fields of flowers, but with the help of three sneaky hedgehogs, Uno (Gina Rodriguez), Dos (Daveed Diggs), and Quatro (Gabriel Iglesias), he just might be able to find a way home.

Visually Ferdinand is a pleasure to watch. Blue Sky Studios have upped their attention to detail with both characters and background since the endless Ice Age franchise and the scenes of nature are particularly gorgeous. The voice acting is well done and even John Cena, whose previous roles are of mixed quality, does a serviceable job in Ferdinand. Kate McKinnon steals the show as Lupe, with her boisterous performance and uncanny range matching the animation style perfectly. They also managed to snag a few big names for some of the side characters and each contributes their own special flavor to the film.

On the surface, Ferdinand is a pleasant and easy film to watch, with colorful characters and plenty of laughs to entertain young and old. It holds tightly to the positive messages it is trying to send about the importance of self-acceptance and being our best selves. Structurally, however, Ferdinand does have some problems. The story thunders through a myriad of plot points at breakneck speed, often discarding the challenges it sets up for its characters or flat-out skipping over them as necessary to get to the next one. The film tries to tackle the issue of bullfighting in the background but never makes a definite commitment. At times it portrays the sport as noble and recognizes the long cultural history that has grown around it, but it also includes a frank scene of the bulls realizing they are meant to be slaughtered and have no chance of success. It tries to walk this fine line and tell a light-hearted story about a sweet-natured bull who just wants to smell the flowers. Somehow, Ferdinand manages to work most of the time with its beautiful art and skillful performances, but when the story reaches its conclusion its themes are painfully out of sync.