new version (refactoring with pre-version)