The Minnesota Vikings won their preseason game against the Buffalo 17-10, but that’s not as important as the takeaways for the Vikings starters and their first look at potential depth for the season.

While the first-team defense initially gave up some gains on simple plays, as well as through penalty, they firmed up to prevent touchdowns—led through explosive efforts from defensive ends Danielle Hunter and Everson Griffen, who both showed up big in the run game as well as pressure producers. At one point, Hunter followed an impressive tackle from the backside of the play with a quarterback hit and then a tackle-for-loss.

The offense was hampered by an offensive line that couldn’t do much against the Bills’ defensive front. In the running game, we saw significant problems run blocking from guards Alex Boone and Joe Berger, and sacks from Mike Remmers as well as a handoff problem in area blocking between Boone and Nick Easton. It may be the case that backup Rashod Hill, playing in place of an injured Riley Reiff, played better than any of the other first-team linemen.

While the offensive linemen largely seemed to struggle, it is worth pointing out that they did look like better run blockers than last year. Sure, it’s a low bar, but it did result in a short-yardage rushing touchdown for C.J. Ham.

Rookie running back Dalvin Cook looked fine, but couldn’t create much outside of what his offense provided for him and the same is true for the veteran quarterback, Sam Bradford. At times, he limited the after-catch capability of his receivers by throwing too high and at other times neutered the offense by throwing short of the sticks on third and long.

While there don’t seem to be concerns about the receiving corps or tight ends, there wasn’t much available to evaluate a unit that should be intriguing to see develop over the course of the season.

Defensively, we saw a defensive line unit buoyed by more than just its edge defenders; aside from some issues in the running game, Tom Johnson caused fits while Linval Joseph played to his usual level of play. At the second level, we did see a little bit less pop from Eric Kendricks—who finished with zero tackles, one assisted tackle and gave up a big run by tripping before getting to his gap, but we saw much more from Anthony Barr, who is the real concern when it comes to the linebacker corps.

Good movement allowed him to rush the passer well, as well as show up in the run game and in coverage. Edmond Robinson was shaky both with the first team and outside of it, but certainly had his moments in coverage. He’ll need to do a better job getting off of blocks, however.

His competition for the spot, linebackers Emmanuel Lamur and Ben Gedeon, didn’t substantiate their claim to the position either; Gedeon had difficulty getting off of blocks and was exposed in coverage on multiple occasions. Lamur, like Robinson, had up-and-down moments but probably ended the day positively with a few good pass deflections.

As for the defensive backs, Trae Waynes’ injury impacted his time on the field and he was only there for two plays, which doesn’t give us much of an evaluative sample, especially because one of those plays he was likely playing with an injury. Head coach Mike Zimmer seemed unconcerned and said it was a poor shoulder.

In his stead, Terence Newman didn’t look particularly great and gave up a few passes underneath, including at least one for a first down. Xavier Rhodes wasn’t targeted, which is a positive. Harrison Smith and Andrew Sendejo looked fine, but of course it takes a much larger set of snaps to determine safety quality.

Between the backups, no player stood out more than undrafted free agent Tashawn Bower. He was a force in the run game, creating space against the opposing offensive tackle—sometimes Minnesota’s own Seantrel Henderson—and shedding blocks to hit running backs in the backfield. Aside from that, he consistently created pressure against the passer, created a sack and batted down a pass.

The battle for the fifth and/or sixth wide receiver spots is heating up. Rodney Adams definitely had some great moments on special teams, but also some duds; he called fair catches when he shouldn’t have and forgot to call them when he needed to. He was partly responsible for a muffed punt, and for the most part didn’t look as dynamic as he needed to be in kick return.

On the other hand, his play as a receiver is pretty exciting; he generated a touchdown and some splash moments with the second and third team.

Stacy Coley was fun to watch as well. He’ll bank on a big moment where he created a good chunk of yards after the catch, and led the team in receiving by the end of the night—and he would have still been first among receivers in receiving yardage without that 38-yard gain. He will also have to deal with the fact that he was perhaps responsible for an incompletion on a miscommunicated route.

It will be difficult to determine whether or not quarterback Case Keenum read the play correctly and Coley should have optioned to a deep route because he was hip-to-hip with his coverage or whether Coley was right and ran a hot route short because of the blitz.

His work as a punt returner was better than Adams’, but that job isn’t really open. No one fielded any kickoffs besides Rodney Adams, so a clear standard of comparison isn’t developing quite yet.

As for Isaac Fruechte, he had a poor night. What initially looked like a game where he would have the difficult job of fixing his quarterback’s mistakes turned into a game where he committed errors in the face of excellent throws from his passer. Given his limited ability to create space with route-running, those few chances are all he has to prove he should make the roster.

Other takeaways: