Matt Cassel, Tyrod Taylor, EJ Manuel show promise in opener

ORCHARD PARK, N.Y. -- The Buffalo Bills didn't put on an offensive clinic Friday night but saw encouraging signs from all three of their quarterbacks. Here are some quick thoughts on the Bills' 25-24 loss to the Carolina Panthers:

QB Depth Chart: Matt Cassel started and played two drives, completing 7 of 8 passes for 45 yards. He was replaced by Tyrod Taylor, who completed 5 of 8 passes for 49 yards. EJ Manuel entered the game at the start of the second half and threw the Bills' only touchdown pass, an impressive 51-yard strike to Deonte Thompson. Manuel finished 4-of-8 passing for 77 yards.

Maybe That Dude Could Start: Veteran Matthew Mulligan subbed in with the first-team offense as a second tight end across from Charles Clay. A favorite of Rex Ryan's, Mulligan is a stocky blocking tight end who could earn a role in Greg Roman's run-heavy offense. Mulligan was overaggressive at times Friday night; he was called for an offensive pass interference penalty (for blocking downfield) and also was penalized for a false start.

Who Got Hurt? Defensive tackle Corbin Bryant (knee) walked to the locker room with trainers in the second quarter and did not return. Bryant started in place of Kyle Williams (quad) and is the favorite to start for Marcell Dareus, who is suspended in Week 1. Bryant has been having a strong camp. Defensive end Jarius Wynn also left in the second half with a knee injury and did not return.

Surprise Performer Who Looks Amazing: Thompson made the play of the night when he corralled a near-perfect throw from Manuel for a 51-yard touchdown. Thompson, who ended last season on the Bills' 53-man roster, hasn't been considered in the mix to make the final cut this season but he should be. Thompson will continue to compete with Chris Hogan and Marquise Goodwin for a spot on the squad.

Rookie Watch: Cornerback Ronald Darby, the Bills' second-round pick, started and played into the second half with the second-team defense. He was competitive in coverage but had trouble making plays on the ball, allowing a 38-yard reception by Ted Ginn in the second quarter and a 34-yard catch by Devin Funchess in the third quarter. He also allowed a 2-yard touchdown catch by Kelvin Benjamin on a tough matchup in the end zone. Darby recovered with back-to-back pass breakups in the third quarter, but the rookie will have a lot to learn from the film after this one.

When It Was Starters vs. Starters, the Bills Looked: Encouraging but far from perfect. In three possessions against the Panthers' first-team offense, the Bills' first-team defense forced a three-and-out and a punt before allowing an 80-yard touchdown drive. In two possessions, the Bills' first-team offense punted and drove into the Panthers' red zone before Jordan Gay missed a 37-yard field goal.

One Reason To Freak Out: LeSean McCoy was unable to get much going on six carries early in the game, gaining just 16 yards for a 2.7-yard rushing average. "I have to get a lot better," McCoy said in halftime quotes distributed by the team. "I need to get my reads better. I didn't play well today. I need to knock this rust off and get back into the groove of things." Needless to say, the Bills will need a lot more from McCoy this season.

IK Enemkpali makes debut: Two days after being claimed off waivers by the Bills and three days after punching New York Jets quarterback Geno Smith, IK Enempkali was in uniform and made his debut for the Bills. Unlike with the Jets, where he was listed as a linebacker, Enemkpali lined up as a defensive end for the Bills and split time with second-team defensive end Andrew Hudson.

Dropped passes: The Bills' quarterbacks didn't receive too many favors from their receivers in Friday's game, with several drops affecting the stats of each of the top three quarterbacks. Offenders on the drops included receivers Chris Hogan and Marquise Goodwin, as well as tight ends MarQueis Gray and Nick O'Leary. Manuel also got the brunt end of bad snaps from third-team center Alex Kupper.