Add dynamic version detection