Let’s make one thing clear from the jump: The 2016 San Francisco 49ers offense is markedly more competent than a 2015 49ers offense that wouldn’t have looked terribly out of place in the Mountain West conference.

Through the opening two weeks of the season, San Francisco boasts the league’s ninth-best scoring offense, putting 55 combined points on the board against Rams and Panthers defenses projected to be among the best in football. A year ago, the 49ers didn’t top that figure until the third quarter of Week 5, and had a five-game stretch in the middle of the season where they fell three points shy of that mark.

That improvement, while great for both the 49ers’ odds of remaining competitive this season and the watchability of this team on a weekly basis, does not mean they suddenly possess a good offense. A number of problems have presented themselves over the first two games, some new, and others that are old friends.

As is often the case, that conversation begins with the quarterback. At this point, Glaine Babbert Blaine Gabbert is the QB equivalent of a blind squirrel trying to find a nut — sure, he might be able to sniff around and get lucky every once in a while, but more often than not he’s comically off the mark.

Gabbert’s striking inaccuracy reared its head on a number of drop-backs in Carolina, often leaving significant chunks of yardage on the field.

On this first-and-10 play toward the end of the second quarter, the 49ers are able to get Torrey Smith one-on-one downfield with Panthers safety Tre Boston on the deep post route. At the point Gabbert determines where he’s going with the football and begins his throwing motion, Smith is on the left hash, giving him more than a half-field of green grass to run to with Boston to his back and no other Panthers defender capable of threatening the catch.

This look is a quarterback’s dream — a speedy wideout matched up with a safety deep downfield, a massive window to throw into, little chance of a turnover, and a nice cozy pocket to throw from. Simply put some air under the ball and lead your guy toward the sideline and all that green space.

Instead, Gabbert tries to put the ball on a rope, significantly narrowing his target window and decreasing his margin for error. A should-have-been-30-plus-yard gain ends up as another incomplete downfield throw that sails eight yards over his intended target’s head.

You can live with one or two missed throws downfield per game; even the league’s best quarterbacks aren’t able to capitalize on every big-play opportunity. But missed throws are the norm for Gabbert in these situations. Against the Panthers, Gabbert completed just 5-of-16 passes (31.3 percent) traveling 10 or more yards in the air, per Pro Football Focus. Especially concerning is how often Gabbert is missing these throws on core pass concepts critical to the success of San Francisco’s passing game.

Four verticals is a bread-and-butter concept in Chip Kelly’s passing game. Kelly teams tend to face a high number of single-high defenses—those featuring one deep safety in the middle of the field—to counteract his run-centric spread offense. By placing an extra defender in the box, the defense can ensure they’re not left at a numerical disadvantage in the run game.

Enter four verticals.

Against single-high defenses, four verticals provides the offense with either one-on-one match-ups on the outside if it’s man, or a four-on-three advantage downfield versus zone. These are scenarios the offense must win more often than not to keep the defense honest and prevent them from loading up the box to shut down the run game. Yet, Gabbert was continuously unable to connect with open receivers when Chip dialed up this concept.

Gabbert receives the added benefit of the deep safety aligning over the two-receiver side of the formation pre-snap, which gives him a two-on-one advantage on the cornerback to the two-tight end side.

"The quarterback has to beat the free safety," Kelly explained when breaking down this concept on PhiladelphiaEagles.com. All Gabbert needs to do is hold the safety to the left half of the field just a little bit, and he should have a wide open tight end to throw to on the opposite side. Is that what happens? Of course not. Gabbert never even glances that direction, allowing Boston to bee-line it toward Garrett Celek in the opposite seam. And even despite that, an accurate throw still results in a completion here. You can probably guess how that went.

Gabbert missed an open target on four verticals at least three more times in this game, and the one completion he did manage (a 20-yard completion to Smith up the left seam late in the first quarter) featured a poorly thrown ball that could’ve easily been intercepted with better break on the ball by Panthers corner Bené Benwikere.

After two weeks, Gabbert has completed just 54.9 percent of his passes; only Shaun Hill (54.5 percent) and Case Keenum (53.8 percent) have been worse. Completion percentage doesn’t always equate to accuracy, but it’s typically a safe assumption that if you’re completing passes at a near-league-low rate, you’re probably not putting the ball where it needs to be. Even when you factor in things like throw-aways and drops, Gabbert has still been one of the league’s most inaccurate passers.

There’s little reason to believe Gabbert’s ball location will suddenly improve any time soon, as we now have 2,057 pass attempts of evidence (dating back to Gabbert’s first season as a starter at Missouri) suggesting he’s simply not an accurate passer. Gabbert has completed 58.2 percent of those attempts—never climbing higher than 63.4 percent in a season—in an era when completion percentages have been steadily rising and several quarterbacks are approaching a 70 percent completion rate each season.

Gabbert supporters (which is just a really strange thing to even type) are quick to point out the improvement in his play from his time in Jacksonville to now as reason to suggest he could eventually develop into a quality starter. And while I suppose that’s technically true—Gabbert is a better player now than he was with the Jaguars—going from one of the worst quarterbacks in NFL history to something slightly better than that doesn’t mean you should be running an NFL offense.

If the 49ers aren’t able to get better play at the quarterback position, no amount of scheming is going to turn this into a good offense, with last week’s game in Carolina providing a glimpse of what that might look like. Remove the 75-yard touchdown pass to Vance McDonald, and the 49ers averaged just 13.5 yards per drive across their 16 other drives. Every other point San Francisco scored came off of turnovers that set them up with excellent field position. In fact, three of their scoring drives combined for a total of eight yards. When good fortune wasn’t provided to them by the defense or special teams, San Francisco struggled to move the ball consistently, largely due to Gabbert’s struggles and some suspect run blocking from the offensive line that prevented the ground game from having a chance to get going.

With a trip to Seattle to face what has been the league’s best defense through two weeks on the docket next, there’s no sign of reprieve.

5 things I like and don’t like

1. Run defense versus two not-awful rushing attacks

While the lack of a consistent pass rush, particularly off the edge, could ultimately keep this defense from reaching its ceiling this season, the run defense has been impressive in the early going. San Francisco held Todd Gurley to under 3.0 yards per carry, and was much better against Carolina’s multifaceted rushing attack than the final yardage totals would suggest, all without Ian Williams, who was one of the league’s top interior run defenders in 2015.

Seattle’s offensive line has been a complete disaster so far. Toss in a hobbled Russell Wilson and Thomas Rawls looking like a long shot to play this week, and all signs point to another strong performance from this unit in Week 3.

2. Offensive line struggling in the run game

Flip over to the other side of the ball, and things haven’t been quite as rosy when it comes to the ground game. As Kelly rightfully pointed out during his Thursday press conference, San Francisco has faced a pair of excellent defensive fronts to start the year, but the big fellas up front have to figure out a way to help out Carlos Hyde & Co. a bit more.

San Francisco running backs are averaging just 2.93 yards per carry so far, but a large percentage of that yardage is coming after contact. Only the Vikings and Bills have seen a higher percentage of their runs (30 percent) get stopped for no gain or a loss through two weeks. The 49ers won’t face fronts as tough as the Rams and Panthers every week, but with games against the Seahawks, Cardinals, Bills, Patriots, and Jets still to come, there are plenty of games left on the schedule to be concerned about.

3. Eric Reid’s usage

It’s been a lot of fun to watch the many ways Jim O’Neil has deployed Eric Reid through two games. He’s lined up all over the place, from deep as a single-high safety to in the box as sub-package linebacker to slot cornerback to edge rusher. Reid is PFF’s top ranked safety through two games, and a lot of that has to do with O’Neil putting him in positions where he can make an impact.

With only five targets, Jimmy Graham has yet to be a significant part of Seattle’s pass offense through the first couple weeks. Regardless, he’s a player who must be accounted for, and I would guess we see Reid matched up with him on the majority of snaps.

4. The idea of Michael Wilhoite as a “coverage linebacker”

Injuries always suck, and Ray-Ray Armstrong landing on injured reserve with a torn pectoral was no exception. The loss of Armstrong is an unfortunate hit for this defense, as he had gotten off to a strong start and was really beginning to establish himself as an impact player in this defense, offering versatility in pass coverage while also being stronger against the run than many had been giving him credit for.

There are a number of ways San Francisco could opt to replace those snaps, but based on Kelly’s comments this week it appears Michael Wilhoite will receive a good chunk of that work, which seems odd. Even when Wilhoite has played well for stretches in past seasons, coverage has never been the strength of his game. With both Wilhoite and Gerald Hodges better suited in base defense roles in run situations, it would make sense to see the 49ers dip into their pool of talented young defensive backs rather than opt for a below-average-at-best inside linebacker. It remains to be seen if things will actually play out this way, but if this is how it plays out, it’s difficult to see the 49ers sticking with this route for too long.

5. Potentially not having to watch Russell Wilson do stupid things like this...

Again, injuries always suck. Under no circumstances would I actively root for any player on any team to get hurt, it’s just not how I roll. More than anything, I just enjoy watching football and football is more fun when players are healthy. But with Russell Wilson hobbled by a high-ankle sprain and looking like a far more statuesque version of himself against the Rams last week, I’d be lying if I said my Sunday wouldn’t be more enjoyable if I didn’t have to watch Wilson pull off some [site decorum] for just one 49ers-Seahawks game.