implement more sophisticated comparison of versions