The All-Star Game rosters have been decided, with 64 players receiving the honor to play in the Midsummer Classic in Cleveland. In theory, the game is an exhibition contest between the best players from each league, a celebration of baseball’s biggest stars. Except the players having the best seasons—well, really half-seasons—aren’t always the best or most popular guys in the sport. The definition of “All-Star” is fluid.

As is the case every year, there are guys who probably shouldn’t have made the rosters but did, and there are others who deserved to be All-Stars but didn’t make the cut. Here are the biggest snubs from each league, with explanations for why they belong.

American League

Luke Voit, 1B, Yankees

When almost every Yankee starter was on the injured list, and when several backups joined them, Voit was the stabilizing force in the middle of their lineup. The beefy slugger is batting .280/.393/.509 with 17 homers and 50 RBI. His 139 OPS+ ranks second among primary American League first basemen, behind AL starter Carlos Santana.

Xander Bogaerts, SS, Red Sox

How does the player with the second-highest WAR in the American League, per Fangraphs, behind Mike Trout, not make the All-Star team? It’s not like Bogaerts plays for the Rays, a small-market club with little national telecast exposure. He’s having the best season of any player on the Red Sox, the defending champs. Sure, shortstop is one of the deepest position groups in the AL, and nobody was going to deny Francisco Lindor the chance to be an All-Star in front of his Cleveland fans, but Bogaerts should be on the roster in addition to Lindor and starter Jorge Polanco, not instead of them.

Gleyber Torres, SS/2B, Yankees

In my All-Star roster projection, I included Torres on the roster as a middle infielder, because he’s the Yankees’ starting second baseman but played mostly shortstop in the first half due to all their injuries. Either way, July 9 should be Gleyber Day. Torres is hitting .295/.361/.550 with a 139 OPS+. He leads all AL middle infielders (primary 2B or SS) with 19 home runs.

Max Kepler, OF, Twins

This makes no sense. The Twins have the highest scoring offense in the majors, yet they have one position player on the All-Star team. Kepler is the catalyst at the top of their lineup, slashing .269/.344/.548 with 21 homers, 53 runs and 53 RBI. He ranks second among AL outfielders in fWAR.

Lance Lynn, RHP, Rangers

It’s understandable why Lynn, the lone pitcher snub in the AL, was left off the roster. His 4.00 ERA is not what you’d expect from one of the league’s best pitchers. But, look at more advanced analytics—his 3.8 fWar leads AL pitchers—or traditional statistics (10-4 record), and Lynn seems like a no-brainer.

National League

Max Muncy, 2B, Dodgers

Muncy’s followed up his breakout 2018 season with another dominant offensive campaign, slashing .279/.380/.544 with 20 homers and 58 RBI. The one issue for him is positioning. He plays first, second and third for the Dodgers, though he’s played more games at first—one of the deeper positions in the NL—than the other two. However, he’s started more games at second (28) than first (26) or third (18). If the NL wanted an excuse to get him on the team, which it should, taking him as the third 2B would be an easy argument to make.

Fernando Tatís Jr., SS, Padres

Two things went against Tatís being an All-Star in his rookie season. One, he missed over a month with an injury, and players who miss significant time in the first half tend to be left off the All-Star team. The second, the Cardinals needed to have an All-Star to fill the one player per team quota. That went to shortstop Paul DeJong, whose season mirrors that of his team—hot start, rough cold stretch. But Tatís is having a better season than DeJong, slashing .337/.405/.613. The 20-year-old phenom boasts an exciting blend of power and speed, with 11 home runs and 12 stolen bases. Tatís still could make it to Cleveland for the ASG; Trevor Story is currently on the injured list, and even if he returns before the All-Star break, he may forgo the Midsummer Classic anyway for additional recovery.

Manny Machado, 3B, Padres

Like Lance Lynn, there’s an understandable explanation for why Machado did not make the All-Star team: he started slow. But man, the Padres third baseman has gone on a tear lately. Over his last 15 games, Machado is batting .412 with 10 homers and 23 RBI, improving his 2019 slashline to .277/.352/.516 and increasing his home run total to 20.

Cole Hamels, LHP, Cubs

Hamels was placed on the injured list this weekend, but his first-half performance deserves to be recognized with All-Star honors, even if he can’t play in the game. Hamels is 6-3 with a 2.98 ERA, which ranks sixth in the NL. The five starters with a better ERA, and the two who rank directly behind him, all made the all-star team.

Brandon Woodruff, RHP, Brewers

The lone bright spot in the Brewers’ spotty rotation, Woodruff has been invaluable to them in the ultra-competitive NL Central. He’s 10-2 with a 3.79 ERA and a 1.14 WHIP. He leads the NL in wins and his 10.59 K/9 ranks fourth.