Manchester City were pushed en route to claiming successive Premier League titles, finishing just one point clear of Liverpool. However, a total of 98 points shows this victory was deserved.
City's 2018/19 successes don't end with just the Premier League. Pep Guardiola's side claimed a domestic triple, also winning the Carabao and FA Cups. Their triumphant campaign was topped off with a 6-0 thrashing of Watford at Wembley.
While winning three of the four major trophies in which you compete is an outstanding effort, the Champions League continues to elude them. Guardiola will be desperate to fix this.
Despite already boasting extensive squad depth, City are always likely to make a few purchases in any transfer window. This is what could finally propel them to European glory. Let's take a look at who they would they keep or sell.
Ederson - KEEP - While he has Brazil teammate Alisson Becker to compete with internationally, Ederson has definitely secured his position with the Premier League champions. As an excellent sweeper-keeper, Ederson is just as important when it comes to playing out from the back as he is protecting his net.
Claudio Bravo - SELL - A series of mistakes saw the Chilean swiftly replaced. As much as he would be an excellent number two, City could likely make a reasonable amount of cash by flogging him.
Arijanet Muric - KEEP - This is who should take that number two spot. Muric has featured a handful of times in the cup already. Considering he has performed well and probably has a lower transfer worth, he looks like a sensible alternative to the former Barca man.
Kyle Walker - KEEP - The England international is excellent for the role he's expected to play. With bundles of pace and strength, Walker is constantly up and down. He's arguably a better attacker than defender, but he does the job at the back too.
Benjamin Mendy - SELL - Mendy was frightening when he first arrived in Manchester, bombing down the flanks and whipping in crosses. However, he's been extremely unlucky with injuries and missed most of the season. A summer to recover could do him good but cashing in on him will also be a consideration.
Oleksandr Zinchenko - KEEP - Traditionally a midfielder, Zinchenko has done an excellent job filling in for Mendy. A player with such versatility is useful to have, even if they aren't playing every week.
Danilo - KEEP - Another very versatile player. He's mostly featured at right back but also has experience playing as a holding midfielder. Walker is rarely injured, but it's always good to have someone waiting in the wings.
Aymeric Laporte - KEEP - Laporte has established himself as one of the best centre backs in the Premier League. This was a position in which City looked weak, but the Frenchman has certainly changed that.
John Stones - KEEP - Stones has fallen down the pecking order in recent times with Vincent Kompany playing over him. However, the club captain has already announced his departure to Anderlecht giving Stones the opportunity to re-establish himself in the starting lineup.
Nicolas Otamendi - SELL - The Argentinian is arguably slightly below Stones who also has age on his side. City might benefit more by selling Otamendi before he's worth virtually nothing.
Eliaquim Mangala - SELL - You wouldn't be blamed for not knowing that Mangala was still a Manchester City player. He arrived with a big reputation; hard to see why given some of his performances. Time to go.
Vincent Kompany - GONE - Upsetting. He's finally gone. Club legends don't come around too often, but City will find it hard to replace Kompany, given the leadership he offered to those around him. Will be sorely missed.
Ilkay Gundogan - KEEP - The role Gundogan plays goes largely unnoticed but he's proven he can cover Fernadinho's position well. He could've been man of the match in the FA Cup final had Kevin De Bruyne not shown up for half an hour.
Kevin De Bruyne - KEEP - Injuries have slightly held him back this season but he's undoubtedly one of the league's best.
Fernandinho - KEEP - He may be ageing but his absence through injuries or suspensions can and has been City's downfall on the odd occasion.
Fabian Delph - SELL - When he has played, he's often found himself at left back but with Zinchenko's emergence, it's hard to see where Delph fits into Guardiola's plans.
Attacking Midfielders & Wingers
David Silva - KEEP - Like Fernandinho, David Silva is somewhat ageing and his stats show it. Despite failing to score in 27 games prior to the FA Cup final, Silva is still extremely creative.
Leroy Sane - SELL - It's crazy to think a player of Sane's class spends so much time as a substitute. As young as he is and the fact that he will only get better, he would have a huge price tag, and it's not as if City are short on attacking prowess either.
Bernardo Silva - KEEP - City's second Silva had a mixed start to his Premier League career, but is now one of their most vital players. He looks like the ideal long-term replacement for David.
Raheem Sterling - KEEP - Sterling finally seems to have found his clinical nature. Having accumulated 26 goals in all competitions, the Premier League's not so Young Player of the Year looks like he'll be staying put for years to come.
Phil Foden - KEEP - It's great to see youth graduates getting a shot in the first team, and Foden has already proven his worth. Remaining at City is not only what's best for the club, but also for his own development.
Riyad Mahrez - SELL - When he signed for City, Mahrez must have known he might not be one of the first names on the team sheet. There's no doubt that Mahrez can play at the top level, but perhaps not with City.
Sergio Aguero - KEEP - This one's as straightforward as they come. He's definitely the best striker at the club and arguably the best in the league.
Gabriel Jesus - KEEP - Also pretty straightforward. It's not often Jesus and Aguero play together but having the choice of the two isn't a bad position for Guardiola to be in.