compare versions with ComparableVersion