Yesterday, the Giants’ 2017 season started much like their 2016 season ended, with a questionable bullpen blowing a late lead. Despite their $62 million investment in Mark Melancon over the winter, the team’s bullpen remains mediocre, and the Giants are going to have to hope that the rest of their team is good enough to overcome this weakness.

But despite the Opening Day loss, there was some good news for the Giants. Because, once again, it looks like their ace may be getting better.

Madison Bumgarner was already plenty good, of course. He’s coming off back-to-back +5 WAR seasons, and his regular-season consistency paired with his postseason dominance have established him as one of the game’s elite starting pitchers. But yesterday, Bumgarner showed flashes of another level, suggesting that perhaps he hasn’t fully realized his potential just yet.

The story of the day for Bumgarner yesterday was velocity, on both sides of the ball. On the mound, Statcast had his fastball averaging 93.3, his highest single-game velocity in two years. Last year, his fastest single-game velocity was 91.5, so this is up a couple of ticks from where he was sitting on his best day in 2016.

But while we often talk about velocity in terms of fastball speed, perhaps the more notable change was on his breaking ball. Yesterday, his curveball sat at 78. For reference, here’s a chart of his offspeed stuff from last year, with yesterday’s breaking ball on the far right.

At the beginning of last year, Bumgarner was a guy sitting 91 with a curveball in the low 70s. Yesterday, Bumgarner was sitting 93 with a curveball in the high 70s. And when you add in that high 80s cutter/slider thing, this was a nasty repertoire of pitches that the Diamondbacks had no answer for.

In his seven innings of work yesterday, Bumgarner struck out 11 of the 27 batters he faced, but because he was constantly ahead in the count, the whole outing only took him 88 pitches. Double-digit strikeouts with fewer than 100 pitches thrown is a pretty neat trick, but fewer than 90 pitches is something else entirely. Last year, only three pitchers managed to strike out 11 batters while throwing fewer than 90 pitches in a game, and two of them (Mike Leake and Jon Gray) did it against the Padres.

Bumgarner’s always been a relatively efficient worker, but he hasn’t always been a dominant strikeout guy. That’s changing, though.

While strikeout rate has been ticking up across the game, Bumgarner’s year-by-year improvements are outpacing the league’s changes. And if his stuff really was playing up a few ticks yesterday — it’s possible that Arizona’s radar readings were a bit “hot”, as Mark Melancon was also up two mph over last year, and guys like Tom Wilhelmsen, Hunter Strickland, and Derek Law were all up one mph over last year — and that sustains itself, Bumgarner is going to be even tougher to hit than he already was.

So, yeah, Madison Bumgarner was already a really good pitcher. Yesterday, he looked like a great one, maybe throwing harder than he has recently and destroying hitters with top-shelf stuff. And his pitching performance was actually the least impressive thing he did yesterday.

In his first at-bat, Zack Greinke got ahead of him 1-2, but then Bumgarner showed some pretty decent discipline, laying off pitches out of the zone, and ended up drawing a walk. Bumgarner drew 10 walks last year, so this wasn’t unprecedented, but he has a career O-Swing of 31%, and was near 40% in 2014 and 2015, so laying off pitches out of the zone hasn’t really been the thing for which he’s been notable at the plate. Yesterday, though, against a guy with good command, Bumgarner took two-strike pitches out of the zone, and worked his way on base.

Then, in his next at-bat, he did this.

And then, in the bat after that, he did this.

Those aren’t just home runs; those balls were absolutely crushed. In fact, those were the two hardest hit balls in the air yesterday, across all three games. His first homer was 113 mph, and his second one was hit 112 mph; the only other player to hit a ball over 110 mph yesterday was Gary Sanchez, who grounded out to Chris Archer on the play.

Being able to hit a ball 110-plus mph in the air isn’t just something you fluke your way into. For reference, Madison Bumgarner hit as many balls in the air at 110-plus yesterday as Adam Jones did last year. Among the players who hit fewer air balls at 110-plus in 2016 than Bumgarner did yesterday: Robinson Cano, Andrew McCutchen, Jay Bruce, Daniel Murphy, and Carlos Beltran.

Only 20 hitters in MLB hit 10 airballs this hard all last year, and they’re the kind of elite sluggers you think of when you talk about guys who can really crush the baseball. Hitting a ball this hard with regularity takes some serious raw power, and it’s pretty clear at this point that Bumgarner has Major League thump in his bat.

Of course, there’s more to good hitting than just turn-on-a-mistake power. Avisail Garcia is one of the 20 guys who hit a ball 110-plus in the air at least 10 times last year, for instance, and he’s not a good hitter. And Bumgarner, like most of these sluggers, has a pretty serious contact problem. Since the start of the 2014 season, when Bumgarner started driving the ball with regularity, he’s run a contact rate of just 62%; for reference, Chris Carter is at 65% for his career.

Bumgarner’s swing is all-out, designed to crush mistakes, but without the kind of bat control that lets him make enough contact to be an actual good big leaguer. But low-contact sluggers with thump can be roughly average hitters if they don’t chase everything thrown at them and hit the mistakes they get, and over his last few hundred plate appearances, that seems to be what Bumgarner is turning into. He got his O-Swing down to 24% last year and his overall swing rate down to 45%, so he’s not just wildly hacking at everything throw anymore.

Of course, everything with a pitcher’s hitting numbers are tiny samples, with fewer than 100 plate appearances each year. We can’t say with any kind of serious determination exactly what Bumgarner would be as a big-league hitter if he gave up pitching to focus solely on his offense. But the power isn’t something you can fake, and yesterday, he did a good job of taking Greinke’s balls and swinging at the strikes he was thrown. If that transformation continues, that’s the makings of an average-ish hitter, even with the serious contact problems.

And if Bumgarner’s anything close to a league-average hitter, that adds roughly +1 WAR to his overall value, given what most pitchers hit like. Toss in the dominant pitching and the chance that he might still be getting better on the mound, and it’s not impossible to think that Bumgarner’s overall package could have him challenging for title of best pitcher in baseball at some point. He’s not there yet, mainly because Clayton Kershaw is still a thing that exists, but Bumgarner just keeps trending upwards.

The Giants bullpen might have made Opening Day a disappointment in San Francisco, but their ace made the day memorable, and gave them reasons to think that they might not yet have seen him at his best.