properly compare versions