update plugin system to use semver