better semantic versioning