Mercifully, the 2012 New York Jets season has come to a close.
Their play on the field was brutal to watch for much of the year, and the irresponsible media coverage of the team made them nearly impossible to follow all season.
After their 28-9 loss today to the terrible Buffalo Bills, the Jets have landed themselves a top-10 pick in the 2013 NFL draft, boosting themselves as many as six spots depending on tiebreakers and the results of later games.
But that still didn't make watching their 2012 finale any easier.
Their offense was a disgrace, as it could only muster three field goals against one of the worst defenses in the NFL. Even behind a strong running attack while winning the time-of-possession battle, they still lost by nearly three touchdowns.
Sweeping changes should be coming, and coming fast.
But before some people and players are shown the door, let's allow them to be graded one last time before they leave.
Mark Sanchez: F
Sanchez unexpectedly got another chance to make a claim to starting next season as the team's quarterback and showed nothing to make that seem like a possibility.
When Jordan White caught a pass at the end of the game, he became the 22nd player to do so for the Jets this season and the 10th different wide receiver.
For much of the early part of the game, Sanchez was asked to manage the game with short passes at opportune times. He couldn't even do that successfully.
Sanchez finished 17-of-35 for 205 yards in a fittingly poor performance to end an abysmal season.
Shonn Greene: B+
Greene finished with 74 yards on 19 carries, much of that coming in the first half. Greene and Bilal Powell led a strong running attack in the first half, but the Jets couldn't cash in on those chances with touchdowns. When the Bills finally adjusted, Greene couldn't make anything happen on his own.
Bilal Powell: B+
Like Greene, Powell ran well when given the opportunity. He had 56 yards on just 12 carries, but failed to convert a 4th-and-1. Still, Powell has shown this season that he can be a successful platoon NFL running back.
Braylon Edwards: B+
Edwards had four catches for 42 yards, including an acrobatic grab over a Bills defender. He is the only Jet on the roster who is capable of making a play like that.
Jeremy Kerley: A-
Kerley had three catches for 88 yards and was the Jets top receiver on the day. He took a swing pass and turned it into a 40-yard gain. He also did a good job to keep both feet in bounds for another 40-yard gain on a deep pass.
Jordan White: B
Although he had just one catch for 13 yards, White gets a B for his entire 2012 journey. He fought through early-season injuries, was cut multiple times and passed over while people like Jason Hill and Mardy Gilyard were brought in off the street instead of him. He was active today and got his first NFL catch. Good for him.
Jeff Cumberland: B-
Cumberland had three catches for 36 yards. With Dustin Keller missing, this entire position is removed from the offense.
Offensive Line: C
The line allowed just one sack and even that wasn't a clean sack. It came when Spencer Johnson beat Nick Mangold and knocked the ball out of Mark Sanchez's hand on a play that was slow to develop.
Overall, the pass protection was average. Sanchez did have to scramble out of a couple of tough spots, but it wasn't anything like last week.
The line gave Shonn Greene and Bilal Powell a ton of running room in the first half, but once the Bills started sending extra men in the box, those holes closed up.
An uneven performance at best.
Quinton Coples: B
Coples continues to flash when he's on the field. He had two solo tackles, one of which came on a big stop of C.J. Spiller.
Muhammad Wilkerson: B+
Wilkerson missed some time as he brushed off an injury, but was his usual active self along the line of scrimmage. He had four tackles and delivered a few quarterback hits. Unfortunately, one of those hits went for a key 15-yard penalty that eventually led to a Bills touchdown.
Mike DeVito: A-
DeVito didn't have huge numbers, but he did manage two solo tackles and a forced fumble deep in Bills territory. Unfortunately, the Jets offense was so bad it couldn't convert that fumble into any points, despite being given the ball at the 15-yard line.
Sione Pouha: D
Pouha had just one assisted tackle all game. He wasn't himself all year, including today.
Kenrick Ellis: C
Ellis had three tackles, but was easily moved aside to clear room for Brad Smith's four-yard touchdown run.
Calvin Pace: C+
Pace had just two total tackles, but he did bat a pass down, and he also applied pressure that forced Ryan Fitzpatrick to throw early and incomplete on a third-down play.
David Harris: C
Harris had a quiet game with just three solo tackles.
Bart Scott: A-
In what could be his final game as a Jet, Scott was the Jets' best linebacker. He led the team with five solo tackles and added an assisted tackle as well.
Garrett McIntyre: B-
McIntyre continued to make a push for a spot in the team's revamped linebacker unit next year with another decent performance. He had four solo tackles on the game.
Antonio Cromartie: B
Cromartie was victimized a couple of times during the game by Stevie Johnson on his way to a 111-yard performance. It was a mostly quiet day for the Pro Bowler.
LaRon Landry: C+
Landry was assigned coverage of C.J. Spiller on his 66-yard touchdown run, but it's tough to totally blame him for the touchdown. Landry could have possibly had better coverage at the very start, but David Harris was blocked into Landry as Fitzpatrick made the throw.
Landry had a quiet afternoon with just three solo tackles.
Yeremiah Bell: C+
Bell had four total tackles and also had a hand in Spiller's 66-yard touchdown. He took a poor angle on the play, allowing Spiller to burst through the middle.
Kyle Wilson: B
Wilson didn't see a lot of action his way and continued to play at an average level. Even though he hasn't played up to a first-round talent, he hasn't been as bad as people make him out to be.
Wilson had a nice breakup of a deep pass, but allowed a 17-yard completion to Brad Smith on a 3rd-and-10.
Eric Smith: D
On C.J. Spiller's 66-yard touchdown run, an offensive lineman ran 25 yards downfield and completely took Smith out of the play. He had four tackles. Thank goodness this is the last time we should see him in a Jets uniform.
Darrin Walls: D
Walls again showed that he should be nowhere near the field as the Bills clearly targeted him when he was in the game. He allowed a 37-yard completion to Stevie Johnson on a play in which he was in good position to make a play. Instead, he let Johnson go up over him to make the catch.
Antonio Allen: B-
Allen continued to see additional playing time as he may have to step into a bigger role next season. He held up well with three total tackles.
Nick Folk: A
Folk was 3-for-4 on field-goal attempts with his only miss coming on a block. Kicking in conditions that saw swirling winds and a wind chill of 13 degrees, that's no small feat. Just ask Rian Lindell.
Robert Malone: B
Malone shanked his first punt, a 32-yarder, but was good from there. He had a long of 61 yards and an average of 43 yards on four punts.
Rex Ryan: C-
On one hand, there's no way the Bills are 19 points better than the Jets, so you'd like to blame the coaching. But really, what is Rex Ryan supposed to do?
The defense played hard and kept the Jets within striking distance throughout.
The putrid offensive performance doesn't fall on Ryan or any coaches today—that's on the players. The Jets were fine with their timeout usage and game management, so there're no complaints there.
There's an old saying that says you can't make chicken salad out of chicken crap. There was no chicken salad today, or all season long.
Tony Sparano: C
As bad as Tony Sparano has been this year, the play-calling in today's game was actually pretty good. Sparano came out pounding the ball on the ground against a poor Bills run defense and then adjusted when he needed to.
It was when the Jets were forced to start throwing the ball down the field that they couldn't get anything going.
The first time the Jets were inside the 10-yard line, Sparano called run-run-pass, which was fine. The only play-call there could have been problems with was on 3rd-and-12 from the 17, when Sparano called for a draw.
At the time, it was a 14-9 game at the start of the third quarter, so it's fine to go conservative there and just avoid the mistake. The only problem was that the subsequent chip-shot field goal was blocked.
There have been plenty of games to get on Sparano for his play-calling and misuse of Tim Tebow, but today wasn't one of them.
Mike Westhoff: C
The Jets couldn't send Mike Westhoff to his retirement with one last strong performance on special teams. Their kick coverage was below average and they had a field goal blocked. It was typical of a season-long, subpar performance for the Jets' special teams.