add canUpgrade method