diff --git a/regtest/Makefile b/regtest/Makefile
index 19d709d9be412b4f9f1b79dfe984a711b8585567..5225aaf43d23743c150cb24b644b5dd66a01cf12 100644
--- a/regtest/Makefile
+++ b/regtest/Makefile
@@ -1,4 +1,4 @@
-SUBDIRS := basic metainference $(shell ./scripts/find_modules.sh)
+SUBDIRS := basic metainference crystallization manyrestraints adjmat
 SUBDIRSCLEAN := $(addsuffix .clean,$(SUBDIRS))
 SUBDIRSVALGRIND := $(addsuffix .valgrind,$(SUBDIRS))
 
diff --git a/regtest/adjmat/rt-dfg-wcsurf/config b/regtest/adjmat/rt-dfg-wcsurf/config
index df8d59a9f3f3ffdeafb288e243040ab9717a7205..328f4e25a1a4ab84095b15f38f3fe4e62b923cd6 100644
--- a/regtest/adjmat/rt-dfg-wcsurf/config
+++ b/regtest/adjmat/rt-dfg-wcsurf/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=adjmat
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz gas-one.xyz --dump-forces forces --dump-forces-fmt=%8.4f"
diff --git a/regtest/adjmat/rt-dfg1/config b/regtest/adjmat/rt-dfg1/config
index 52b386435dbab280f41fe1e7ef68b07e55e7579e..a0289fedcf4b097dea16358b0f7fffc9a8dda0f6 100644
--- a/regtest/adjmat/rt-dfg1/config
+++ b/regtest/adjmat/rt-dfg1/config
@@ -1,4 +1,5 @@
 mpiprocs=4
 type=driver
+plumed_modules=adjmat
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz config.xyz"
diff --git a/regtest/adjmat/rt-dfg2/config b/regtest/adjmat/rt-dfg2/config
index f531340598c502f842cf736c8382b4a0dd4258cc..dc52d7fc7b067c26630a0d3d2a1c5e32802966c4 100644
--- a/regtest/adjmat/rt-dfg2/config
+++ b/regtest/adjmat/rt-dfg2/config
@@ -1,4 +1,5 @@
 mpiprocs=2
 type=driver
+plumed_modules=adjmat
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz traj.xyz --length-units A --box 28.66,28.66,28.66"
diff --git a/regtest/adjmat/rt-dfg3/config b/regtest/adjmat/rt-dfg3/config
index 9e3e71ba3a108e3ecdf736888480b91519bba00d..a1b1c5a4e8354f7ea5d86b7df8772c56ed7912d0 100644
--- a/regtest/adjmat/rt-dfg3/config
+++ b/regtest/adjmat/rt-dfg3/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=adjmat
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz config.xyz"
diff --git a/regtest/adjmat/rt-hbond/config b/regtest/adjmat/rt-hbond/config
index dfacea92117db4b10201495f91641cea3826ab09..091b421e2a9bf51637c21d039ba5e8e8057f2eaf 100644
--- a/regtest/adjmat/rt-hbond/config
+++ b/regtest/adjmat/rt-hbond/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=adjmat
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz water-box.xyz"
diff --git a/regtest/adjmat/rt-sprint/config b/regtest/adjmat/rt-sprint/config
index 3edebcebb8e3f5e9a6a8b24e9fdff24c518c5d40..a6cf887f727f684d602a2cdae657cc8e32d412df 100644
--- a/regtest/adjmat/rt-sprint/config
+++ b/regtest/adjmat/rt-sprint/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=adjmat
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz isomers.xyz"
diff --git a/regtest/adjmat/rt-sums/config b/regtest/adjmat/rt-sums/config
index ba8b778571e71d71dd136e9098170c96b46493fe..bf541ba061dfa86fc0bed083de3873efdb845f50 100644
--- a/regtest/adjmat/rt-sums/config
+++ b/regtest/adjmat/rt-sums/config
@@ -1,4 +1,5 @@
 type=driver
+plumed_modules=adjmat
 # this is to test a different name
 arg="--plumed plumed.dat --timestep 0.005 --ixyz trajectory.xyz --dump-forces forces --dump-forces-fmt=%8.4f"
 extra_files="../../trajectories/trajectory.xyz"
diff --git a/regtest/crystallization/rt-average-vec/config b/regtest/crystallization/rt-average-vec/config
index 2048daf60309595eadf1a6dc9d834de4e1e73784..267ae0e853f60e84e84732d18a7ab962db64de8f 100644
--- a/regtest/crystallization/rt-average-vec/config
+++ b/regtest/crystallization/rt-average-vec/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz LJ75C_global-minima.xyz"
diff --git a/regtest/crystallization/rt-averaged-q6-lowmem/config b/regtest/crystallization/rt-averaged-q6-lowmem/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-averaged-q6-lowmem/config
+++ b/regtest/crystallization/rt-averaged-q6-lowmem/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-averaged-q6/config b/regtest/crystallization/rt-averaged-q6/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-averaged-q6/config
+++ b/regtest/crystallization/rt-averaged-q6/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-dumpmulti/config b/regtest/crystallization/rt-dumpmulti/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-dumpmulti/config
+++ b/regtest/crystallization/rt-dumpmulti/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-grad/config b/regtest/crystallization/rt-grad/config
index 277a85b7332061a5b1530d3726f529c77ee5d3d9..99dd9987392e17a4afecec94dccbfaa517c42db6 100644
--- a/regtest/crystallization/rt-grad/config
+++ b/regtest/crystallization/rt-grad/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --trajectory-stride 10 --timestep 0.005 --ixyz LJ_VAP.xyz --box 7.73950,7.73950,7.73950 --dump-forces forces --dump-forces-fmt=%8.4f"
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/config b/regtest/crystallization/rt-nbonds-q6-lowmem/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-nbonds-q6-lowmem/config
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-nbonds-q6/config b/regtest/crystallization/rt-nbonds-q6/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-nbonds-q6/config
+++ b/regtest/crystallization/rt-nbonds-q6/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-q6-lowmem/config b/regtest/crystallization/rt-q6-lowmem/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-q6-lowmem/config
+++ b/regtest/crystallization/rt-q6-lowmem/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-q6-lq6-around/config b/regtest/crystallization/rt-q6-lq6-around/config
index 0e7782e7bd9c0aa763935f923d57c3c82a890c75..4c452fd7e8bce6d14dbe1d924a12ebdad333c223 100644
--- a/regtest/crystallization/rt-q6-lq6-around/config
+++ b/regtest/crystallization/rt-q6-lq6-around/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--ixyz lq6_test.xyz --box 61.8440,71.5360,150.00000"
diff --git a/regtest/crystallization/rt-q6-subset/config b/regtest/crystallization/rt-q6-subset/config
index 5a728e15c66e0706504e44ff7ae4b5eb22a08492..03c3ab01164f01bff9c371b4b8f2c4b08e50d4e5 100644
--- a/regtest/crystallization/rt-q6-subset/config
+++ b/regtest/crystallization/rt-q6-subset/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz --dump-forces forces --dump-forces-fmt=%8.4f" # --debug-forces forces.num"
diff --git a/regtest/crystallization/rt-q6/config b/regtest/crystallization/rt-q6/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-q6/config
+++ b/regtest/crystallization/rt-q6/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-simplecubic/config b/regtest/crystallization/rt-simplecubic/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-simplecubic/config
+++ b/regtest/crystallization/rt-simplecubic/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-smac/config b/regtest/crystallization/rt-smac/config
index f77a800e7ffc799225d0316ee86860f1a56b48b7..c7573debf6d7e057ab7e498e445fb3c8dde49d19 100644
--- a/regtest/crystallization/rt-smac/config
+++ b/regtest/crystallization/rt-smac/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz forgareth.xyz --length-units=A --box=70.0,70.0,70.0"
diff --git a/regtest/crystallization/rt-splane/config b/regtest/crystallization/rt-splane/config
index f77a800e7ffc799225d0316ee86860f1a56b48b7..c7573debf6d7e057ab7e498e445fb3c8dde49d19 100644
--- a/regtest/crystallization/rt-splane/config
+++ b/regtest/crystallization/rt-splane/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz forgareth.xyz --length-units=A --box=70.0,70.0,70.0"
diff --git a/regtest/crystallization/rt-urea/config b/regtest/crystallization/rt-urea/config
index 67334ce385c4d77b45c4b0128543c5f97cf4a076..da8065816b878d4ea4cee78d57cf89686507b119 100644
--- a/regtest/crystallization/rt-urea/config
+++ b/regtest/crystallization/rt-urea/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules="crystallization adjmat"
 # this is to test a different name
 arg="--ixyz traj.xyz --box 26.699,26.717,28.643"
diff --git a/regtest/crystallization/rt-volume/config b/regtest/crystallization/rt-volume/config
index e07432072a91405171ff68d3c3d22a09fde3346c..066c018563d98475b823f21eb191048876dcb66c 100644
--- a/regtest/crystallization/rt-volume/config
+++ b/regtest/crystallization/rt-volume/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-wcsurface/config b/regtest/crystallization/rt-wcsurface/config
index a787aa1408fca801ddb3c45ae3bb9fd232281f41..f8c080c2bd3718afb9811494acb5e7d2819d639d 100644
--- a/regtest/crystallization/rt-wcsurface/config
+++ b/regtest/crystallization/rt-wcsurface/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz traj-1frame.xyz"
diff --git a/regtest/crystallization/rt-wcsurface2/config b/regtest/crystallization/rt-wcsurface2/config
index 377f2104d38c4f35cf053094cd23f93f468913e1..6302a78e15800a8611f9936ffd52aeea9ad25d71 100644
--- a/regtest/crystallization/rt-wcsurface2/config
+++ b/regtest/crystallization/rt-wcsurface2/config
@@ -1,3 +1,4 @@
 type=driver
+plumed_modules=crystallization
 # this is to test a different name
 arg="--plumed plumed.dat --ixyz traj-3frames.xyz"
diff --git a/regtest/manyrestraints/rt53/config b/regtest/manyrestraints/rt53/config
index 4804b7f2a86c1dcb06f52d08f8dff331e318192f..6c04bdb5009ec2eda55f9199bd41e4fced101389 100644
--- a/regtest/manyrestraints/rt53/config
+++ b/regtest/manyrestraints/rt53/config
@@ -1,4 +1,5 @@
 type=driver
+plumed_modules=manyrestraints
 # this is to test a different name
 arg="--plumed plumed.dat --trajectory-stride 10 --timestep 0.005 --ixyz trajectory.xyz --dump-forces forces --dump-forces-fmt=%8.4f"
 extra_files="../../trajectories/trajectory.xyz"
diff --git a/regtest/scripts/check b/regtest/scripts/check
index 68ade2b6b3220e7327878f19c3c533321cc195df..f52018ac2f99433c9072a7241cf61064ead309d0 100755
--- a/regtest/scripts/check
+++ b/regtest/scripts/check
@@ -20,13 +20,7 @@ echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
 echo "+ Test session ended at $(date)"
 
 dirs=$(
-  for mod in `./scripts/find_modules.sh` ; do 
-    for file in $mod/rt*/Makefile
-    do
-      echo ${file%Makefile}
-    done
-  done
-  for file in basic/rt*/Makefile metainference/rt*/Makefile
+  for file in {basic,metainference,crystallization,manyrestraints,adjmat}/rt*/Makefile
   do
     echo ${file%Makefile}
   done
diff --git a/regtest/scripts/find_modules.sh b/regtest/scripts/find_modules.sh
deleted file mode 100755
index f77925f2e3b7076b5dd64a8bb0c16f88a3edae6c..0000000000000000000000000000000000000000
--- a/regtest/scripts/find_modules.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-for dir in ../src/*
-do
-  if [ -e $dir/module.type ] ; then
-    if [ "$(cat "$dir/module.type")" == always ] ; then
-      continue
-    fi
-    short="$(echo $dir | sed -e 's/..\/src\///g')"
-    if ! test -d $short ; then
-      continue
-    fi
-    case "$(cat "$dir/module.type")" in
-     (default-on) test -f $dir.off || echo $short ;;
-     (default-off) test -f $dir.on && echo $short ;;
-    esac
-
-#    echo `echo $dir | sed -e 's/..\/src\///g'`
-  fi
-done
diff --git a/regtest/scripts/run b/regtest/scripts/run
index 4d92f722e2d1854182b5e187aa2becd201f68ac0..bac32dc06831888c4e40c63c2e828e24e2d7373c 100755
--- a/regtest/scripts/run
+++ b/regtest/scripts/run
@@ -31,6 +31,9 @@ test -f config || {
 
 mpiprocs=0
 
+plumed_needs=
+plumed_modules=
+
 source ./config
 
 for file in $extra_files
@@ -85,7 +88,17 @@ do
   echo "Checking for $need"
   if ! $plumed config -q has $need
   then
-    echo "NOT_APPLIABLE ($need NOT INSTALLED)"
+    echo "NOT_APPLIABLE ($need NOT ENABLED)"
+    exit 0;
+  fi
+done
+
+for module in $plumed_modules
+do
+  echo "Checking for $module"
+  if ! $plumed config -q module $module
+  then
+    echo "NOT_APPLIABLE ($need MODULE NOT INSTALLED)"
     exit 0;
   fi
 done