If the league didn't want this to happen, they shouldn't have made the cap hit be the average salary over the contract length. Each year, the team should take a cap hit equal to what they pay the player that year. In other words, each of those 5 years Kovalchuk is paid $11.5M, the team should take an $11.5M cap hit. If the player is traded or retires, the team obviously won't take the cap hit for that year. Why exactly do they take the average salary instead of the annual salary ?