refined version caculation and check