diff --git a/Makefile.in b/Makefile.in
index 87e92df..ed67e4c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -119,6 +119,8 @@ USE_CUSTOM_USRDEFS      = @use_custom_usrdefs@
 SHARED_LIB_CMD          = @shared_lib_cmd@
 SHARED_LIB_LDFLAGS      = @shared_lib_ldflags@
 
+VERSION_OPT             = @version_opt@
+
 .cflags-host:
 	@printf '%s' "$(CFLAGS)"
 
diff --git a/configure b/configure
index 2240589..df05578 100755
--- a/configure
+++ b/configure
@@ -135,6 +135,7 @@ init_vars()
 	sfrt_core_dir=$sfrt_impl_dir/core
 	sfrt_config_vars=$sfrt_config_dir/config.vars
 	sfrt_flag_vars=$sfrt_config_dir/flag.vars
+	sfrt_opt_vars=$sfrt_config_dir/opt.vars
 	sfrt_cfgdefs_in=$sfrt_config_dir/cfgdefs.in
 
 	mb_make_vars=$(< "$sfrt_config_vars" \
@@ -649,11 +650,20 @@ config_flags()
 }
 
 
+config_opts()
+{
+	if [ "$mb_avoid_version" = 'yes' ]; then
+		mb_version_opt='none'
+	else
+		mb_version_opt='used'
+	fi
+}
+
 config_copy()
 {
 	output_step_prolog ${mb_script} 'config_copy'
 
-	mb_vars=$(cut -d'=' -f1 $sfrt_config_vars \
+	mb_vars=$(cut -d'=' -f1 "$sfrt_config_vars" "$sfrt_opt_vars" \
 			| grep -v '^#')
 
 	mb_sed_substs=" \
@@ -1129,6 +1139,7 @@ common_defaults
 
 # five: config
 config_flags
+config_opts
 config_copy
 config_ccenv
 config_custom
diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh
index 0f94ddc..623ac38 100644
--- a/sofort/ccenv/ccenv.sh
+++ b/sofort/ccenv/ccenv.sh
@@ -1369,7 +1369,10 @@ ccenv_common_init()
 
 	if [ $ccenv_cfgtype = 'host' ]; then
 		ccenv_tflags=
-		ccenv_cflags=$(${mb_make} -s -f "$mb_pwd/Makefile.tmp" OS_DSO_EXRULES=default .cflags-host)
+		ccenv_cflags=$(${mb_make} -s -f "$mb_pwd/Makefile.tmp" \
+			OS_DSO_EXRULES=default                          \
+			OS_SONAME=symlink                                \
+			.cflags-host)
 
 		ccenv_cc="$mb_user_cc"
 		ccenv_cpp="$mb_user_cpp"
@@ -1379,7 +1382,11 @@ ccenv_common_init()
 		ccenv_pe_image_base="$mb_pe_image_base"
 	else
 		ccenv_tflags=
-		ccenv_cflags=$(${mb_make} -s -f "$mb_pwd/Makefile.tmp" OS_DSO_EXRULES=default .cflags-native)
+		ccenv_cflags=$(${mb_make} -s -f "$mb_pwd/Makefile.tmp" \
+			OS_DSO_EXRULES=default                          \
+			OS_SONAME=symlink                                \
+			.cflags-native)
+
 		ccenv_cc="$mb_native_cc"
 		ccenv_cpp="$mb_native_cpp"
 		ccenv_cxx="$mb_native_cxx"
diff --git a/sofort/config/opt.vars b/sofort/config/opt.vars
new file mode 100644
index 0000000..c2ff58d
--- /dev/null
+++ b/sofort/config/opt.vars
@@ -0,0 +1 @@
+version_opt
diff --git a/sofort/core/_version/_soname/version_soname_copy.mk b/sofort/core/_version/_soname/version_soname_copy.mk
new file mode 100644
index 0000000..c176d5a
--- /dev/null
+++ b/sofort/core/_version/_soname/version_soname_copy.mk
@@ -0,0 +1,8 @@
+# version_soname_copy.mk: handling of shared library versioning schemes.
+# this file is covered by COPYING.SOFORT.
+
+install-soname:		install-lib
+			cp $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/$(DSO_SONAME)
+
+$(SHARED_SONAME):	$(SHARED_LIB)
+			cp $(SHARED_LIB) $(SHARED_SONAME)
diff --git a/sofort/core/_version/_soname/version_soname_symlink.mk b/sofort/core/_version/_soname/version_soname_symlink.mk
new file mode 100644
index 0000000..963b891
--- /dev/null
+++ b/sofort/core/_version/_soname/version_soname_symlink.mk
@@ -0,0 +1,12 @@
+# version_soname_symlink.mk: handling of shared library versioning schemes.
+# this file is covered by COPYING.SOFORT.
+
+$(SHARED_SONAME):	$(SHARED_LIB)
+			rm -f $@.tmp
+			ln -s $(DSO_VER) $@.tmp
+			mv $@.tmp $@
+
+install-soname:		install-lib
+			rm -f $(SHARED_SONAME).tmp
+			ln -s $(DSO_VER) $(SHARED_SONAME).tmp
+			mv $(SHARED_SONAME).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SONAME)
diff --git a/sofort/core/_version/version_none.mk b/sofort/core/_version/version_none.mk
new file mode 100644
index 0000000..d8fc570
--- /dev/null
+++ b/sofort/core/_version/version_none.mk
@@ -0,0 +1,10 @@
+# version_none.mk: handling of shared library versioning schemes.
+# this file is covered by COPYING.SOFORT.
+
+VER_XYZ		=
+VER_SONAME	=
+
+package-shared-soname:
+package-shared-solink:
+package-install-soname:
+package-install-solink:
diff --git a/sofort/core/_version/version_used.mk b/sofort/core/_version/version_used.mk
new file mode 100644
index 0000000..4724cee
--- /dev/null
+++ b/sofort/core/_version/version_used.mk
@@ -0,0 +1,26 @@
+# version_used.mk: handling of shared library versioning schemes.
+# this file is covered by COPYING.SOFORT.
+
+VER_XYZ		= .$(VER_MAJOR).$(VER_MINOR).$(VER_PATCH)
+VER_SONAME	= .$(VER_MAJOR)
+
+package-shared-soname:	shared-soname
+package-shared-solink:	shared-solink
+package-install-soname:	install-soname
+package-install-solink:	install-solink
+
+
+
+# libfoo.so (common)
+install-solink:		install-lib
+			rm -f $(SHARED_SOLINK).tmp
+			ln -s $(DSO_VER) $(SHARED_SOLINK).tmp
+			mv $(SHARED_SOLINK).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SOLINK)
+
+$(SHARED_SOLINK):	$(SHARED_LIB)
+			rm -f $@.tmp
+			ln -s $(DSO_VER) $@.tmp
+			mv $@.tmp $@
+
+# libfoo.so.x (symlink or copy)
+include $(PROJECT_DIR)/sofort/core/_version/_soname/version_soname_$(OS_SONAME).mk
diff --git a/sofort/core/version.mk b/sofort/core/version.mk
index eb6c2f2..ad693ab 100644
--- a/sofort/core/version.mk
+++ b/sofort/core/version.mk
@@ -7,60 +7,4 @@ CFLAGS_VERSION	+= -D$(VER_NAMESPACE)_TAG_VER_MAJOR=$(VER_MAJOR)
 CFLAGS_VERSION	+= -D$(VER_NAMESPACE)_TAG_VER_MINOR=$(VER_MINOR)
 CFLAGS_VERSION	+= -D$(VER_NAMESPACE)_TAG_VER_PATCH=$(VER_PATCH)
 
-ifeq ($(AVOID_VERSION),yes)
-
-VER_XYZ		=
-VER_SONAME	=
-
-package-shared-soname:
-package-shared-solink:
-package-install-soname:
-package-install-solink:
-
-else
-
-VER_XYZ		= .$(VER_MAJOR).$(VER_MINOR).$(VER_PATCH)
-VER_SONAME	= .$(VER_MAJOR)
-
-package-shared-soname:	shared-soname
-package-shared-solink:	shared-solink
-package-install-soname:	install-soname
-package-install-solink:	install-solink
-
-
-
-# libfoo.so (common)
-install-solink:		install-lib
-			rm -f $(SHARED_SOLINK).tmp
-			ln -s $(DSO_VER) $(SHARED_SOLINK).tmp
-			mv $(SHARED_SOLINK).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SOLINK)
-
-$(SHARED_SOLINK):	$(SHARED_LIB)
-			rm -f $@.tmp
-			ln -s $(DSO_VER) $@.tmp
-			mv $@.tmp $@
-
-# libfoo.so.x (symlink)
-ifeq ($(OS_SONAME),symlink)
-$(SHARED_SONAME):	$(SHARED_LIB)
-			rm -f $@.tmp
-			ln -s $(DSO_VER) $@.tmp
-			mv $@.tmp $@
-
-install-soname:		install-lib
-			rm -f $(SHARED_SONAME).tmp
-			ln -s $(DSO_VER) $(SHARED_SONAME).tmp
-			mv $(SHARED_SONAME).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SONAME)
-endif
-
-
-# libfoo.so.x (copy)
-ifeq ($(OS_SONAME),copy)
-install-soname:		install-lib
-			cp $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/$(DSO_SONAME)
-
-$(SHARED_SONAME):	$(SHARED_LIB)
-			cp $(SHARED_LIB) $(SHARED_SONAME)
-endif
-
-endif
+include $(PROJECT_DIR)/sofort/core/_version/version_$(VERSION_OPT).mk