diff --git a/patches/gromacs-4.5.5.config b/patches/gromacs-4.5.5.config
index c4c96cc70c23ae5ce30c003563e8c5e5a23acc93..8529732bb2d56c68645d017d87ec94464e22f7e3 100644
--- a/patches/gromacs-4.5.5.config
+++ b/patches/gromacs-4.5.5.config
@@ -18,3 +18,10 @@ function plumed_after_revert(){
   mv src/kernel/Makefile.plumedbck src/kernel/Makefile
 }
 
+function plumed_patch_info(){
+  echo ""
+  echo "PLUMED can be incorporated into gromacs using a simple patching procedure."
+  echo "Patching must be done _after_ gromacs has been configured but  _before_ gromacs is compiled"
+  echo 
+  echo "For more information on gromacs you should visit http://www.gromacs.org"
+}
diff --git a/patches/gromacs-4.6.3.config b/patches/gromacs-4.6.3.config
index a5d00fcea22295d52544fcd345e60947ff7553ef..b5d89332bfd90c7da73c33769c3f5ff3e8529642 100644
--- a/patches/gromacs-4.6.3.config
+++ b/patches/gromacs-4.6.3.config
@@ -4,3 +4,11 @@ function plumed_preliminary_test(){
 # check if the README contains the word GROMACS and if gromacs has been already configured
   grep -q GROMACS README 1>/dev/null 2>/dev/null
 }
+
+function plumed_patch_info(){
+  echo ""
+  echo "PLUMED can be incorporated into gromacs using a simple patching procedure."
+  echo "Patching must be done _before_ the cmake command is invoked"
+  echo
+  echo "For more information on gromacs you should visit http://www.gromacs.org"
+}
diff --git a/patches/lammps-6Apr13.config b/patches/lammps-6Apr13.config
index 7aa1e453acc89b3e771728925a4620caa2836edd..a83ff65c1a8e63d7f15d7d5aae0e6bdcafcc0f35 100644
--- a/patches/lammps-6Apr13.config
+++ b/patches/lammps-6Apr13.config
@@ -14,3 +14,14 @@ function plumed_after_revert(){
   rm -fr src/USER-PLUMED/
 }
 
+function plumed_patch_info(){
+  echo ""
+  echo "PLUMED can be incorporated into LAMMPS using a simple patching procedure."
+  echo "Patching must be done _before_ LAMMPS is configured."
+  echo "After patching, one should enable PLUMED using the command"
+  echo "make yes-user-plumed"
+  echo "In the same way, before reverting one should disable PLUMED using the command"
+  echo "make no-user-plumed"
+  echo 
+  echo "For more information on LAMMPS you should visit http://lammps.sandia.gov/"
+}
diff --git a/patches/namd-2.8.config b/patches/namd-2.8.config
index 3eff738a2fc6ae97add7a847e49352c15fcbe335..3bef46c3c5a3bd83f44e12caf867f063f2b40df4 100644
--- a/patches/namd-2.8.config
+++ b/patches/namd-2.8.config
@@ -4,3 +4,9 @@ function plumed_preliminary_test(){
 # check if the README.txt contains the word NAMD
   grep -q NAMD README.txt 1>/dev/null 2>/dev/null && test -f */Make.config
 }
+
+function plumed_patch_info(){
+  echo ""
+  echo ""
+  echo "For more information on NAMD you should visit http://www.ks.uiuc.edu/Research/namd/"
+}
diff --git a/patches/patch.sh b/patches/patch.sh
index fc77435c8b6ca6db9b5eff1b8972fcafa9b3c6a4..6ee52c5af150b5a0fa557119189d4d6203d9b605 100755
--- a/patches/patch.sh
+++ b/patches/patch.sh
@@ -17,6 +17,8 @@ Actions (choose one):
                     same as save, but save also original files
   -n NEWENGINE, --new NEWENGINE
                     create a new patch named NEWENGINE (*)
+  -i, --info
+                    output information on the patching procedure for a particular code                
 Options:
   -e ENGINE, --engine ENGINE
                     set MD engine to ENGINE (default: choose interactively)
@@ -30,6 +32,9 @@ Options:
                     same as --mode runtime
   -d FILE, --diff FILE
                     set the path to diff file (default: ROOT/patches/ENGINE.diff) (*)
+  -q, --quiet
+                    do not write loggin information; useful with -i to print just
+                    the patching information
   -f, --force
                     force patching (*)
 
@@ -49,7 +54,7 @@ multiple_actions=
 
 otherfiles=
 save_originals=
-
+quiet=
 
 for option
 do
@@ -64,6 +69,7 @@ do
     (--save-originals)  test -n "$action" && multiple_actions=yes ; action=save ; save_originals=yes ;;
     (--revert|-R|-r)    test -n "$action" && multiple_actions=yes ; action=revert ;;
     (--list-engines|-l) test -n "$action" && multiple_actions=yes ; action=list ;;
+    (--info|-i)         test -n "$action" && multiple_actions=yes ; action=info ;;
     (--new=*)           test -n "$action" && multiple_actions=yes ; action=new ; newpatch="${prefix_option#--new=}" ;;
     (--description)     echo "patch an MD engine" ; exit ;;
     (--engine=*) engine="${prefix_option#--engine=}" ;;
@@ -78,6 +84,7 @@ do
     (--shared) mode=shared ;;
     (--runtime) mode=runtime ;;
     (--force|-f) force=yes ;;
+    (--quiet|-q) quiet=yes ;;
     (*)
       echo "ERROR: Unknown option $prefix_option. Use -h for help."
       exit
@@ -94,8 +101,8 @@ if [ -z "$action" ] ; then
   exit
 fi
 
-echo "PLUMED patching tool"
-echo
+test -n "$quiet" || echo "PLUMED patching tool"
+test -n "$quiet" || echo
 if [ -z "$PLUMED_ROOT" ]
 then
   echo "ERROR: I cannot find PLUMED"
@@ -133,14 +140,14 @@ fi
 
 if [ "$action" == new ]
 then
-  echo "Creating a new patch"
+  test -n "$quiet" || echo "Creating a new patch"
   if [[ -e "$PLUMED_ROOT"/patches/"$newpatch".diff ]] ; then
       echo "ERROR: patch $newpatch is already defined"
       exit
   fi
   touch "$PLUMED_ROOT"/patches/"$newpatch".diff
-  echo "Created file $PLUMED_ROOT/patches/$newpatch.diff"
-  echo "Also consider the possibility of adding a $PLUMED_ROOT/patches/$newpatch.config file"
+  test -n "$quiet" || echo "Created file $PLUMED_ROOT/patches/$newpatch.diff"
+  test -n "$quiet" || echo "Also consider the possibility of adding a $PLUMED_ROOT/patches/$newpatch.config file"
   exit
 fi
 
@@ -169,19 +176,19 @@ then
   test -d "$PLUMED_ROOT/patches/${engine}" && otherfiles="$PLUMED_ROOT/patches/${engine}/"
 fi
 
-echo "MD engine: $engine"
-echo "PLUMED location: $PLUMED_ROOT"
-echo "diff file: $diff"
+test -n "$quiet" || echo "MD engine: $engine"
+test -n "$quiet" || echo "PLUMED location: $PLUMED_ROOT"
+test -n "$quiet" || echo "diff file: $diff"
 
 if [ -f "$config" ]
 then
-  echo "sourcing config file: $config"
+  test -n "$quiet" || echo "sourcing config file: $config"
   source "$config"
 fi
 
 if [ -d "$otherfiles" ]
 then
-  echo "extra files located in: $otherfiles"
+  test -n "$quiet" || echo "extra files located in: $otherfiles"
 fi
 
 case "$mode" in
@@ -220,16 +227,16 @@ case "$action" in
       exit
     fi
     if type -t plumed_before_patch 1>/dev/null ; then
-      echo "Executing plumed_before_patch function"
+      test -n "$quiet" || echo "Executing plumed_before_patch function"
       plumed_before_patch
     fi
-    echo "Linking Plumed.h and Plumed.inc ($mode mode)"
+    test -n "$quiet" || echo "Linking Plumed.h and Plumed.inc ($mode mode)"
     ln -s "$PLUMED_ROOT/src/wrapper/Plumed.h"
     ln -s "$PLUMED_ROOT/src/lib/Plumed.inc.$mode" Plumed.inc
     ln -s "$PLUMED_ROOT/src/lib/Plumed.cmake.$mode" Plumed.cmake
 
     if [ -d "$diff" ]; then
-      echo "Patching with on-the-fly diff from stored originals"
+      test -n "$quiet" || echo "Patching with on-the-fly diff from stored originals"
       PREPLUMED=$(cd $diff ; find . -name "*.preplumed" | sort)
       for bckfile in $PREPLUMED ; do
         file="${bckfile%.preplumed}"
@@ -241,15 +248,23 @@ case "$action" in
         fi
       done
     else
-      echo "Patching with stored diff"
+      test -n "$quiet" || echo "Patching with stored diff"
       bash "$diff"
     fi
     
     if type -t plumed_after_patch 1>/dev/null ; then
-      echo "Executing plumed_after_patch function"
+      test -n "$quiet" || echo "Executing plumed_after_patch function"
       plumed_after_patch
     fi
   ;;
+  (info)
+    if type -t plumed_patch_info 1>/dev/null ; then
+      test -n "$quiet" || echo "Executing plumed_patch_info function"
+      plumed_patch_info
+    else
+      echo "No special info for this MD engine"
+    fi
+  ;;
   (save)
     if [ ! -L Plumed.h -o ! -L Plumed.inc ]
     then
@@ -271,9 +286,9 @@ case "$action" in
       exit
       fi
     fi
-    echo "Saving your changes to $diff"
-    echo "Preplumed files:"
-    echo "$PREPLUMED"
+    test -n "$quiet" || echo "Saving your changes to $diff"
+    test -n "$quiet" || echo "Preplumed files:"
+    test -n "$quiet" || echo "$PREPLUMED"
     if [ -d "$diff" ] && [ -z "$save_originals" ]; then
       echo "This patch uses the dir format (originals are saved)"
       echo "Are you sure you want to save the single diff?"
@@ -290,10 +305,10 @@ case "$action" in
         fi
       done
       if [ "$answer" = originals ] ; then
-        echo "saving originals"
+        test -n "$quiet" || echo "saving originals"
         save_originals=yes
       else
-        echo "saving single diff file"
+        test -n "$quiet" || echo "saving single diff file"
       fi
     fi
     test -e "$diff" && rm -r "$diff"
@@ -328,21 +343,21 @@ EOF
       exit
     fi
     if type -t plumed_before_revert 1>/dev/null ; then
-      echo "Executing plumed_before_revert function"
+      test -n "$quiet" || echo "Executing plumed_before_revert function"
       plumed_before_revert
     fi
     if [ ! -L Plumed.h -o ! -L Plumed.inc ]
     then
       echo "WARNING: I cannot find Plumed.h and Plumed.inc files. You have likely not patched yet."
     else
-    echo "Removing Plumed.h and Plumed.inc"
+    test -n "$quiet" || echo "Removing Plumed.h and Plumed.inc"
       rm Plumed.h Plumed.inc Plumed.cmake
     fi
     PREPLUMED=$(find . -name "*.preplumed")
     if ! test "$PREPLUMED" ; then
       echo "No .preplumed file found, nothing to restore."
     else
-      echo "Reverting changes and touching reverted files"
+      test -n "$quiet" || echo "Reverting changes and touching reverted files"
       for bckfile in $PREPLUMED ; do
         file="${bckfile%.preplumed}"
         mv "$bckfile" "$file"
@@ -350,7 +365,7 @@ EOF
       done
     fi
     if type -t plumed_after_revert 1>/dev/null ; then
-      echo "Executing plumed_after_revert function"
+      test -n "$quiet" || echo "Executing plumed_after_revert function"
       plumed_after_revert
     fi
 esac
diff --git a/patches/qespresso-5.0.2.config b/patches/qespresso-5.0.2.config
index 84c8e48453a9c74b3998ecf58c1ef6fe42d95a5d..f7c7b6ff5255426bf2178facfc72cc428d32e120 100644
--- a/patches/qespresso-5.0.2.config
+++ b/patches/qespresso-5.0.2.config
@@ -15,3 +15,9 @@ awk '{if($1=="LIBS" && $2=="="){print $0" $(PLUMED_LOAD) "}else{print }}' make.s
 function plumed_after_revert(){
   mv make.sys.old make.sys
 }
+
+function plumed_patch_info(){
+  echo ""
+  echo "For more information on Quantum Espresso you should visit http://www.quantum-espresso.org"
+}
+
diff --git a/user-doc/Modules.txt b/user-doc/Modules.txt
index 0b6d9c5604a1e772babd27a07b29b4f82e2e4228..f4996b6cb2abaff1d5d21614bfa80172ccea5afd 100644
--- a/user-doc/Modules.txt
+++ b/user-doc/Modules.txt
@@ -1,47 +1,23 @@
 /**
 
-@page mymodules Modules
+@page mymodules module
 
-PLUMED 2 is written and maintained by five core developers none of whom work full
-time on the maintanence and upkeep of the code.  From our point of view it is thus 
-desirable to keep the core of the code small.  In addition, we are very keen that 
-users who contribute functionality to PLUMED get the plaudits that they deserve. 
-For these reasons many of PLUMED's more advanced functionalities are provided in 
-modules that users can download.  To download a module you simply change to the 
-<c> plumed2/mymodules </c> directory and issue the following command:
+The functionality in PLUMED 2 is divided into a small number of modules.  Some
+users may only wish to use a subset of the functionality available within the 
+code while others may wish to use some of PLUMED's more complicated features.
+For this reason the plumed source code is divided into modules, which users can
+activate or deactivate to their hearts content.  
 
-\verbatim
-./plumed-get-module.sh <name of module>
-\endverbatim  
+- To activate a module add a file called modulename.on to the plumed2/src directory  
+- To deactivate a module add a file called modulename.off to the plumed2/src directory
 
-The following optional modules can be added to PLUMED 2:
+Obviously, in the above instructions modulename should be replaced by the name of the
+module that you would like to activate or deactivate.
 
-@MODULES@
-
-\section addmodule Adding a module
-
-If you have a PLUMED module that you would like us to advertise on the website
-you should copy the directory structure from <c> plumed2/template-module </c> 
-as well as all the files inside that directory and place your source and regtest
-files in appropriate directories.  You are responsible for finding a suitable 
-web repository to host the code that you have developed (we use http://www.assembla.com 
-for PLUMED). You do not need to give us write access to your repository as ensuring that
-your code keeps working with any new release of PLUMED is YOUR responsibility.
-
-Once you are ready to release your code simply send any email to one of the developers
-with a txt file that contains the following information in the following format:
-
-\verbatim
-NAME: <the name of your module>
+Some modules are active by default in the version of PLUMED 2 that you download from 
+the website while others are inactive.  The following lists all of the modules that
+are available in plumed and tells you whether or not they are active by default.
 
-AUTHOR: <the list of people involved in the development of the module>
-
-REPOSITORY: <the command that retreives the code e.g. git clone git@git.assembla.com:plumed2.git>
-
-DESCRIPTION:
-
-<a short description of what it is your module calculates>
-<citations and equations can be included using the usual doxygen commands>
-\endverbatim
+@MODULES@
 
 */
diff --git a/user-doc/extract b/user-doc/extract
index 6443e5d4d2bece46f110c1f24342f08c5086079d..d361a36779f675d14d53204cdbd247ffd939b5d9 100755
--- a/user-doc/extract
+++ b/user-doc/extract
@@ -18,7 +18,13 @@ done
 # Create the list of codes that plumed works with from the set of available patches
 for file in ../patches/*.diff
 do
-   echo "- $file" | sed -e 's/.diff//' | sed -e 's/..\/patches\///' >> automatic/codes.list
+   myengine=`echo "$file" | sed -e 's/.diff//' | sed -e 's/..\/patches\///'`
+   mytag=`echo "$myengine" | sed -e 's/\./\_/g'`
+   echo "- \subpage $mytag" >> automatic/codes.list
+   echo "/**" >> automatic/$myengine.txt
+   echo "\page $mytag $myengine" >> automatic/$myengine.txt
+   plumed patch -e $myengine -i -q >> automatic/$myengine.txt
+   echo "*/" >> automatic/$myengine.txt 
 done
 
 ## Check for utilities that register actions with no documentation
@@ -105,53 +111,62 @@ done
 
 # Find what modules the user has installed
 # Find the list of modules
-if [ -d ../mymodules ] ;  then
-  sed -i '' -e 's/type="user" visible="no" url="mymodules.html"/type="user" visible="yes" url="mymodules.html"/' PlumedLayout.xml
-  for file in `ls ../mymodules/available-modules/`
-  do
-     # Check if module has been installed
-     if [ -d "../mymodules/$file" ] ; then
-          # Generate documentation and accreditation on modules page
-          echo "\section $file" >> automatic/mymodules.list
-          echo >> automatic/mymodules.list
-          echo "<table  align=center frame=void width=95%% celpadding=5%%>" >> automatic/mymodules.list
-          echo "<tr> <td width=70%%> </td> </tr> <td>" >> automatic/mymodules.list
-          author=`grep AUTHOR: ../mymodules/available-modules/"$file" | sed -e 's/AUTHOR://'` 
-          echo "<b> author: $author </b>" >> automatic/mymodules.list
-          echo "</td> </tr>" >> automatic/mymodules.list
-          echo "<tr> <td colspan="2">" >> automatic/mymodules.list
-          dline=`grep -n DESCRIPTION: ../mymodules/available-modules/"$file" | sed -n 's/^\([0-9]*\)[:].*/\1/p'` >> automatic/mymodules.list
-          tail -n +$(($dline+1)) ../mymodules/available-modules/"$file" >> automatic/mymodules.list
-          echo "</td> </tr> </table>" >> automatic/mymodules.list
-          echo >> automatic/mymodules.list
-          echo >> automatic/mymodules.list
-          
-          # Find src files in module and add a link to the module description
-          for srcfile in `ls ../mymodules/"$file"/src/*cpp` ; do
-              ndocs=`grep PLUMEDOC "$srcfile" | wc -l | awk '{print $1}'`
-              for ((line=1;line<$ndocs;++line)) ; do
-                 docfile=`grep PLUMEDOC "$srcfile" | grep -v END | head -n $line | tail -n 1 | awk '{print $3}'`
-                 cat automatic/"$docfile".tmp |
-                 {
-                     while read -r LINE ; do
-                        if `echo $LINE | grep "\section $docfile" 1>/dev/null 2>&1`
-                        then  
-                          echo $LINE
-                          echo "<table  align=center frame=void width=95%% celpadding=5%%>"
-                          echo "<tr> <td width=70%%> </td> <td>"
-                          echo "<b> This is part of the \ref $file module </b>"
-                          echo "</td> </tr> </table>"
-                        else 
-                          echo "$LINE"
-                        fi
-                     done
-                 } > automatic/"$docfile"1.tmp
-                 mv automatic/"$docfile"1.tmp automatic/"$docfile".tmp
-              done
-          done   
-     fi 
-  done
-fi
+# if [ -d ../mymodules ] ;  then
+#  sed -i '' -e 's/type="user" visible="no" url="mymodules.html"/type="user" visible="yes" url="mymodules.html"/' PlumedLayout.xml
+echo "<table align=center frame=void width=65%% cellpadding=5%%>" > automatic/modules.list
+echo "<tr> <td> <b> Module name </b> </td> <td> <b> Default behavior </b> </td> </tr>" >> automatic/modules.list
+for file in `ls ../src/*/module.type | sed -e 's/..\/src\///' | sed -e 's/\/module.type//'`
+do
+   dstr=`head ../src/$file/module.type`
+   if [ "$dstr" != "always" ] ; then
+         echo "<tr> <td> $file </td>" >> automatic/modules.list
+         if [ "$dstr" == "default-on" ] ; then
+            echo "<td> on </td> </tr>" >> automatic/modules.list
+         else 
+            echo "<td> off </td> </tr>" >> automatic/modules.list
+         fi
+#        # Generate documentation and accreditation on modules page
+#        echo "\section $file" >> automatic/mymodules.list
+#        echo >> automatic/mymodules.list
+#        echo "<table  align=center frame=void width=95%% celpadding=5%%>" >> automatic/mymodules.list
+#        echo "<tr> <td width=70%%> </td> </tr> <td>" >> automatic/mymodules.list
+#        author=`grep AUTHOR: ../mymodules/available-modules/"$file" | sed -e 's/AUTHOR://'` 
+#        echo "<b> author: $author </b>" >> automatic/mymodules.list
+#        echo "</td> </tr>" >> automatic/mymodules.list
+#        echo "<tr> <td colspan="2">" >> automatic/mymodules.list
+#        dline=`grep -n DESCRIPTION: ../mymodules/available-modules/"$file" | sed -n 's/^\([0-9]*\)[:].*/\1/p'` >> automatic/mymodules.list
+#        tail -n +$(($dline+1)) ../mymodules/available-modules/"$file" >> automatic/mymodules.list
+#        echo "</td> </tr> </table>" >> automatic/mymodules.list
+#        echo >> automatic/mymodules.list
+#        echo >> automatic/mymodules.list
+        
+        # Find src files in module and add a link to the module description
+        for srcfile in `ls ../src/"$file"/*cpp` ; do
+            ndocs=`grep PLUMEDOC "$srcfile" | grep -v END | wc -l | awk '{print $1}'`
+            for ((line=1;line<=$ndocs;++line)) ; do
+               docfile=`grep PLUMEDOC "$srcfile" | grep -v END | head -n $line | tail -n 1 | awk '{print $3}'`
+               cat automatic/"$docfile".tmp |
+               {
+                   while read -r LINE ; do
+                      if `echo $LINE | grep "section $docfile" 1>/dev/null 2>&1`
+                      then  
+                        echo $LINE
+                        echo "<table  align=center frame=void width=95%% celpadding=5%%>"
+                        echo "<tr> <td width=70%%> </td> <td>"
+                        echo "<b> This is part of the $file \\ref mymodules </b>"
+                        echo "</td> </tr> </table>"
+                      else 
+                        echo "$LINE"
+                      fi
+                   done
+               } > automatic/"$docfile"1.tmp
+               mv automatic/"$docfile"1.tmp automatic/"$docfile".tmp
+            done
+        done   
+   fi 
+done
+echo "</table>" >> automatic/modules.list
+# fi
 
 # Generate all the documentation from keywords
 source ../sourceme.sh
@@ -237,7 +252,7 @@ cat $file.txt |
     echo "</table>"
   elif [ "$LINE" = "@MODULES@" ]
   then
-    cat automatic/mymodules.list
+    cat automatic/modules.list
   elif [ "$LINE" = "@FUNCTION@" ]
   then
     echo "<table align=center frame=void width=95%% cellpadding=5%%>"