smarter versioning