add semantic versioning