D.J. Humphries knows the perception of the Cardinals' offensive line is not great.
Some of that is self-inflicted, as the group struggled in 2018 and then allowed 20 sacks in the first four games of 2019.
Since then, though, the Cardinals left tackle and his brethren have found a groove. The protection improved as last season went along – allowing 30 sacks in the final 12 games -- and the rushing attack set a franchise-record in yards per carry.
The narrative never quite changed alongside the performance, but Humphries believes there is an easy way for critics to get on board.
"Turn on the film," Humphries said. "The gist around our building for awhile has been that the reason our offense was doing (well) was the offensive line. It's going to take a couple years of proving people wrong to realize it is what it is. We were in the top-5 in most of the rushing categories. You talk about the progression from the year before last to last year, just tell them to turn on the film, and watch it from Week 1 to Week 17. They'll see the progression."
The group saved its best for last. In the final three games of 2019, the Cardinals racked up 183.3 rushing yards per game at 6.0 yards per carry and their quarterbacks were sacked a total of three times.
Small sample size caveats apply, but if this offseason was any indication, the Cardinals' brass is optimistic about the group's ability to build on that.
General Manager Steve Keim could have made a change at either tackle spot in free agency, but both Humphries and Marcus Gilbert were re-signed. Despite three blue-chip offensive line prospects on the board at No. 8 in the draft, Keim went with linebacker Isaiah Simmons.
Center Mason Cole is projected to be the only new starter on the line – Justin Pugh and J.R. Sweezy return at guard -- but he's not new. Cole started every game in 2018 and was a valuable sixth man fill-in last year. The unit is excited to have so much continuity heading into 2020.
"It seemed like the first three, four, six games (of 2019), we were trying to figure out what our identity was going to be," Cole said. "As we started to find that, we started to really click. I think that's huge for our momentum going into Year 2, and with a lot of the same guys in the room, I think that's even bigger."
Sean Kugler is also back for his second season as offensive line coach after earning rave reviews in his 2019 debut. Kugler designed much of the running game that was so effective, and Humphries is excited to build upon that instead of starting from scratch like the line had to do the previous two seasons.
"We're not learning a whole new offense," Humphries said. "Instead of having to learn, we're fine-detailing the way we do things."
The presence of the mobile Kyler Murray last season was sometimes a double-edged sword. The quarterback's elite athleticism often got him out of jams, but it also led to sacks when he tried to extend plays behind the line of scrimmage.
According to Pro Football Focus, Murray was responsible for 23 of the 48 sacks he took in 2019.
"Last year, a lot of those sacks I feel like were on me," Murray said. "I don't think I'll be putting those guys in that situation too many times any more. If it happens it happens, but I think we'll be a lot better, just from experience."
The Cardinals have a burgeoning star at quarterback and a nice collection of skill players. If the offensive line can continue on the trajectory it set in 2019, the offense should be powerful.
"We were so locked in on every small detail, because it got to the point where the O-line wasn't expecting me to have a mental error, so I knew I couldn't mess up," Humphries said. "The way we trusted each other, we depended on each other, the way we didn't want to let each other down, it became infectious. I think it's something we're going to be able to hang our hat on going forward."
The top photos from inside the Cardinals locker room before and after games last season.

QB Kyler Murray before the Lions game.

QB Kyler Murray before the Lions game.

RB Chase Edmonds (left) and WR coach David Raih before the Lions game.

After the Seahawks game in Seattle.

WR Christian Kirk before the Lions game.

WR Christian Kirk before the Lions game.

Coach Kliff Kingsbury addresses the team after the game in Seattle.

LB Jordan Hicks before the Seahawks game at home.

CB Kevin Peterson before the home game against the Seahawks.

T D.J. Humphries celebrates in the locker room at Seattle.

G J.R. Sweezy before the game against the Saints.

WR Pharoh Cooper (left) and WR Andy Isabella before the Saints game.

The defensive backs before the Seahawks game in Seattle.

C Mason Cole before the Seahawks game at home.

The Cardinals before the game in Tampa Bay.

WR Christian Kirk before the game against the Saints.

CB Patrick Peterson's helmet before the Rams' home game.

QB Brett Hundley after the Seahawks game in Seattle.

CB Patrick Peterson's jersey before the Rams game at State Farm Stadium.

CB Chris Jones before the Seahawks game at home.

WR Larry Fitzgerald before the Giants game.

Before the Rams game at home.

QB Brett Hundley before the Bengals game.

CB Byron Murphy before the road game against the 49ers.

Before the 49ers game in Santa Clara.

In the locker room in Baltimore.

QB Kyler Murray's gear before the 49ers game.

QB Kyler Murray's jersey prior to 'Thursday Night Football' against the 49ers.

S Budda Baker before the Ravens game.

Before the Bengals game.

QB Kyler Murray before the Bengals game.

OLB Chandler Jones before the Ravens game.

CB Patrick Peterson after the Giants game.

OLB Chandler Jones before the Giants game.