diff --git a/Makefile.conf.in b/Makefile.conf.in
index e6ab55e760feecb51660556e3b8a71f2de03a4d1..38e8ca23b1243dfb7740fe03fa57d49dd3c59225 100644
--- a/Makefile.conf.in
+++ b/Makefile.conf.in
@@ -14,4 +14,4 @@ LD=@LD@
 LDSO=@LDSO@
 GCCDEP=@CXX@
 prefix=@prefix@
-
+program_transform_name=@program_transform_name@
diff --git a/configure b/configure
index 2152e62a97489b9cd0e81d51057fa3a74e802507..3171f6544502d40038cfad3d9b33596023428c65 100755
--- a/configure
+++ b/configure
@@ -1322,6 +1322,11 @@ Fine tuning of the installation directories:
 _ACEOF
 
   cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
 _ACEOF
 fi
 
@@ -6481,14 +6486,28 @@ then
   prefix=/usr/local
 fi
 
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+
+
+# version modified to work in shell script instead of makefile:
+program_transform_name_sh=$(echo "${program_transform_name}" | sed 's:\$\$:$:g')
+program_name=$(echo plumed | sed "$program_transform_name_sh")
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: **** PLUMED will be installed using prefix $prefix" >&5
 $as_echo "$as_me: **** PLUMED will be installed using prefix $prefix" >&6;}
 { $as_echo "$as_me:${as_lineno-$LINENO}: **** You can change this later using \"make install prefix=/path\"" >&5
 $as_echo "$as_me: **** You can change this later using \"make install prefix=/path\"" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: **** Executable will be named 'plumed'" >&5
-$as_echo "$as_me: **** Executable will be named 'plumed'" >&6;}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: **** To add a suffix to this name, set PLUMED_LIBSUFFIX environment variable before installing" >&5
-$as_echo "$as_me: **** To add a suffix to this name, set PLUMED_LIBSUFFIX environment variable before installing" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: **** Executable will be named $program_name" >&5
+$as_echo "$as_me: **** Executable will be named $program_name" >&6;}
 
 if test $mpi == true; then
   if test $mpi_found == ok; then
@@ -6506,6 +6525,8 @@ fi
 
 build_dir=`pwd`
 
+
+
 # This is to replace tags in Makefile.conf.in
 # saving the result to Makefile.conf
 ac_config_files="$ac_config_files Makefile.conf sourceme.sh"
diff --git a/configure.ac b/configure.ac
index f63e94ab1f191b394396fc729d21bcf5ad5d865b..13812c5d55ce666bcdb53bc9235caf71c1b43ed5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -512,10 +512,16 @@ then
   prefix=/usr/local
 fi
 
+AC_ARG_PROGRAM
+
+
+# version modified to work in shell script instead of makefile:
+program_transform_name_sh=$(echo "${program_transform_name}" | sed 's:\$\$:$:g')
+program_name=$(echo plumed | sed "$program_transform_name_sh")
+
 AC_MSG_NOTICE([**** PLUMED will be installed using prefix $prefix])
 AC_MSG_NOTICE([**** You can change this later using "make install prefix=/path"])
-AC_MSG_NOTICE([**** Executable will be named 'plumed'])
-AC_MSG_NOTICE([**** To add a suffix to this name, set PLUMED_LIBSUFFIX environment variable before installing])
+AC_MSG_NOTICE([**** Executable will be named $program_name])
 
 if test $mpi == true; then
   if test $mpi_found == ok; then
@@ -530,6 +536,8 @@ fi
 AC_SUBST(build_dir)
 build_dir=`pwd`
 
+
+
 # This is to replace tags in Makefile.conf.in
 # saving the result to Makefile.conf
 AC_CONFIG_FILES([Makefile.conf sourceme.sh])
diff --git a/src/config/Makefile b/src/config/Makefile
index 4e2b3f330d689197f19cfc997ee1e20ea48ae735..a4b9d0dbd535bc4948465824f455231b3d8018ff 100644
--- a/src/config/Makefile
+++ b/src/config/Makefile
@@ -2,13 +2,18 @@
 # include the machine dependent configuration
 -include ../../Makefile.conf
 
+# sed script to edit program name defaults to do nothing
+ifndef program_transform_name
+  program_transform_name=s,x,x,
+endif
+
 # default target
 .PHONY: all obj
 all:
 	@echo "Updating ConfigInstall.cpp"
 	@sed "s/@SOEXT@/$(SOEXT)/g" Config.cpp.in | \
          sed "s/@ISINSTALLED@/true/g" | \
-	env prefix="${prefix}" ../maketools/update-plumedroot.sh ConfigInstall.cpp
+	env prefix="${prefix}" env program_transform_name="${program_transform_name}" ../maketools/update-plumedroot.sh ConfigInstall.cpp
 	@echo "Updating version file"
 	@ ../maketools/update-version.sh version.h
 	$(MAKE) do-all
diff --git a/src/lib/Makefile b/src/lib/Makefile
index a54b9121666196998bda80e91b20ad3b725b7144..c04fb837b93a1ebda0f1dec80e1959ac70d3437f 100644
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -88,33 +88,33 @@ install-do:
 	$(MAKE) uninstall
 	mkdir -p $(PLUMED_INSTALL_PREFIX)/bin
 	mkdir -p $(PLUMED_INSTALL_ROOT)/src/lib
-	mkdir -p $(PLUMED_INSTALL_PREFIX)/include/plumed$(PLUMED_INSTALL_LIBSUFFIX)
+	mkdir -p $(PLUMED_INSTALL_PREFIX)/include/$(PLUMED_PROGRAM_NAME)
 # rebuild libraries and main using new target dir
 	$(MAKE) PLUMED_LIBDIR=$(PLUMED_INSTALL_ROOT)/src/lib/ PLUMED_INSTALL=Install all
 # copy .h, .cpp .o compile_options.sh and documentation:
 	cd ../../ ; tar cf - patches scripts src/*/*.h src/*/*.cpp src/*/*.o src/config/compile_options.sh *-doc/html *-doc/regtests *-doc/manual.pdf | tar xf - -C $(PLUMED_INSTALL_ROOT)/
 # also copy .h files into include/ dir
-	cd ../../src ; tar cf - */*.h */*/*.h | tar xf - -C $(PLUMED_INSTALL_PREFIX)/include/plumed$(PLUMED_INSTALL_LIBSUFFIX)/
+	cd ../../src ; tar cf - */*.h */*/*.h | tar xf - -C $(PLUMED_INSTALL_PREFIX)/include/$(PLUMED_PROGRAM_NAME)/
 # copy inc files changing the path
 	for file in Plumed.inc* Plumed.cmake* ; do sed "s| $(realpath ../../)| $(PLUMED_INSTALL_ROOT)/|g" $$file > $(PLUMED_INSTALL_ROOT)/src/lib/$$file ; done
 # modulefile
-	@sed "s|@_PREFIX_@|$(PLUMED_INSTALL_PREFIX)|" modulefile.in | sed "s|@_SOEXT_@|$(SOEXT)|" | sed "s|@_SUFFIX_@|$(PLUMED_INSTALL_LIBSUFFIX)|" > $(PLUMED_INSTALL_ROOT)/src/lib/modulefile
+	@sed "s|@_PREFIX_@|$(PLUMED_INSTALL_PREFIX)|" modulefile.in | sed "s|@_SOEXT_@|$(SOEXT)|" | sed "s|@_PROGNAME_@|$(PLUMED_PROGRAM_NAME)|" > $(PLUMED_INSTALL_ROOT)/src/lib/modulefile
 # install links
-	ln -s $(PLUMED_INSTALL_ROOT)/src/lib/plumed $(PLUMED_INSTALL_PREFIX)/bin/plumed$(PLUMED_INSTALL_LIBSUFFIX)
-	for file in $(PLUMED_SCRIPTS) ; do ln -s $(PLUMED_INSTALL_ROOT)/src/lib/plumed-$$file $(PLUMED_INSTALL_PREFIX)/bin/plumed$(PLUMED_INSTALL_LIBSUFFIX)-$$file ; done
+	ln -s $(PLUMED_INSTALL_ROOT)/src/lib/plumed $(PLUMED_INSTALL_PREFIX)/bin/$(PLUMED_PROGRAM_NAME)
+	for file in $(PLUMED_SCRIPTS) ; do ln -s $(PLUMED_INSTALL_ROOT)/src/lib/plumed-$$file $(PLUMED_INSTALL_PREFIX)/bin/$(PLUMED_PROGRAM_NAME)-$$file ; done
 ifdef SOEXT
-	ln -s $(PLUMED_INSTALL_ROOT)/src/lib/libplumed.$(SOEXT) $(PLUMED_INSTALL_PREFIX)/lib/libplumed$(PLUMED_INSTALL_LIBSUFFIX).$(SOEXT)
-	ln -s $(PLUMED_INSTALL_ROOT)/src/lib/libplumedKernel.$(SOEXT) $(PLUMED_INSTALL_PREFIX)/lib/libplumed$(PLUMED_INSTALL_LIBSUFFIX)Kernel.$(SOEXT)
+	ln -s $(PLUMED_INSTALL_ROOT)/src/lib/libplumed.$(SOEXT) $(PLUMED_INSTALL_PREFIX)/lib/lib$(PLUMED_PROGRAM_NAME).$(SOEXT)
+	ln -s $(PLUMED_INSTALL_ROOT)/src/lib/libplumedKernel.$(SOEXT) $(PLUMED_INSTALL_PREFIX)/lib/lib$(PLUMED_PROGRAM_NAME)Kernel.$(SOEXT)
 endif
 	chmod -R go+rX,go-w $(PLUMED_INSTALL_ROOT)
-	chmod -R go+rX,go-w $(PLUMED_INSTALL_PREFIX)/include/plumed$(PLUMED_INSTALL_LIBSUFFIX)
-	chmod -R go+rX,go-w $(PLUMED_INSTALL_PREFIX)/bin/plumed$(PLUMED_INSTALL_LIBSUFFIX)
-	chmod -R go+rX,go-w $(PLUMED_INSTALL_PREFIX)/bin/plumed$(PLUMED_INSTALL_LIBSUFFIX)-*
+	chmod -R go+rX,go-w $(PLUMED_INSTALL_PREFIX)/include/$(PLUMED_PROGRAM_NAME)
+	chmod -R go+rX,go-w $(PLUMED_INSTALL_PREFIX)/bin/$(PLUMED_PROGRAM_NAME)
+	chmod -R go+rX,go-w $(PLUMED_INSTALL_PREFIX)/bin/$(PLUMED_PROGRAM_NAME)-*
 	@echo
 	@echo "*** PLUMED has been installed ***"
 	@echo
 	@echo "Install prefix : $(PLUMED_INSTALL_PREFIX)"
-	@echo "Full name      : plumed$(PLUMED_INSTALL_LIBSUFFIX)"
+	@echo "Full name      : $(PLUMED_PROGRAM_NAME)"
 	@echo
 	@echo "Setup your environment"
 	@echo "- Ensure this is in your execution path : $(PLUMED_INSTALL_PREFIX)/bin"
@@ -122,7 +122,7 @@ endif
 ifdef SOEXT
 	@echo "- Ensure this is in your library path   : $(PLUMED_INSTALL_PREFIX)/lib"
 	@echo "For runtime binding:"
-	@echo "- Set this environment variable         : PLUMED_KERNEL=$(PLUMED_INSTALL_PREFIX)/lib/libplumed$(PLUMED_INSTALL_LIBSUFFIX)Kernel.$(SOEXT)"
+	@echo "- Set this environment variable         : PLUMED_KERNEL=$(PLUMED_INSTALL_PREFIX)/lib/lib$(PLUMED_PROGRAM_NAME)Kernel.$(SOEXT)"
 endif
 	@echo
 	@echo "To create a tcl module that sets all the variables above, use this one as a starting point:"
@@ -130,21 +130,21 @@ endif
 	@echo
 	@echo "To uninstall, remove the following files and directories:"
 	@echo $(PLUMED_INSTALL_ROOT)
-	@echo $(PLUMED_INSTALL_PREFIX)/include/plumed$(PLUMED_INSTALL_LIBSUFFIX)
-	@echo $(PLUMED_INSTALL_PREFIX)/bin/plumed$(PLUMED_INSTALL_LIBSUFFIX)
-	@for file in $(PLUMED_INSTALL_PREFIX)/bin/plumed$(PLUMED_INSTALL_LIBSUFFIX)-* ; do echo $$file ; done
+	@echo $(PLUMED_INSTALL_PREFIX)/include/$(PLUMED_PROGRAM_NAME)
+	@echo $(PLUMED_INSTALL_PREFIX)/bin/$(PLUMED_PROGRAM_NAME)
+	@for file in $(PLUMED_INSTALL_PREFIX)/bin/$(PLUMED_PROGRAM_NAME)-* ; do echo $$file ; done
 ifdef SOEXT
-	@echo $(PLUMED_INSTALL_PREFIX)/lib/libplumed$(PLUMED_INSTALL_LIBSUFFIX).$(SOEXT)
-	@echo $(PLUMED_INSTALL_PREFIX)/lib/libplumed$(PLUMED_INSTALL_LIBSUFFIX)Kernel.$(SOEXT)
+	@echo $(PLUMED_INSTALL_PREFIX)/lib/lib$(PLUMED_PROGRAM_NAME).$(SOEXT)
+	@echo $(PLUMED_INSTALL_PREFIX)/lib/lib$(PLUMED_PROGRAM_NAME)Kernel.$(SOEXT)
 endif
 
 uninstall:
 	rm -fr $(PLUMED_INSTALL_ROOT)
-	rm -fr $(PLUMED_INSTALL_PREFIX)/include/plumed$(PLUMED_INSTALL_LIBSUFFIX)
-	rm -f $(PLUMED_INSTALL_PREFIX)/bin/plumed$(PLUMED_INSTALL_LIBSUFFIX)
-	rm -f $(PLUMED_INSTALL_PREFIX)/bin/plumed$(PLUMED_INSTALL_LIBSUFFIX)-*
-	rm -f $(PLUMED_INSTALL_PREFIX)/lib/libplumed$(PLUMED_INSTALL_LIBSUFFIX).$(SOEXT)
-	rm -f $(PLUMED_INSTALL_PREFIX)/lib/libplumed$(PLUMED_INSTALL_LIBSUFFIX)Kernel.$(SOEXT)
+	rm -fr $(PLUMED_INSTALL_PREFIX)/include/$(PLUMED_PROGRAM_NAME)
+	rm -f $(PLUMED_INSTALL_PREFIX)/bin/$(PLUMED_PROGRAM_NAME)
+	rm -f $(PLUMED_INSTALL_PREFIX)/bin/$(PLUMED_PROGRAM_NAME)-*
+	rm -f $(PLUMED_INSTALL_PREFIX)/lib/lib$(PLUMED_PROGRAM_NAME).$(SOEXT)
+	rm -f $(PLUMED_INSTALL_PREFIX)/lib/lib$(PLUMED_PROGRAM_NAME)Kernel.$(SOEXT)
 
 $(DIRS):
 	$(MAKE) -C $@ obj
diff --git a/src/lib/modulefile.in b/src/lib/modulefile.in
index 51a97665cf78dcf62a78a196e8afec224da9a7bc..48d9ab9890bcf9646cb2a14437e1ba76b068ee87 100644
--- a/src/lib/modulefile.in
+++ b/src/lib/modulefile.in
@@ -7,9 +7,9 @@ set prefix "@_PREFIX_@"
 # this is the extension for dynamic libraries
 # if set to empty, switches off plumed library
 set soext  "@_SOEXT_@"
-# this is the suffix to plumed executable and library
-# could be set to plumed version, but is usually blank
-set suffix "@_SUFFIX_@"
+# this is the name of the plumed program
+# it is usually plumed
+set progname "@_PROGNAME_@"
 
 # everything past this line should not need any editing
 
@@ -39,5 +39,5 @@ if { [module-info mode load] && [ info exists ::env(PLUMED_KERNEL) ] } {
 prepend-path  LIBRARY_PATH       $prefix/lib/
 prepend-path  LD_LIBRARY_PATH    $prefix/lib/
 prepend-path  DYLD_LIBRARY_PATH  $prefix/lib/
-setenv        PLUMED_KERNEL      $prefix/lib/libplumed${suffix}Kernel.$soext
+setenv        PLUMED_KERNEL      $prefix/lib/lib${progname}Kernel.$soext
 }
diff --git a/src/maketools/update-plumedroot.sh b/src/maketools/update-plumedroot.sh
index 36d15a97c06b1d6f1232e13f918a4f17c1efdf03..de94df48c405df5dc8c52e40e36baa2c7751b0b1 100755
--- a/src/maketools/update-plumedroot.sh
+++ b/src/maketools/update-plumedroot.sh
@@ -25,14 +25,26 @@ if test -n "$PLUMED_PREFIX" ; then
   prefix="${PLUMED_PREFIX}"
 fi
 
-PLUMED_LIBSUFFIX="${PLUMED_LIBSUFFIX:=}"
-test -n "$PLUMED_LIBSUFFIX" && PLUMED_LIBSUFFIX="-${PLUMED_LIBSUFFIX}"
-PLUMED_ROOT="$prefix/lib/plumed${PLUMED_LIBSUFFIX}/"
+# if environment variable PLUMED_LIBSUFFIX is set, complain
+if test -n "$PLUMED_LIBSUFFIX" ; then
+  echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+  echo "WARNING: using PLUMED_LIBSUFFIX variable is deprecated, please use"
+  echo "         ./configure --program-suffix='$PLUMED_LIBSUFFIX'"
+  echo "         at configure time"
+  echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+# this will result in an error in a later version
+# now we fall back to the previous behavior
+  PLUMED_LIBSUFFIX="${PLUMED_LIBSUFFIX:=}"
+  test -n "$PLUMED_LIBSUFFIX" && PLUMED_LIBSUFFIX="-${PLUMED_LIBSUFFIX}"
+fi
+
+PLUMED_PROGRAM_NAME="$(echo plumed | sed "${program_transform_name}")${PLUMED_LIBSUFFIX}"
+PLUMED_ROOT="$prefix/lib/${PLUMED_PROGRAM_NAME}/"
 
 {
 echo "PLUMED_INSTALL_ROOT=${PLUMED_ROOT}"
 echo "PLUMED_INSTALL_PREFIX=$prefix"
-echo "PLUMED_INSTALL_LIBSUFFIX=${PLUMED_LIBSUFFIX}"
+echo "PLUMED_PROGRAM_NAME=${PLUMED_PROGRAM_NAME}"
 } > install.conf
 
 sed "s|@PLUMED_ROOT@|${PLUMED_ROOT}|g" > $1~
diff --git a/user-doc/Installation.txt b/user-doc/Installation.txt
index 8f67ed6ad733e2d00c596ba803a83aa02e93bf17..82d1eae966ac109f276c834373298d42dbbbf28a 100644
--- a/user-doc/Installation.txt
+++ b/user-doc/Installation.txt
@@ -333,14 +333,19 @@ the following things:
   header files such as "#include <plumed/tools/Vector.h>". This is useful as it may be expedient to
   exploit the PLUMED library in general purpose programs
 
-As a final note, if you want to install several PLUMED versions without using modules then you can 
-define the variable PLUMED_LIBSUFFIX using:
+As a final note, if you want to install several PLUMED versions without using modules then you
+should provide a different suffix and/or prefix at configure time:
 \verbatim
-> make install prefix=$HOME/opt PLUMED_LIBSUFFIX=v2.0
+> ./configure prefix=$HOME/opt --program-suffix=-2.2 --program-prefix=mpi-
+> make install
 \endverbatim
-This will install a plumed executable named "plumed-v2.0". All the other files will be renamed similarly,
-e.g. the PLUMED library will be loaded with "-lplumed-v2.0" and the PLUMED header files
-will be included with "#include <plumed-v2.0/tools/Vector.h>". This trick is useful if you
+This will install a plumed executable named "mpi-plumed-2.2". All the other files will be renamed similarly,
+e.g. the PLUMED library will be loaded with "-lmpi-plumed-2.2" and the PLUMED header files
+will be included with "#include <mpi-plumed-2.2/tools/Vector.h>".
+Notice that you can also use arbitrary scripts to edit the name of the executable
+with the option --program-transform-name=PROGRAM
+(see <a href="http://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Transformation-Examples.html#Transformation-Examples"> autoconf documentation </a> for more info).
+These options are useful if you
 do not want to set up modules, but we believe that using modules as described above is more flexible.
 
 \section Patching Patching your MD code