semantic-versioning: maybe this is more forgiving and simpler.