basic functionality, needs more work on semver