diff --git a/configure/E3/RULES_REQUIRE b/configure/E3/RULES_REQUIRE
index 4b3b5203d4fa2210182f4451c0c0dbd3fef750f9..2bb8f1d9780f4d516d0aab62a6405c2e2b5d0978 100644
--- a/configure/E3/RULES_REQUIRE
+++ b/configure/E3/RULES_REQUIRE
@@ -21,6 +21,7 @@ E3_IOC_ENVCFG_FILE:=$(TOP)/tools/ess-env.conf
 #
 G_E3_CFG_FILE:=$(TOP)/tools/e3.cfg
 G_E3_ENV_FILE:=$(TOP)/tools/setE3Env.bash
+G_E3_EXCLUDE_FLAGS:=$(TOP)/tools/excludeflags.mk
 
 
 
@@ -30,6 +31,7 @@ requireconf: e3-site-path e3-site-conf
 	$(QUIET) $(SUDO) install -d -m 755 $(E3_REQUIRE_TOOLS)
 	$(QUIET) $(SUDO) install -d -m 755 $(E3_REQUIRE_BIN)
 	$(QUIET) $(SUDO) install    -m 644 $(E3_MODULE_SRC_PATH)/App/tools/driver.makefile $(E3_REQUIRE_TOOLS)/
+	$(QUIET) $(SUDO) install    -m 644 $(G_E3_EXCLUDE_FLAGS)   $(E3_REQUIRE_TOOLS)/
 	$(QUIET) $(SUDO) install    -m 755 $(E3_MODULE_SRC_PATH)/App/tools/*.tcl           $(E3_REQUIRE_TOOLS)/
 	$(QUIET) sed -i 's/^IOCSH_HASH_VERSION=.*/IOCSH_HASH_VERSION=$(IOCSH_HASH_VERSION)/g' $(E3_IOC_ENVCFG_FILE)
 	$(QUIET) $(SUDO) install    -m 644 $(E3_IOC_FUNC_FILE)           $(E3_REQUIRE_BIN)/
@@ -39,6 +41,8 @@ requireconf: e3-site-path e3-site-conf
 	$(QUIET) $(SUDO) install    -m 755 $(E3_IOC_SHELL_NICE_FILE)     $(E3_REQUIRE_BIN)/
 	$(QUIET) $(SUDO) install    -m 644 $(G_E3_CFG_FILE)              $(E3_REQUIRE_BIN)/
 	$(QUIET) $(SUDO) install    -m 644 $(G_E3_ENV_FILE)              $(E3_REQUIRE_BIN)/
+	$(QUIET) $(SUDO) install -d -m 755 $(E3_REQUIRE_LOCATION)/configure
+	$(QUIET) $(SUDO) install -m 644 $(TOP)/configure/modules/* $(E3_REQUIRE_LOCATION)/configure/
 
 
 # Create SITE PATH
diff --git a/configure/modules/CONFIG b/configure/modules/CONFIG
new file mode 100644
index 0000000000000000000000000000000000000000..22c0212140511a64532441e2872de68cfb406a90
--- /dev/null
+++ b/configure/modules/CONFIG
@@ -0,0 +1,8 @@
+# -*- mode: Makefile;-*-
+
+include $(REQUIRE_CONFIG)/CONFIG_E3_PATH
+include $(REQUIRE_CONFIG)/CONFIG_E3_MAKEFILE
+include $(REQUIRE_CONFIG)/CONFIG_EPICS
+include $(REQUIRE_CONFIG)/CONFIG_SUDO
+include $(REQUIRE_CONFIG)/CONFIG_EXPORT
+
diff --git a/configure/modules/CONFIG_E3_MAKEFILE b/configure/modules/CONFIG_E3_MAKEFILE
new file mode 100644
index 0000000000000000000000000000000000000000..b3a1c37097c2216d4d29eebe057369394a918fb1
--- /dev/null
+++ b/configure/modules/CONFIG_E3_MAKEFILE
@@ -0,0 +1,21 @@
+# Pass necessary driver.makefile variables through makefile options
+#
+
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS := -C $(E3_MODULE_SRC_PATH)
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += -f $(E3_MODULE_MAKEFILE)
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += LIBVERSION="$(E3_MODULE_VERSION)"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += PROJECT="$(E3_MODULE_NAME)"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += EPICS_MODULES="$(E3_MODULES_PATH)"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += EPICS_LOCATION="$(EPICS_BASE)"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += BUILDCLASSES="Linux"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITEMODS_PATH="$(E3_SITEMODS_PATH)"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITEAPPS_PATH="$(E3_SITEAPPS_PATH)"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SITELIBS_PATH="$(E3_SITELIBS_PATH)"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SEQUENCER_NAME="$(E3_SEQUENCER_NAME)"
+E3_REQUIRE_MAKEFILE_INPUT_OPTIONS += E3_SEQUENCER_VERSION="$(E3_SEQUENCER_VERSION)"
+
+E3_MODULE_MAKE_CMDS:=make $(E3_REQUIRE_MAKEFILE_INPUT_OPTIONS)
+
+
+VARS_EXCLUDES+=E3_REQUIRE_MAKEFILE_INPUT_OPTIONS
+
diff --git a/configure/modules/CONFIG_E3_PATH b/configure/modules/CONFIG_E3_PATH
new file mode 100644
index 0000000000000000000000000000000000000000..d85ba3f62b6e2838328c0c55c41366c23c3e2b86
--- /dev/null
+++ b/configure/modules/CONFIG_E3_PATH
@@ -0,0 +1,45 @@
+E3_MODULES_PATH:=$(E3_REQUIRE_LOCATION)/siteMods
+E3_SITEMODS_PATH:=$(E3_MODULES_PATH)
+E3_SITELIBS_PATH:=$(E3_REQUIRE_LOCATION)/siteLibs
+E3_SITEAPPS_PATH:=$(E3_REQUIRE_LOCATION)/siteApps
+
+E3_MODULES_VENDOR_LIBS_LOCATION:=$(E3_SITELIBS_PATH)/vendor/$(E3_MODULE_NAME)/$(E3_MODULE_VERSION)
+E3_MODULES_INSTALL_LOCATION:=$(E3_SITEMODS_PATH)/$(E3_MODULE_NAME)/$(E3_MODULE_VERSION)
+
+E3_MODULES_INSTALL_LOCATION_INC:=$(E3_MODULES_INSTALL_LOCATION)/include
+E3_MODULES_INSTALL_LOCATION_DB:=$(E3_MODULES_INSTALL_LOCATION)/db
+E3_MODULES_INSTALL_LOCATION_BIN:=$(E3_MODULES_INSTALL_LOCATION)/bin
+E3_MODULES_INSTALL_LOCATION_LIB:=$(E3_MODULES_INSTALL_LOCATION)/lib
+
+
+E3_MODULES_INSTALL_LOCATION_INC_LINK:=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME)_$(E3_MODULE_VERSION)_include
+E3_MODULES_INSTALL_LOCATION_DB_LINK :=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME)_$(E3_MODULE_VERSION)_db
+E3_MODULES_INSTALL_LOCATION_BIN_LINK:=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME)_$(E3_MODULE_VERSION)_bin
+E3_MODULES_INSTALL_LOCATION_LIB_LINK:=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME)_$(E3_MODULE_VERSION)_lib
+
+
+E3_MODULES_INSTALL_LOCATION_DBD:=$(E3_MODULES_INSTALL_LOCATION)/dbd/$(E3_MODULE_NAME).dbd
+E3_MODULES_INSTALL_LOCATION_DBD_LINK:=$(E3_SITELIBS_PATH)/$(E3_MODULE_NAME).dbd.$(E3_MODULE_VERSION)
+
+EXPORT_VARS+=E3_MODULES_VENDOR_LIBS_LOCATION
+#EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_INC
+#EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_DB
+#EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_BIN
+#EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_LIB
+EXPORT_VARS+=E3_MODULES_INSTALL_LOCATION_LIB_LINK
+
+# It is a bit weird, it would be better to implement within driver.makefile later
+# Assumption : we are using the same lib name from driver.makefile 
+E3_MODULES_LIBNAME:=lib$(E3_MODULE_NAME).so
+E3_MODULES_LIBLINKNAME:=$(E3_MODULES_LIBNAME).$(E3_MODULE_VERSION)
+
+INSTALLED_EPICS_BASE_ARCHS_PATHS=$(sort $(dir $(wildcard $(EPICS_BASE)/bin/*/)))
+TEMP_INSTALLED_EPICS_BASE_ARCHS=$(INSTALLED_EPICS_BASE_ARCHS_PATHS:$(EPICS_BASE)/bin/%=%)
+INSTALLED_EPICS_BASE_ARCHS=$(TEMP_INSTALLED_EPICS_BASE_ARCHS:/=)
+
+
+
+### Exclude the following variables to display 
+VARS_EXCLUDES+=TEMP_INSTALLED_EPICS_BASE_ARCHS
+VARS_EXCLUDES+=INSTALLED_EPICS_BASE_ARCHS_PATHS
+
diff --git a/configure/modules/CONFIG_EPICS b/configure/modules/CONFIG_EPICS
new file mode 100644
index 0000000000000000000000000000000000000000..c6516ede8b90b141a2db2cf6b5baf784ef612bda
--- /dev/null
+++ b/configure/modules/CONFIG_EPICS
@@ -0,0 +1,64 @@
+COMMUNITY_EPICS_MODULES:=$(EPICS_BASE)/epics-modules
+
+M_AUTOSAVE:=$(COMMUNITY_EPICS_MODULES)/autosave
+M_DEVLIB2:=$(COMMUNITY_EPICS_MODULES)/devlib2
+M_IOCSTATS:=$(COMMUNITY_EPICS_MODULES)/iocStats
+M_ASYN:=$(COMMUNITY_EPICS_MODULES)/asyn
+M_BUSY:=$(COMMUNITY_EPICS_MODULES)/busy
+M_MODBUS:=$(COMMUNITY_EPICS_MODULES)/modbus
+M_MRFIOC2:=$(COMMUNITY_EPICS_MODULES)/mrfioc2
+M_LUA:=$(COMMUNITY_EPICS_MODULES)/lua
+M_IPMICOMM:=$(COMMUNITY_EPICS_MODULES)/ipmiComm
+M_STREAM:=$(COMMUNITY_EPICS_MODULES)/stream
+M_CALC:=$(COMMUNITY_EPICS_MODULES)/calc
+M_MOTOR:=$(COMMUNITY_EPICS_MODULES)/motor
+M_SSCAN:=$(COMMUNITY_EPICS_MODULES)/sscan
+M_SNCSEQ:=$(COMMUNITY_EPICS_MODULES)/seq
+M_IP:=$(COMMUNITY_EPICS_MODULES)/ip
+M_IPAC:=$(COMMUNITY_EPICS_MODULES)/ipac
+M_ADSUPPORT:=$(COMMUNITY_EPICS_MODULES)/adsupport
+M_ADCORE:=$(COMMUNITY_EPICS_MODULES)/adcore
+
+
+
+
+export M_AUTOSAVE
+export M_DEVLIB2
+export M_IOCSTATS
+export M_ASYN
+export M_BUSY
+export M_MODBUS
+export M_MRFIOC2
+export M_LUA
+export M_IPMICOMM
+export M_STREAM
+export M_CALC
+export M_MOTOR
+export M_SSCAN
+export M_SNCSEQ
+export M_IP
+export M_IPAC
+export M_ADSUPPORT
+export M_ADCORE
+
+### Exclude the following variables to display 
+VARS_EXCLUDES+=COMMUNITY_EPICS_MODULES
+VARS_EXCLUDES+=M_AUTOSAVE
+VARS_EXCLUDES+=M_DEVLIB2
+VARS_EXCLUDES+=M_IOCSTATS
+VARS_EXCLUDES+=M_ASYN
+VARS_EXCLUDES+=M_BUSY
+VARS_EXCLUDES+=M_MODBUS
+VARS_EXCLUDES+=M_MRFIOC2
+VARS_EXCLUDES+=M_LUA
+VARS_EXCLUDES+=M_IPMICOMM
+VARS_EXCLUDES+=M_STREAM
+VARS_EXCLUDES+=M_CALC
+VARS_EXCLUDES+=M_MOTOR
+VARS_EXCLUDES+=M_SSCAN
+VARS_EXCLUDES+=M_SNCSEQ
+VARS_EXCLUDES+=M_IP
+VARS_EXCLUDES+=M_IPAC
+VARS_EXCLUDES+=M_ADSUPPORT
+VARS_EXCLUDES+=M_ADCORE
+
diff --git a/configure/modules/CONFIG_EXPORT b/configure/modules/CONFIG_EXPORT
new file mode 100644
index 0000000000000000000000000000000000000000..1cf395539d28483bded49f14778ecba6f8044896
--- /dev/null
+++ b/configure/modules/CONFIG_EXPORT
@@ -0,0 +1,26 @@
+# Variables should be transferred to module_name.makefile
+
+EPICS_HOST_ARCH:=$(shell $(EPICS_BASE)/startup/EpicsHostArch.pl)
+MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi
+
+EXPORT_VARS+=EPICS_HOST_ARCH
+EXPORT_VARS+=EPICS_BASE
+EXPORT_VARS+=MSI
+EXPORT_VARS+=E3_REQUIRE_TOOLS
+EXPORT_VARS+=E3_MODULE_VERSION
+EXPORT_VARS+=E3_SITEMODS_PATH
+EXPORT_VARS+=E3_SITEAPPS_PATH
+EXPORT_VARS+=E3_SITELIBS_PATH
+EXPORT_VARS+=E3_SEQUENCER_NAME
+EXPORT_VARS+=E3_SEQUENCER_VERSION
+
+
+EXPORT_VARS+=QUIET
+EXPORT_VARS+=$(filter %_DEP_VERSION,$(.VARIABLES))
+EXPORT_VARS+=$(filter WITH_%,$(.VARIABLES))
+EXPORT_VARS+=$(filter SUDO%,$(.VARIABLES))
+
+export_version=$(eval export $1)
+$(eval $(foreach v,$(EXPORT_VARS),$(call export_version,$v)))
+
+VARS_EXCLUDES+=export_version
diff --git a/configure/modules/CONFIG_SUDO b/configure/modules/CONFIG_SUDO
new file mode 100644
index 0000000000000000000000000000000000000000..e72dc9dc8c7c9c4a23495f9bf7e118fceb74ea60
--- /dev/null
+++ b/configure/modules/CONFIG_SUDO
@@ -0,0 +1,24 @@
+# IF EPICS_BASE is not WRITABLE, SUDO and SUDOBASH should be used 
+# SUDO_INFO 1 : SUDO is needed (NOT writable)
+# SUDO_INFO 0 : SUDO is not needed
+SUDO_INFO := $(shell test -w $(EPICS_BASE) 1>&2 2> /dev/null; echo $$?)
+
+ifeq "$(SUDO_INFO)" "1"
+SUDO := sudo
+SUDOBASH = $(SUDO) -E
+SUDOBASH += bash -c
+else
+SUDO :=
+SUDOBASH = bash -c
+endif    
+
+
+# Valid for only Development Mode, because we clone/remove them
+# See RULES_DEV
+# E3_MODULE_SRC_PATH_INFO 1 : the directory is not there
+# E3_MODULE_SRC_PATH_INFO 0 : the directory is there
+E3_MODULE_SRC_PATH_INFO := $(shell test -d $(E3_MODULE_SRC_PATH) 1>&2 2> /dev/null; echo $$?)
+
+ifeq "$(E3_MODULE_SRC_PATH_INFO)" "1"
+INIT_E3_MODULE_SRC = 1
+endif
diff --git a/configure/modules/DEFINES_FT b/configure/modules/DEFINES_FT
new file mode 100644
index 0000000000000000000000000000000000000000..c2d5ce3561d3790608144a9a89d8284207347de0
--- /dev/null
+++ b/configure/modules/DEFINES_FT
@@ -0,0 +1,49 @@
+# Keep always the module up-to-date
+define git_update =
+git submodule deinit -f $@/
+sed -i '/submodule/,24465d'  $(TOP)/.git/config
+rm -rf $(TOP)/.git/modules/$@
+git submodule init $@/
+git submodule update --init --recursive $@/.
+git submodule update --remote --merge $@/
+endef
+
+define git_module_init_update =
+git submodule update --init --recursive $@/.
+git submodule update --remote --merge $@/
+endef
+
+define patch_site
+for i in $(wildcard $(TOP)/patch/Site/$(E3_MODULE_VERSION)-*.p0.patch); do\
+	printf "\nPatching %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \
+	patch -d $(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 < $$i;\
+done
+endef
+
+
+define patch_revert_site
+for i in $(wildcard $(TOP)/patch/Site/$(E3_MODULE_VERSION)-*.p0.patch); do\
+	printf "\nPatching %s with the file : %s\n" "$(E3_MODULE_SRC_PATH)" "$$i"; \
+	patch -R -d $(E3_MODULE_SRC_PATH) --ignore-whitespace -p0 < $$i;\
+done
+
+endef
+
+
+ifndef VERBOSE
+  QUIET := @
+endif
+
+ifdef DEBUG_SHELL
+  SHELL = /bin/sh -x
+endif
+
+
+### Exclude the following variables to display 
+VARS_EXCLUDES+=git_update
+VARS_EXCLUDES+=git_module_init_update
+VARS_EXCLUDES+=patch_site
+VARS_EXCLUDES+=patch_revert_site
+VARS_EXCLUDES+=QUIET
+VARS_EXCLUDES+=SHELL
+
diff --git a/configure/modules/RULES b/configure/modules/RULES
new file mode 100644
index 0000000000000000000000000000000000000000..05831284b4f35d05d3fb66a05fae251ef21f3682
--- /dev/null
+++ b/configure/modules/RULES
@@ -0,0 +1,14 @@
+# -*- mode: Makefile;-*-
+
+include $(REQUIRE_CONFIG)/DEFINES_FT
+include $(REQUIRE_CONFIG)/RULES_PATCH
+include $(REQUIRE_CONFIG)/RULES_E3_SITELIBS
+#include $(REQUIRE_CONFIG)/RULES_EPICS
+include $(REQUIRE_CONFIG)/RULES_VARS
+
+
+ifneq (,$(findstring dev,$(MAKECMDGOALS)))
+-include $(REQUIRE_CONFIG)/RULES_DEV
+endif
+
+
diff --git a/configure/modules/RULES_DEV b/configure/modules/RULES_DEV
new file mode 100644
index 0000000000000000000000000000000000000000..3190e2565ea148f38ad2bcde9ab00d8aed0dd647
--- /dev/null
+++ b/configure/modules/RULES_DEV
@@ -0,0 +1,51 @@
+# -*- mode: Makefile;-*-
+
+.PHONY: devvars devenv devinit devbuild devclean devinstall devrebuild devuninstall devdistclean devepics devepics-clean devpatch devpatchrevert devexistent
+
+devvars: vars
+
+devenv: devvars
+
+devinit: git-submodule-sync
+	git clone $(E3_MODULE_DEV_GITURL) $(E3_MODULE_SRC_PATH)
+	cd $(E3_MODULE_SRC_PATH) && git checkout $(EPICS_MODULE_TAG)
+
+
+ifeq "$(INIT_E3_MODULE_SRC)" "1"
+
+devbuild: nonexists
+devclean: nonexists
+devinstall: nonexists
+devrebuild: nonexists
+devuninstall: nonexists
+devdistclean: nonexists
+devepics: nonexists
+devepics-clean: nonexists
+devpatch: nonexists
+devpatchrevert: nonexists
+devexistent: nonexists
+nonexists:
+	$(QUIET)echo ""
+	$(QUIET)echo "------------------------------------------------------------"
+	$(QUIET)echo "          Could not find $(E3_MODULE_SRC_PATH) "
+	$(QUIET)echo "          Please make devinit first !          "
+	$(QUIET)echo "------------------------------------------------------------"
+	$(QUIET)echo ""
+else
+
+devbuild: build
+devclean: clean
+devinstall: install
+devrebuild: rebuild
+devuninstall: uninstall
+devdistclean: clean
+	$(QUIET)echo "Removing $(E3_MODULE_SRC_PATH) ......... "
+	rm -rf $(E3_MODULE_SRC_PATH)
+devepics: epics
+devepics-clean: epics-clean
+devpatch: patch
+devpatchrevert: patchrevert
+devexistent: existent
+endif
+
+
diff --git a/configure/modules/RULES_E3_SITELIBS b/configure/modules/RULES_E3_SITELIBS
new file mode 100644
index 0000000000000000000000000000000000000000..a2dc747a8794230b41d46d01984179da03012e37
--- /dev/null
+++ b/configure/modules/RULES_E3_SITELIBS
@@ -0,0 +1,20 @@
+
+# Create symbolic links in siteLibs
+
+.PHONY: install_links $(INSTALLED_EPICS_BASE_ARCHS)
+
+# GNU find 
+install_links: $(INSTALLED_EPICS_BASE_ARCHS)
+	$(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_INC) $(E3_MODULES_INSTALL_LOCATION_INC_LINK)
+	$(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_DB)  $(E3_MODULES_INSTALL_LOCATION_DB_LINK)
+	$(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_BIN) $(E3_MODULES_INSTALL_LOCATION_BIN_LINK)
+	$(SUDO) ln -snf $(E3_MODULES_INSTALL_LOCATION_LIB) $(E3_MODULES_INSTALL_LOCATION_LIB_LINK)
+	$(SUDO) ln -sf  $(E3_MODULES_INSTALL_LOCATION_DBD) $(E3_MODULES_INSTALL_LOCATION_DBD_LINK)
+	$(SUDO) find $(E3_SITELIBS_PATH) -xtype l -delete 
+
+
+$(INSTALLED_EPICS_BASE_ARCHS):
+	$(SUDO) mkdir -p $(E3_SITELIBS_PATH)/$@
+	$(SUDO) ln -sf $(E3_MODULES_INSTALL_LOCATION)/lib/$@/$(E3_MODULES_LIBNAME) $(E3_SITELIBS_PATH)/$@/$(E3_MODULES_LIBLINKNAME)
+
+
diff --git a/configure/modules/RULES_EPICS b/configure/modules/RULES_EPICS
new file mode 100644
index 0000000000000000000000000000000000000000..5381d0d650c8d8fd897ca53d17a719c4242f4007
--- /dev/null
+++ b/configure/modules/RULES_EPICS
@@ -0,0 +1,15 @@
+# One should define the any dependency modules and EPICS base path
+# in the following directory
+
+.PHONY: epics epics-clean
+
+epics:
+	$(QUIET)echo "DEVLIB2=$(M_DEVLIB2)"            > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE.local
+	$(QUIET)echo "EPICS_BASE=$(EPICS_BASE)"       >> $(TOP)/$(E3_MODULE_SRC_PATH)/configure/RELEASE.local
+	$(QUIET)echo "INSTALL_LOCATION=$(M_MRFIOC2)"   > $(TOP)/$(E3_MODULE_SRC_PATH)/configure/CONFIG_SITE.local
+	$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH)"
+
+epics-clean:
+	$(SUDOBASH) "$(MAKE) -C $(E3_MODULE_SRC_PATH) clean"
+
+
diff --git a/configure/modules/RULES_KMOD b/configure/modules/RULES_KMOD
new file mode 100644
index 0000000000000000000000000000000000000000..0314394fcef24790ca0d9b75a048cb74b624ad18
--- /dev/null
+++ b/configure/modules/RULES_KMOD
@@ -0,0 +1,21 @@
+
+KMOD_NAME := mrf
+
+modules:
+	$(MAKE) -C $(E3_KMOD_SRC_PATH) $@
+
+
+# Always SUDO is needed
+modules_install:
+	sudo -E bash -c "$(MAKE) -C $(E3_KMOD_SRC_PATH) $@"
+
+modules_clean: 
+	$(MAKE) -C $(E3_KMOD_SRC_PATH) clean
+
+modules_uninstall:
+	sudo rm -f /lib/modules/$(shell uname -r)/extra/$(KMOD_NAME).ko
+	
+
+.PHONY: modules modules_install modules_uninstall modules_clean 
+
+
diff --git a/configure/modules/RULES_PATCH b/configure/modules/RULES_PATCH
new file mode 100644
index 0000000000000000000000000000000000000000..55d70ab0275f64c6082c02df40b7b7942617c020
--- /dev/null
+++ b/configure/modules/RULES_PATCH
@@ -0,0 +1,12 @@
+
+.PHONY: patch patchrevert
+
+
+## Apply Patch Files 
+patch:
+	$(QUIET) $(call patch_site)
+
+## Revert Patch Files 
+patchrevert:
+	$(QUIET) $(call patch_revert_site)
+
diff --git a/configure/modules/RULES_VARS b/configure/modules/RULES_VARS
new file mode 100644
index 0000000000000000000000000000000000000000..0447f76a5731aca3b59fb756097f45dc26305bef
--- /dev/null
+++ b/configure/modules/RULES_VARS
@@ -0,0 +1,22 @@
+
+E3_MODULES_VARIABLES:=$(sort $(filter-out $(VARS_EXCLUDES) VARS_EXCLUDES,$(.VARIABLES)))
+
+.PHONY : env vars header
+
+
+## Print interesting VARIABLES
+env: vars
+
+vars: header
+	$(foreach v, $(E3_MODULES_VARIABLES), $(info $(v) = $($(v)))) @#noop
+
+header:
+	$(QUIET)echo ""
+	$(QUIET)echo "------------------------------------------------------------"
+	$(QUIET)echo ">>>>     Current EPICS and E3 Envrionment Variables     <<<<"
+	$(QUIET)echo "------------------------------------------------------------"
+	$(QUIET)echo ""
+
+
+existent:
+	$(QUIET)tree -L 2 $(E3_MODULES_PATH)/$(E3_MODULE_NAME)
diff --git a/tools/excludeflags.mk b/tools/excludeflags.mk
new file mode 100644
index 0000000000000000000000000000000000000000..d99a547b3bb926763f4f70ffd1ba3a8952fa46ee
--- /dev/null
+++ b/tools/excludeflags.mk
@@ -0,0 +1,83 @@
+
+iocStats_VERSION=
+autosave_VERSION=
+asyn_VERSION=
+busy_VERSION=
+modbus_VERSION=
+ipmiComm_VERSION=
+# Remove sequencer....due to "duplicated" VARIABLES
+#sequencer_VERSION=
+sscan_VERSION=
+
+std_VERSION=
+ip_VERSION=
+calc_VERSION=
+delaygen_VERSION=
+pcre_VERSION=
+stream_VERSION=
+s7plc_VERSION=
+recsync_VERSION=
+MCoreUtils_VERSION=
+
+devlib2_VERSION=
+mrfioc2_VERSION=
+
+exprtk_VERSION=
+motor_VERSION=
+ecmc_VERSION=
+EthercatMC_VERSION=
+ecmctraining_VERSION=
+
+keypress_VERSION=
+sysfs_VERSION=
+symbolname_VERSION=
+memDisplay_VERSION=
+regdev_VERSION=
+i2cDev_VERSION=
+
+tosca_VERSION=
+tsclib_VERSION=
+ifcdaqdrv2_VERSION=
+
+## The main issue is nds3, it is mandatory to disable it
+## 
+nds3_VERSION=
+nds3epics_VERSION=
+ifc14edrv_VERSION=
+ifcfastint_VERSION=
+
+
+nds_VERSION=
+loki_VERSION=
+nds_VERSION=
+sis8300drv_VERSION=
+sis8300_VERSION=
+sis8300llrfdrv_VERSION=
+sis8300llrf_VERSION=
+
+ADSupport_VERSION=
+ADCore_VERSION=
+ADSimDetector_VERSION=
+ADAndor_VERSION=
+ADAndor3_VERSION=
+ADPointGrey_VERSION=
+ADProsilica_VERSION=
+
+amcpico8_VERSION=
+adpico8_VERSION=
+adsis8300_VERSION=
+adsis8300bcm_VERSION=
+adsis8300bpm_VERSION=
+adsis8300fc_VERSION=
+
+pvCommon_VERSION=
+pvData_VERSION=
+pvAccess_VERSION=
+pva2pva_VERSION=
+pvDatabase_VERSION=
+normativeTypes_VERSION=
+pvaClient_VERSION=
+
+
+
+