added fantastic version_compare function