move version extraction logic into a VersionUtil object