It's time to reflect on the 2017 offseason. There are a few stray veterans left in the free-agent pool, and teams could still execute something unexpected if injuries arise, but organizations have mostly closed their checkbooks and built the rosters they're going to take onto the field in September.

Of course, we can know only so much right now. This time last year, there was no way anybody knew that the Cowboys had drafted a franchise quarterback. Kyle Shanahan was lucky to survive the offseason in Atlanta as an offensive coordinator, let alone be considering head-coaching roles.

At the same time, we can look at what each team's goals were (or should have been) heading into March and gain a sense of whether they did enough to address those concerns. In most cases, we also can plot what they have to do before hitting Week 1.

We'll run division by division over the next two weeks. Let's head to the AFC North, a division that seems to perennially send two teams to the playoffs and is unquestionably stronger across the board.

To go directly to your favorite team, click the link below:

Ravens | Bengals | Browns | Steelers

What went right

The Ravens are suddenly deep in the secondary. Baltimore has been struggling to piece together a coherent secondary for years, owing to ill-fated free-agent signings (Kyle Arrington) and extensions handed to players who couldn't stay healthy (Jimmy Smith and Lardarius Webb). Missing pieces cost the Ravens dearly -- the Patriots launched their 14-point comeback in the divisional round of the 2014 playoffs by repeatedly torching cornerback Rashaan Melvin, whom the Ravens had signed off the street and inserted into the starting lineup weeks earlier.

After years of trying to cycle players around and plug holes on the cheap, Ozzie Newsome made solving the secondary a priority this offseason. The Ravens signed a pair of veteran free agents, most notably safety Tony Jefferson from Arizona. In combination with Eric Weddle, Jefferson gives the Ravens a pair of versatile safeties capable of both lining up in coverage, dropping into center field and attacking the line of scrimmage. That flexibility should make it easier for the Ravens to disguise their pre-snap intentions.

At cornerback, Baltimore added to its bunch by signing Cowboys cornerback Brandon Carr to a deal. Carr had his best campaign in several seasons last year despite a relatively docile Dallas pass rush. Carr's four-year, $23.5 million contract could be as short as a one-year pact, depending on how Carr performs and how quickly first-round pick Marlon Humphrey adapts to the NFL. Professional teams have had mixed luck with Alabama cornerbacks -- they've been happy to draft Dre Kirkpatrick and Kareem Jackson while regretting taking Dee Milliner and Javier Arenas -- but Newsome probably deserves the benefit of the doubt. This is a deep unit, and while Carr and Weddle are close to the end of their careers, Humphrey and the 25-year-old Jefferson should be lining up in Baltimore for a while.

They signed Danny Woodhead. Frequently underrated, Woodhead should, at the bare minimum, represent an upgrade on checkdowns and screen passes compared to what Kyle Juszczyk offered last year. Health is perpetually a concern with the 32-year-old Woodhead, but he has proved to be a get-out-of-jail-free card for teams and always seems to end up carving out a meaningful role on effective offenses. He should form a nice low-cost rotation with Kenneth Dixon when the second-year RB returns from a four-game suspension.

The Ravens paid Brandon Williams $10.5 million per year to stick around. Rob Carr/Getty Images

What went wrong

There's something missing at wide receiver. The Ravens didn't really replace Steve Smith, and Kamar Aiken chose to leave for Indianapolis after seeing his role reduced last season. What's left isn't especially inspiring. Both Mike Wallace and 2015 first-round pick Breshad Perriman are deep threats who struggle to be complete receivers. Next up is slot receiver Michael Campanaro, who spent part of last year on the practice squad. Baltimore is at least one wideout short of a full pack. The free-agent market doesn't feature many options, but the Ravens could still look up veterans like Vincent Jackson, Stevie Johnson or even old friend Anquan Boldin to flesh out their depth chart.

They might not have played their cards right up front. I can't fault the Ravens for re-signing massive nose tackle Brandon Williams, who set last year's Damon Harrison deal as a target and topped it by signing a five-year, $52.5 million contract to stick around in Baltimore. Williams will earn $33.8 million over the first three years of his deal, which compares favorably to the $29.3 million Harrison netted in his pact with the Giants. As the anchor of a run defense that ranked fifth in DVOA last season, Williams unquestionably makes the Ravens better.

But in looking at the rest of the market for run-stuffing defensive tackles who don't threaten opposing quarterbacks as pass-rushers, the Ravens might have overpaid. (The 28-year-old Williams topped out with two sacks and four quarterback knockdowns in 2015.) Dontari Poe and Bennie Logan, the closest comparables to Williams on the market, weren't able to pick up multiyear deals and settled for one-year, $8 million pacts. Williams is the best player of the three, but is he really worth that much more than Poe or Logan?

Baltimore also got thinner up front in deals that didn't seem to net them very much. They dealt Tim Jernigan to the Eagles for the privilege of swapping the 99th pick for the 74th selection, which is roughly equivalent to the 170th pick, or a late fifth-rounder, by the Chase Stuart draft chart. While Jernigan was likely to leave in free agency after the season, Baltimore probably would have picked up a similar-or-better compensatory pick in 2019. They also lost the useful Lawrence Guy to the Patriots on a modest four-year, $13.4 million deal. Given that the Ravens won't get a comp pick for Guy, it seems as if he would have been worth holding onto. In addition to Michael Pierce, defensive coordinator Dean Pees will be relying heavily on players such as Willie Henry, Brent Urban, Carl Davis and Bronson Kaufusi, who combined to play 150 defensive snaps last season.

The pass rush might still be a problem. Zach Orr's unexpected retirement sealed Baltimore's plan to move Kamalei Correa to inside linebacker, and when the Ravens subsequently cut Elvis Dumervil, they were left with a hole across from Terrell Suggs. Having Suggs as your only pass-rusher of note wouldn't be a terrible thing in 2009, but Suggs is now 34 and on the wrong side of two torn Achilles. It's impressive enough that the Hall of Fame candidate racked up eight sacks in 15 starts last year, but the Ravens badly needed somebody to take the pressure off of Suggs. The Ravens used second- and third-round picks on Tyus Bowser and Tim Williams, but they're both raw prospects who are unlikely to step in immediately. Baltimore should still be in line to consider pass-rush help, but the best player on the market is Dumervil, the guy they released earlier this offseason.

What's next?

Sign Erik Walden. In lieu of targeting Dumervil or someone like Dwight Freeney, Baltimore should look up Walden, who has a reputation as an above-average run defender at the point of attack and racked up a career-high 11 sacks for the Colts last season. He won't hit those totals again -- he averaged fewer than six sacks per season as a starter in Indy -- but he could serve as a competent rotation piece.

Grade: B-

What went right

They re-signed CB Dre Kirkpatrick. While the Bengals continued to shed more of the young talent they've drafted and developed over the past few years this offseason, they were able to bring back one key piece in re-signing Kirkpatrick. Once a point of frustration for Bengals fans, the former first-round pick has matured into a very useful cornerback, if one stretched by top-level talent at times. Kirkpatrick will earn $32.2 million over the first three years of his deal, which is relatively cheap compared to the likes of Janoris Jenkins ($39.7 million).

John Ross, A.J. Green and Tyler Eifert could be a terrifying combination. It wasn't unreasonable for the Bengals to allow Marvin Jones and Mohamed Sanu to leave last offseason, although it would have probably been better, in hindsight, for the organization to hold onto one of their two drafted-and-developed products. Injuries prevented Green and Eifert from making a simultaneous impact in 2016.

If we don't include the game in which Green tore his hamstring on the opening possession against the Bills, Cincinnati's duo played all of three contests together last season. The Bengals averaged 26 points in those three contests, up a full touchdown from their average of 19 points the rest of the way. Part of that was playing the Browns, but the presence of two terrifying weapons in the passing game opened up passing avenues for Andy Dalton and running lanes for an otherwise frustrating Bengals attack.

Given that Eifert seems to perennially be an injury risk, you can understand why the Bengals might want to throw another star wideout into the mix. Ross is pure adrenaline as a deep threat, and defenses who have to deal with his 4.22 speed will be left with an impossible choice. If you double Green, you're going to leave Ross one-on-one on an island against a cornerback who can't possibly keep up. If you shade your safety help over toward Ross, you'll end up leaving one of the best receivers in football in a mismatch. And if you play two-deep man and play safety help over the top against them both, you're leaving Eifert alone against a nickel corner or a linebacker. Everyone has to stay healthy, but none of those scenarios are ideal.

John Ross' 4.22 speed is what helped make him a top-10 pick. Sam Greene/Cincinnati Enquirer via USA TODAY NETWORK

What went wrong

Their offensive line is in a shambles. The most important thing with which to surround Dalton -- even more so than receivers like Ross and Green -- is protection. Dalton is an entirely different quarterback when he's pressured. Over his six-year career, Dalton's QBR is a respectable 70.0 when he's left alone in the pocket. When he's pressured, though, that number falls all the way down to a QBR of 9.9. The only passer over that time frame with a worse QBR under pressure is Mark Sanchez (minimum 200 attempts).

The Bengals knew two years ago that Andrew Whitworth and Kevin Zeitler were going to hit unrestricted free agency this offseason, which unquestionably led to them drafting Cedric Ogbuehi and Jake Fisher with their top two selections in the 2015 draft. Things have not exactly gone well. Fisher has barely played and wasn't even able to beat out journeyman veteran Eric Winston as the team's swing tackle for stretches last year, and Ogbuehi missed all of 2015 and was a disaster at right tackle last season. It's not good when a player describes his own season with an expletive.

If Ogbuehi and Fisher were ready, the Bengals could have happily let Whitworth and Zeitler leave. They're not, and the Bengals weren't able to hold onto either of their top two linemen anyway. Whitworth, quietly one of the best linemen in football over the past five years, left to go protect Jared Goff in Los Angeles on a one-year deal the Bengals should have been able to top. The Browns simply outbid the Bengals for Zeitler. Cincinnati re-signed Andre Smith, who was a disaster in both 2015 (for the Bengals) and 2016 (for the Vikings), in the hopes that he'll move to guard and allow Fisher to play right tackle. Ogbuehi also suggests he'll be better as a left tackle than he was on the right side. Regardless, Bengals fans have to hope Dalton will have enough time to find his wildly talented receiving corps for big plays this season.

What's next?

Sign Orlando Franklin. The Chargers recently released the versatile Franklin, who never really seemed to find his footing in San Diego after playing well in Denver. The Chargers will be on the hook for at least part of the bill, given that they already owe him $3.5 million in guaranteed money, and signing Franklin won't impact the compensatory picks the Bengals are likely to receive for Whitworth and Zeitler. If Smith doesn't pan out at guard, even a limited Franklin might be Cincinnati's best option.

Grade: C+

What went right

They drafted Myles Garrett. It's no guarantee Garrett turns out to be a superstar, but nobody can fault the Browns for drafting the consensus top pick at a position that is valued nearly as highly on the open market as quarterbacks these days. If all goes well, Garrett will be a building block alongside Jamie Collins, Danny Shelton and Joe Haden in Cleveland's new 4-3 defense under Gregg Williams.

They massively upgraded their offensive line. The largest and most successful rebuild of the past few years is what the Raiders have pulled off under Reggie McKenzie, so it's no surprise that teams at the bottom of the league have begun to emulate (steal) McKenzie's process. The former Packers personnel executive built his roster from the offensive line out, and so the Browns did the same this offseason. It helps Sashi Brown to start with a future Hall of Famer at left tackle in Joe Thomas, but it's telling that Cleveland quite publicly allowed right tackle Mitchell Schwartz to leave in free agency for the Chiefs last offseason, a move that now looks like a bargain given how the tackle market escalated this winter.

Cleveland shifted gears this offseason and went heavy on protecting its quarterback, whomever it might be. Zeitler, signed away from the rival Bengals, is one of the best guards in football. Intelligently, though, the Browns first locked up incumbent guard Joel Bitonio to an extension, ensuring that they secured a talented player's future before re-setting the market at the same position. Cleveland also imported JC Tretter. The former Packer had flashed stretches of usefulness over the past couple of seasons, but I'm less enthused by this signing than Bitonio or Zeitler. While right tackle is still a question mark for Cleveland, this should be an effective and quite possibly excellent offensive line.

Cleveland continued to generate draft capital for 2018. The Browns already had amassed a ton of draft picks for both 2017 and 2018, but they continued to be patient and create additional assets for the years to come. Cleveland acquired Houston's 2018 first- and second-round picks in trades this offseason, leaving them with two first-round picks, three second-round picks, two fourth-round picks, and a pair of sixth-rounders in next year's draft. The Browns can use those picks to add depth, acquire veterans, or as part of a package to eventually move up and grab a quarterback.

What went wrong

They changed defensive schemes after one year. One of the hallmarks of perpetually rebuilding franchises, such as this one, is changing their coaching staff and schemes far too frequently. Defensive schemes matter less than ever before, given how frequently teams are in their sub packages and roll out five or more defensive backs, but the Browns have switched from a 3-4 to a 4-3 or vice versa three times in seven years. It's an easy way to end up with marginalized players whose size and skill sets fit a scheme you no longer play. Things might work out fine for the Browns, but it's hard to reconcile their clear grab for long-term stability with their decision to swap out Ray Horton for Williams after Hue Jackson's first year in town.

Hue Jackson and Cleveland's brain trust have to be happy with the Browns' additions along the offensive line. Ken Blaze/USA TODAY Sports

They paid about $11 million or so for a second-round pick. I wrote about the logic behind the Brock Osweiler trade both before and after it happened. The arguments surrounding the trade quickly fell into extreme camps: The Browns were either the smartest team alive for buying a draft pick, or they were foolish idiots for spending $16 million on a mid-round pick.

Neither is really true, as I wrote back in March. Osweiler has some value as a passer with modest upside, given what he showed in Denver. A reasonable backup quarterback with Osweiler's track record would probably get about $5 million on the free market. It also seemed plausible, given reports after the trade, that the Browns might be able to trade Osweiler to a third party by eating some of the money attached to his deal, a move that would both save them money and generate another draft pick.

That never happened, which makes the trade harder to digest. Teams are too happy to deal future mid-round selections the weekend of the actual draft to make such a pick worth $11 million; consider that the Saints were reportedly offering their 2018 second-round pick to move up in the third round and grab a pass-rusher this year. Saying it's just money is also naive, given that the Browns are incurring the opportunity cost of not spending that money elsewhere. They could have used that $11 million to fund enormous investments into their own infrastructure and have millions left over. They could have saved the actual $16 million in cash, rolled the cap space over, and used it when they're far more competitive in a year or two. The Osweiler trade was hardly indefensible, but unless he breaks out and/or the Texans totally collapse in 2018, it will be too aggressive of an investment.

What's next?

Sign Colin Kaepernick. Even after adding DeShone Kizer, it seems foolish for the Browns to not inquire about Kaepernick. It was only a few years ago that Jackson rued missing out on the Nevada product, noting in 2013 that his Raiders "wanted Kaepernick in the worst way." Kaepernick has been up and down since then, but it's hard to fathom that Jackson saw greatness in Kaepernick before the draft, witness that greatness realize itself during Kaepernick's high points in San Francisco, and somehow now thinks Kaepernick isn't even worth bringing into training camp. If it comes at the expense of Osweiler, well, they're called sunk costs for a reason.

Grade: B

What went right

Ben Roethlisberger didn't retire. It seems weird to give the Steelers praise for this -- after all, it's not as if we're crediting the Patriots because Tom Brady didn't retire, or congratulating the Seahawks because Russell Wilson didn't go play baseball -- but there was certainly discussion that Pittsburgh's longtime quarterback would vacate his position this offseason. That discussion ended up mostly serving to fill column inches, as every indication is that Roethlisberger will be returning for the 2017 season. Pittsburgh still needs to come up with a coherent post-Roethlisberger plan, as Landry Jones has been ineffective as Roethlisberger's backup over the past two years. (His best game, notably, came against a Browns team that might not have been trying too hard to win in Week 17.)

Martavis Bryant is back. The Steelers waited out Bryant's suspension and should get another target for Roethlisberger in the passing game. In his past 16 games, Bryant has caught 60 passes for 993 yards and eight touchdowns. That's not going to fundamentally change the Steelers' offense, but when you consider that he was doing that after Antonio Brown and Le'Veon Bell were getting touches, it's an impressive level of production. The next step for Bryant is to stop dropping deep passes, because few players in the league seem to get themselves open easier than the Clemson product.

The Antonio Brown deal is done. It's a shame for the Steelers to no longer benefit from one of the best contracts in football, but there are plenty of teams who would have happily lined up to give the league's best wideout the four years and $68 million Brown signed for this February. The Steelers ended up paying Brown $37.3 million for the five-year stretch between 2012 and 2016, which is roughly what the Rams gave Robert Woods this offseason. Money just doesn't go as far as it used to.

Antonio Brown will be staying in Pittsburgh for quite some time after signing a big extension this offseason. Charles LeClaire/USA TODAY Sports

James Harrison is back. Quietly one of the best deals in football, the Steelers perennially get a discount from a player who wants to play only in Pittsburgh. Harrison was somehow one of the league's most terrifying pass-rushers again by the time the postseason arrived. He finished the season with 7.5 sacks (2.5 in the playoffs) -- all for the grand total of a $1.3 million base salary. Harrison responded by signing a two-year, $3.5 million deal with just $500,000 in guarantees and a $1.2 million base salary in 2017. Every team in football would sign up for that production.

What went wrong

They weren't able to lock up Bell. As is the case with Kirk Cousins, every day Bell gets closer to free agency just increases his leverage. The Steelers franchised Bell by giving him a one-year deal worth $12.1 million. Even if you think Bell is the best running back in football (and that's a very reasonable opinion), Bell is being paid an enormous premium. LeSean McCoy is the only running back with a cap hit of more than $7 million.

I can't fault the Steelers for wanting Bell on a one-year, $12.1 million deal. It's going to be really tough, though, to justify franchising him for a second time in 2018 and paying him $14.5 million, which will be more than double the cap hit of any running back short of McCoy. Bell's representation knows that, which makes the cost of keeping Bell off of the free market prohibitive. If the Steelers can't negotiate a long-term deal by the July 15 deadline, this could be Bell's last season in town.

What's next?

Bringing in a backup running back who can catch the ball. Bell's one weakness is his susceptibility to injury, meaning that Pittsburgh needs to plan as if they'll be without their starter for some stretch of the 2017 season. Third-rounder James Conner gets mixed reviews for his receiving ability, and while he can certainly improve as a pro, the Steelers might want to have someone around if he struggles in camp. Pittsburgh let DeAngelo Williams leave in free agency, and Williams might still be a logical fit to return, given that he's still available. Chris Johnson, who rebuilt his career in Arizona, also could be an option for close to the minimum.