VersionUitility.IsCompatible can replace all of this