The Denver Broncos weren’t really expected to even compete on Sunday, in their final game of the regular season.

The 12-3 Oakland Raiders came to town looking to clinch the No. 2 overall seed in the AFC, lock up a bye week, and their first home playoff game in 14 years. The 8-7 Broncos had already been eliminated from the postseason, and on Sunday, we received word that head coach Gary Kubiak would be retiring after the season.

The Broncos were supposed to be fodder for an Oakland team that has its eyes on a much bigger prize.

Instead, it was the Broncos that came out looking like the team with playoff plans.

Denver blew out the Raiders 24-6, compiling nearly 350 yards of offense, and controlling the ball for over 35 minutes.

The Orange Crush defense showed it can still be dominant, holding the Raiders offense to just 221 total yards, and forcing three turnovers.

The 2016 Broncos season will no doubt be remembered as a disappointment, but Sunday gave some hope that the future can still be bright.

Here is the good, the bad, and the ugly from the Broncos win over Oakland.

The Good

Sending Gary Kubiak out a winner

News broke early Sunday morning that head coach Gary Kubiak would be retiring due to health concerns. The news surprised fans and players alike, but somehow this roster pulled together to give Kubiak a positive farewell.

Kubiak’s first health scare came when suffered a “minor stroke” back in 2013, while coaching the Houston Texans. Then, this year in Week 5, after a loss to the Atlanta Falcons, he was taken by ambulance to a local hospital and treated for what was deemed a “complex migraine”.

In his two years as head coach, he led Denver to a 23-11 record, and a Super Bowl win. He was also the offensive coordinator and quarterbacks coach when the Broncos won back to back titles in 1997 and 1998.

Gary Kubiak was a great Bronco.

It was nice to send him out with a win.

The contributions from young players

With so many injuries, the Broncos were playing with what looked like a preseason roster at times. DeMarcus Ware was out, as was Brandon Marshall, Derek Wolfe and TJ Ward. Emmanuel Sanders would leave the game early in the first quarter, with a foot injury.

But other players stepped up. Rookie running back Devontae Booker rushed for 57 yards on just 14 carries, and caught two passes for 52 yards and a touchdown. Jordan Taylor, Cody Latimer, and Jeff Heuerman combined for eight catches and 90 yards.

And on the defensive side of the ball, the Broncos got quarterback pressures from Shane Ray and Shaquil Barrett. Rookie Adam Gotsis recovered a fumble. Defensive backs Will Parks and Justin Simmons defended three passes, with Simmons intercepting one, and returning it for 45 yards.

Yes, Broncos fans, there really is an offensive line

The Broncos offensive line finally showed some proof of its existence on Sunday, opening up some running lanes and keeping Raider defenders off of quarterback Trevor Siemian, for the most part.

We had been hoping to see a hint of a running game all season. Who knew it would take until the 16th game of the campaign?

Denver runners racked up 143 yards against Oakland, and while Siemian was hit three times, he wasn’t sacked all day. As a result, the offense actually showed some production, and scored more points (24) than they have scored in their previous three games combined (23).

The Bad

Losing Gary Kubiak

The Broncos may have had a tough year, but this is a relatively young team that still has a window to compete for a title in the next few seasons.

With the correct hire, this team should still be able to do just that; but the Broncos are now going to face some big questions in regard to their coaching staff.

Can they find someone with head coaching experience?

Will whoever they hire be open to keeping defensive coordinator Wade Phillips, who put together one of the greatest defenses in NFL history a year ago?

The Broncos roster needs a few tweaks to get back to Super Bowl form.

Now they need a new coach too.

There was no sign of Paxton Lynch

After stating that he would play both Trevor Siemian and rookie Paxton Lynch on Sunday, Kubiak changed his tune, once the game could actually be won.

That is at once a vote of confidence for Siemian, but also an apparent lack of faith in Lynch.

In his two starts with Siemian out, Lynch went 35 for 59 for just 327 yards, with one touchdown and one interception. But the bigger concern is how lost he looked.

On Sunday, Gary Kubiak didn’t trust Lynch to hold on to an 18-point lead at home.

That isn’t a good sign.

The Ugly

The injuries

Injuries are unfortunately a part of football, and both teams lost some players on Sunday.

The Raiders lost a number of players including offensive lineman Donald Penn and quarterback Matt McGloin.

The ugliest injury of the day however,  involved Broncos backup linebacker Zaire Anderson.

Late in the third quarter, Anderson sustained a neck injury while covering a punt. Broncos medical staff exercised caution and Anderson was immobilized and carted off the field after a lengthy delay. Anderson was taken to a Denver hospital, and was released early Sunday evening.

That play is a reminder that disaster can strike on any play in the NFL.