only parse version once