Last weekend saw games on four separate days, giving everyone a big holiday of football. Now that Week 16 is in the books, we’ve got just one final week left to decide the NFL regular season. Some players will play great. Others will not. Every week we highlight the lowest-graded players at every position. This past holiday weekend, there were a fair few.

Week 16 offense

Quarterback: Trevor Siemian, Denver Broncos, 33.6

Denver’s season ended with a bit of a whimper on Sunday night, thanks largely in part to an offense that couldn’t get nearly anything going. Siemian really struggled under pressure, completing just 2-of-12 passes for 20 yards on the day. When he looked deep he was rarely accurate, completing one pass beyond 20 yards downfield (a 26-yarder) in seven attempts, with one of them being intercepted.

Running back: Carlos Hyde, San Francisco 49ers, 47.9

While it was unfortunate to see Hyde go down with a sprained MCL (he was not downgraded for fumbling on that play), he had struggled up to that point. He had already fumbled once before, and had gained just 39 yards on 13 carries.

Wide receiver: DeAndre Hopkins, Houston Texans, 36.4

Hopkins was targeted just six times all game and caught three of them for 43 yards. He dropped a pass and also had two offensive pass interference penalties to go along with a false start.

Wide receiver: Mike Wallace, Baltimore Ravens, 43.8

Wallace saw seven targets in his game, and managed to haul in four of them but gained only 21 yards, with one of them being a 14-yarder alone. He also dropped two passes.

Slot receiver: Seth Roberts, Oakland Raiders, 48.0

Roberts was mostly a ghost for the Raiders on Saturday. Despite 51 snaps and four targets, Roberts had zero catches.

Tight end: Will Tye, New York Giants, 38.5

Tye was nothing special in the receiving game, catching five passes for just 23 yards on eight targets. But he also struggled as a blocker, finishing with a 30.1 run-blocking grade.

Left tackle: George Fant, Seattle Seahawks, 27.9

Fant has had as tough a year as any tackle in professional football, and it continued last week. He allowed two sacks and seven quarterback hurries, while also posting just a 29.3 run-block grade.

Left guard: Tyler Shatley, Jacksonville Jaguars, 33.2

It was a tough day in pass protection for Shatley, who allowed a hit and four quarterback hurries. He also had a few other plays where he was cleanly beaten.

Center: Zane Beadles, San Francisco 49ers, 33.0

Almost all of Beadles struggles came in the run game, as he actually didn’t allow a pressure in pass protection. But he allowed six run stops in the run game on top of multiple other disruption plays. He also had three penalties.

Right guard: Joshua Garnett, San Francisco 49ers, 41.1

Garnett joins his teammate Beadles on the list after allowing four quarterback hurries in pass protection, as well as multiple disruptive plays when he was run blocking.

Right tackle: John Theus, San Francisco 49ers, 27.5

By this point it’s clear that the 49ers offensive line struggled mightily. Theus himself allowed a quarterback hit and six additional hurries. He also allowed eight run stops and had a false start and tripping penalty.

Week 16 defense

Edge defender: DaVonte Lambert, Tampa Bay Buccaneers, 33.8

In 57 defensive snaps, Lambert didn’t record a single pressure. He didn’t make a single run stop and finished with just two tackles. He missed a tackle as well.

Interior defender: Grady Jarrett, Atlanta Falcons, 35.5

Jarrett had a quarterback hit and two late pressures, but failed to make a single stop in the run game. He was a big reason the Panthers averaged 5.2 yards per rush.

Interior defender: Star Lotulelei, Carolina Panthers, 36.0

The Panthers defense had even less success stopping the run against the Falcons, allowing 6.3 yards per rush. Lotulelei was a big factor, as he made just one solo stop all game.

Edge defender: Erik Walden, Indianapolis Colts, 35.5

Similarly to Lambert, Walden didn’t record a single pressure in 54 snaps. He had just one solo tackle and one assist, while missing a tackle.

Linebacker: Craig Robertson, New Orleans Saints, 27.0

Robertson struggled in coverage, allowing all four targets he saw to be caught for 39 yards and a touchdown. In the run game he made just one solo stop while missing three tackles.

Linebacker: Ryan Shazier, Pittsburgh Steelers, 29.5

Shazier also had a really tough time in coverage, allowing 8-of-10 targets to be caught for 84 yards and a touchdown. He did have an interception, although he missed two tackles on the day as well.

Cornerback: Tracy Porter, Chicago Bears, 19.4

Porter allowed just five catches on seven targets, which doesn’t seem like it would equate to such a low grade. But those five catches went for 160 yards, with 71 of them coming after the catch. Porter was also beaten badly on the other two targets, and was bailed out by a bad throw. He also took a pass interference penalty.

Cornerback: Brandon Williams, Arizona Cardinals, 33.1

The Seahawks decided they were going to pick on Williams, and they did just that to the tune of 18 targets. He allowed 11 of them to be caught for 163 yards and two touchdowns.

Slot corner: T.J. Carrie, Oakland Raiders, 32.5

Carrie in the slot allowed three catches on five targets for 86 yards. He was beaten on both of the other incompletions as well.

Safety: Darian Stewart, Denver Broncos, 28.7

Stewart definitely struggled in coverage, allowing five of six targets to be caught for 35 yards and a touchdown. But he missed four tackles on the day and had a run-defense grade of just 23.6, lowest among defensive backs.

Safety: T.J. Green, Indianapolis Colts, 37.6

Green was okay in the run defense game but struggled in coverage. He allowed three catches on three targets as the primary coverage man for 38 yards and a touchdown, while also having issues with his over-the-top help.

Week 16 special teams

Punter: Jeff Locke, Minnesota Vikings

Locke punted five times and averaged just 37.2 yards per punt. He didn’t land any inside the 20-yard line and his net average of 29.2 yards was the lowest of the week.

Kicker: Dan Carpenter, Buffalo Bills

Carpenter not only missed a 46-yard field goal early in the game, but he missed a 45-yarder in overtime that could’ve won the Bills the game.

Kick returner: Tavon Austin, Los Angeles Rams

Austin returned five punts and gained just 13 yards total, including one in which he fumbled