The Buckeyes wrapped up spring practice with Saturday’s offense-versus-defense spring game. Despite dreary weather, 60,007 Buckeyes fans got to see plenty of action. Of course, even that attendance figure was a subtle tribute to the former No. 7, the late Dwayne Haskins, on a day when several impressive tributes were rendered. Memories of a missing OSU great aside, here are 5 takeaways from the spring game.

1. All 3 QBs showed skills

Heisman favorite C.J. Stroud split snaps with sophomore backup Kyle McCord and spring enrollee Devin Brown. Each QB threw between 20 and 24 passes and completed between 11 and 14 throws, with each managing a passing TD. Stroud is Stroud — plug and play. McCord had a very consistent game and looked like the sort of overall manager whom OSU is lucky to have in the No. 2 spot. Brown had some boom or bust tendencies. He made some nice plays (including the game-long pass of 35 yards to running back Evan Pryor), but also had the only interception of the game. He clearly has chemistry with fellow early-enrollee Kyion Grayes, who he found on consecutive plays at one point. OSU is obviously better is Brown can sit and learn, but all 3 QBs were just fine.

2. The DB rotation is improved

Yes, Jim Knowles’ defense was solid. Admittedly, there’s a limit in how much can be learned in a scrimmage, but Tanner McCalister looked solid early, and true frosh Kye Stokes stood out as the game moved on. Stokes had 9 tackles and broke up a pair of passes, and made a bid to stay in the regular rotation at defensive back. Jordan Hancock also broke up a pair of passes, as did Denzel Burke — but that last stat is nothing new. The secondary admittedly had just 1 turnover — an interception late from Cameron Kittle — but also avoided getting shredded by some of the best skill players in the nation.

3. Those young defensive linemen are growing up

It’s hard surprising but JT Tuimoloau and Jack Sawyer both showed the upside that was apparent last year. A year stronger and wiser, each showed significant skills in rushing the passer. Tuimoloau finished with 4 tackles and 2 sacks and Sawyer had 2 tackles and a sack, but seemed to be around the ball consistently. Reserve Noah Potter also managed a couple of sacks late in the game. The OSU linemen are stepping up, which certainly will help the rest of the defense.

4. The reserve running backs excelled, with Pryor showing the full skill set

TreVeyon Henderson basically played a series, carrying the ball just 3 times (for 12 yards). But the rest of OSU’s backfield took advantage of the snaps. Miyan Williams had a game-high 101 rushing yards, including a 36-yard jaunt where he got to the edge of the defense. He remains a consistent, physical runner who will pair well with Henderson. Evan Pryor ticked off 62 yards on 9 carries, including a 22-yard scoring run. Pryor also caught 4 passes for 44 yards, including a 35-yard reception which was the day’s longest pass play. Even without Master Teague, OSU is in fine shape behind potential Heisman candidate Henderson.

5. The receiving duels are still in progress

Ohio State didn’t give a ton of snaps to Jaxon Smith-Njigba or Emeka Egbuka, and the audition for support roles will certainly continue into the fall. Marvin Harrison was targeted on 5 passes, but had just a single grab for 9 yards. Xavier Johnson had a game-high 50 receiving yards on 3 catches. Kyion Grayes and Jayden Ballard each caught a pair of passes. Tight end Gee Scott looked sharp early, catching 5 passes for 40 yards. Fellow tight end Joe Royer made a nice touchdown catch. On the one hand, plenty of young Buckeyes pass-catchers showed flashes. On the down side, the depth after Smith-Njigba and Egbuka could be a bit of a drop-off.