refactoring semver service