diff --git a/configure/modules/DECOUPLE_FLAGS b/configure/modules/DECOUPLE_FLAGS
index 97230b26868dfaddfb32611e60e25d4b142206e6..a2eae503d14d155d1ce8857528009152bdaa1bdf 100644
--- a/configure/modules/DECOUPLE_FLAGS
+++ b/configure/modules/DECOUPLE_FLAGS
@@ -1,111 +1,11 @@
 # *** ISSUES
 # driver.makefile recursively read all include directories which were installed.
-# The only way to exclude header files is....
+# The only way to exclude header files is to set $(module)_VERSION to a blank.
 
-DECOUPLE_MODULES += ess
-DECOUPLE_MODULES += iocStats
-DECOUPLE_MODULES += autosave
-DECOUPLE_MODULES += caPutLog
-DECOUPLE_MODULES += asyn
-DECOUPLE_MODULES += busy
-DECOUPLE_MODULES += modbus
-DECOUPLE_MODULES += ipmiComm
-DECOUPLE_MODULES += sequencer
-DECOUPLE_MODULES += sscan
-DECOUPLE_MODULES += std
-DECOUPLE_MODULES += ip
-DECOUPLE_MODULES += calc
-DECOUPLE_MODULES += delaygen
-DECOUPLE_MODULES += pcre
-DECOUPLE_MODULES += stream
-DECOUPLE_MODULES += s7plc
-DECOUPLE_MODULES += recsync
-DECOUPLE_MODULES += MCoreUtils
-DECOUPLE_MODULES += lua
+# We first collect all installed modules from $(E3_SITEMODS_PATH) ...
+$(foreach dir,$(patsubst $(E3_SITEMODS_PATH)/%,%,$(wildcard $(E3_SITEMODS_PATH)/*)),$(eval DECOUPLE_MODULES += $(dir)))
 
-DECOUPLE_MODULES += devlib2
-DECOUPLE_MODULES += mrfioc2
-
-DECOUPLE_MODULES += exprtk
-DECOUPLE_MODULES += motor
-DECOUPLE_MODULES += ecmc
-DECOUPLE_MODULES += EthercatMC
-DECOUPLE_MODULES += ecmctraining
-DECOUPLE_MODULES += ecmccfg
-DECOUPLE_MODULES += ads
-DECOUPLE_MODULES += BeckhoffADS
-
-DECOUPLE_MODULES += keypress
-DECOUPLE_MODULES += sysfs
-DECOUPLE_MODULES += symbolname
-DECOUPLE_MODULES += memDisplay
-DECOUPLE_MODULES += regdev
-DECOUPLE_MODULES += i2cDev
-
-DECOUPLE_MODULES += tosca
-DECOUPLE_MODULES += tsclib
-DECOUPLE_MODULES += ifcdaqdrv
-DECOUPLE_MODULES += ifcdaqdrv2
-
-## The main issue is nds3, it is mandatory to disable it
-## 
-DECOUPLE_MODULES += nds3
-DECOUPLE_MODULES += nds3epics
-DECOUPLE_MODULES += ifc14edrv
-DECOUPLE_MODULES += ifcfastint
-
-DECOUPLE_MODULES += nds
-DECOUPLE_MODULES += loki
-DECOUPLE_MODULES += nds
-DECOUPLE_MODULES += sis8300drv
-DECOUPLE_MODULES += sis8300
-DECOUPLE_MODULES += sis8300llrfdrv
-DECOUPLE_MODULES += sis8300llrf
-
-DECOUPLE_MODULES += ADSupport
-DECOUPLE_MODULES += ADCore
-DECOUPLE_MODULES += NDDriverStdArrays
-DECOUPLE_MODULES += ADSimDetector
-DECOUPLE_MODULES += ADCSimDetector
-DECOUPLE_MODULES += ADAndor
-DECOUPLE_MODULES += ADAndor3
-DECOUPLE_MODULES += ADPointGrey
-DECOUPLE_MODULES += ADProsilica
-DECOUPLE_MODULES += ADPluginEdge
-DECOUPLE_MODULES += ADPluginCalib
-DECOUPLE_MODULES += ADGenICam
-DECOUPLE_MODULES += ADSpinnaker
-
-
-
-DECOUPLE_MODULES += amcpico8
-DECOUPLE_MODULES += adpico8
-DECOUPLE_MODULES += adsis8300
-DECOUPLE_MODULES += adsis8300bcm
-DECOUPLE_MODULES += adsis8300bpm
-DECOUPLE_MODULES += adsis8300fc
-
-DECOUPLE_MODULES += pvCommon
-DECOUPLE_MODULES += pvData
-DECOUPLE_MODULES += pvAccess
-DECOUPLE_MODULES += pva2pva
-DECOUPLE_MODULES += pvDatabase
-DECOUPLE_MODULES += normativeTypes
-DECOUPLE_MODULES += pvaClient
-
-
-DECOUPLE_MODULES += opcua
-DECOUPLE_MODULES += snmp
-DECOUPLE_MODULES += admisc
-DECOUPLE_MODULES += ethmod
-
-DECOUPLE_MODULES += huginn
-
-DECOUPLE_MODULES += rs_nrp
-DECOUPLE_MODULES += mebtemudaq
-
-
-# We don't want to overwrite the versions from required modules, so keep those.
+# ... except that we don't want to overwrite the versions from required modules, so keep those.
 $(foreach mod,$(filter-out $(REQ),$(DECOUPLE_MODULES)),$(eval $(mod)_VERSION =))
 
 # In addition to decouple the existent e3 module,