add _parse_version()