diff --git a/.gitmodules b/.gitmodules
index d33a28e104b27f174a4e2414b1ee7f2651d98bf5..6031cf04c26e976621e7c5e8f41d28fcda17975e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,3 +2,7 @@
 	path = require
 	url = https://github.com/paulscherrerinstitute/require
 	ignore = all
+[submodule "e3-env"]
+	path = e3-env
+	url = https://github.com/icshwi/e3-env
+	ignore = all	
diff --git a/Makefile b/Makefile
index 4b8d6b1178313ea9d8d3ffe7d023ec22a8edd080..91f8e99d1fed46b3a534fcd17f1a3039bf67d8ee 100644
--- a/Makefile
+++ b/Makefile
@@ -16,18 +16,37 @@
 #
 # Author  : Jeong Han Lee
 # email   : han.lee@esss.se
-# Date    : Tuesday, September 26 17:17:47 CEST 2017
+# Date    : Tuesday, October  3 14:57:53 CEST 2017
 # version : 0.0.1
 #
 
 
 TOP = $(CURDIR)
 
-
 include $(TOP)/configure/CONFIG
 
+E3_ENV_SRC=$(TOP)/e3-env/e3-env
+
+ifneq ($(wildcard $(E3_ENV_SRC)),)
+include $(E3_ENV_SRC)
+endif
+
+
 M_DIRS:=$(sort $(dir $(wildcard $(TOP)/*/.)))
 
+
+M_OPTIONS := -C $(EPICS_MODULE_SRC_PATH)
+M_OPTIONS += -f $(ESS_MODULE_MAKEFILE)
+M_OPTIONS += LIBVERSION="$(REQUIRE_VERSION)"
+M_OPTIONS += PROJECT="$(EPICS_MODULE_NAME)"
+M_OPTIONS += EPICS_MODULES="$(EPICS_MODULES)"
+M_OPTIONS += EPICS_LOCATION="$(EPICS_LOCATION)"
+M_OPTIONS += DEFAULT_EPICS_VERSIONS="$(DEFAULT_EPICS_VERSIONS)"
+
+unexport BUILDCLASSES
+
+
+
 # help is defined in 
 # https://gist.github.com/rcmachado/af3db315e31383502660
 help:
@@ -49,28 +68,37 @@ help:
 default: help
 
 #
-## Install  "Require" EPICS Module in order to use it
+## Install "Require" Module in order to use it
 install:
-	sudo -E bash -c 'make -C $(EPICS_MODULE_SRC_PATH) -f $(ESS_MODULE_MAKEFILE) LIBVERSION=$(LIBVERSION) PROJECT=$(EPICS_MODULE_NAME) install'
+	sudo -E bash -c 'make $(M_OPTIONS) install'
+	@sudo install -d -m 755  $(REQUIRE_TOOLS)
+	@sudo install -m 644 $(EPICS_MODULE_SRC_PATH)/App/tools/driver.makefile $(REQUIRE_TOOLS)/
+	@sudo install -m 755 $(EPICS_MODULE_SRC_PATH)/App/tools/*.tcl           $(REQUIRE_TOOLS)/
+	@sudo -E bash -c 'm4 -D_DEFAULT_EPICS_VERSIONS="$(DEFAULT_EPICS_VERSIONS)" -D_EPICS_MODULES="$(EPICS_MODULES)" -D_EPICS_LOCATION="$(EPICS_LOCATION)"  $(TOP)/configure/driver_makefile_conf.m4  > $(REQUIRE_TOOLS)/conf'
+	@sudo install -d -m 755 $(REQUIRE_BIN)
+	@sudo install -m 755 $(EPICS_MODULE_SRC_PATH)/iocsh $(REQUIRE_BIN)/
 
+#
+## Uninstall "Require" Module in order not to use it
+uninstall:
+	sudo -E bash -c 'make $(M_OPTIONS) uninstall'
 
 
-## Build     EPICS Module in order to use it with EEE
+## Build the EPICS Module
 build: conf
-	make -C $(EPICS_MODULE_SRC_PATH) -f $(ESS_MODULE_MAKEFILE) LIBVERSION=$(LIBVERSION) PROJECT=$(EPICS_MODULE_NAME)
+	make $(M_OPTIONS)
 
-## Clean     EPICS Module in terms of EEE Makefile (module.Makefile)
+## Clean the EPICS Module
 clean:
-	make -C $(EPICS_MODULE_SRC_PATH) -f $(ESS_MODULE_MAKEFILE) LIBVERSION=$(LIBVERSION) PROJECT=$(EPICS_MODULE_NAME) clean
+	make $(M_OPTIONS) clean
 
 
-## Distclean EPICS Module in terms of EEE Makefile (module.Makefile)
-distclean:
-	make -C $(EPICS_MODULE_SRC_PATH) -f $(ESS_MODULE_MAKEFILE) LIBVERSION=$(LIBVERSION) PROJECT=$(EPICS_MODULE_NAME) distclean
+## Initialize all environments
+init: e3-env mo-init
 
 
-## Get      EPICS Module, and change its $(EPICS_MODULE_TAG)
-init:
+## Get EPICS Module, and change its $(EPICS_MODULE_TAG)
+mo-init: 
 	@git submodule deinit -f $(EPICS_MODULE_NAME)/
 	git submodule deinit -f $(EPICS_MODULE_NAME)/	
 	git submodule init $(EPICS_MODULE_NAME)/
@@ -78,10 +106,9 @@ init:
 	cd $(EPICS_MODULE_NAME) && git checkout tags/$(EPICS_MODULE_TAG)
 
 
-## Print ENV variables
+## Print EPICS and ESS EPICS Environment variables
 env:
 	@echo ""
-	@echo "EPICS_BASE             : "$(EPICS_BASE)
 
 	@echo "EPICS_MODULE_NAME      : "$(EPICS_MODULE_NAME)
 	@echo "EPICS_MODULE_TAG       : "$(EPICS_MODULE_TAG)
@@ -91,10 +118,15 @@ env:
 	@echo "LIBVERSION             : "$(LIBVERSION)
 
 	@echo ""
-	@echo "EPICS_BASES_PATH       : "$(EPICS_BASES_PATH)
-	@echo "EPICS_MODULES_PATH     : "$(EPICS_MODULES_PATH)
-	@echo "EPICS_HOST_ARCH        : "$(EPICS_HOST_ARCH)
-	@echo "EPICS_ENV_PATH         : "$(EPICS_ENV_PATH)
+	@echo ">>>> ESS EPICS Environment <<<< "
+	@echo ""
+	@echo "EPICS_LOCATION         : "$(EPICS_LOCATION)
+	@echo "EPICS_MODULES          : "$(EPICS_MODULES)
+	@echo "DEFAULT_EPICS_VERSIONS : "$(DEFAULT_EPICS_VERSIONS)
+	@echo "REQUIRE_VERSION        : "$(REQUIRE_VERSION)
+	@echo "REQUIRE_PATH           : "$(REQUIRE_PATH)
+	@echo "REQUIRE_TOOLS          : "$(REQUIRE_TOOLS)
+	@echo "REQUIRE_BIN            : "$(REQUIRE_BIN)
 	@echo ""
 
 
@@ -103,11 +135,16 @@ dirs:
 	@echo $(M_DIRS) || true
 
 conf:
+	@install -m 644 $(TOP)/$(ESS_MODULE_MAKEFILE)  $(EPICS_MODULE_SRC_PATH)/
+
+#
+#
+e3-env:
+	@git submodule deinit -f $(E3_ENV)/
+	git submodule deinit -f $(E3_ENV)/	
+	git submodule init $(E3_ENV)/
+	git submodule update --init --remote --recursive $(E3_ENV)/.
+#	cd $(E3_ENV) && git checkout tags/$(E3_ENV_TAG)
 
-	@install -m 664 $(TOP)/configure/require_config $(EPICS_MODULE_SRC_PATH)/App/tools/config
-	@install -m 644 $(TOP)/$(ESS_MODULE_MAKEFILE)   $(EPICS_MODULE_SRC_PATH)/
-#	@sudo install -d -m 755 /ioc/tools/
-#	@sudo install -m 755 $(TOP)/App/tools/* /ioc/tools/*
-#	@sudo install -m 664 $(TOP)/configure/require_config  /ioc/tools/config
 
-.PHONY: install build clean distclean init env dirs conf
+.PHONY: install build clean distclean mo-init e3-env init env dirs conf
diff --git a/README.md b/README.md
index 0cee0d117908d026e71d2b88b5f79407965fbd4d..2c3c56d738a7c3f5791085223ab7a66177ba6952 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,25 @@
-# e3-require
\ No newline at end of file
+# e3-require
+
+This is the pilot project in order to build the reliable and easy-to-understand approach for ESS EPICS environment. The golden rule is to keep any other EPICS base, and modules sources intact. Still, ESS EPICS environment needs more resource to maintain the additional work load, however, we don't need to maintain different and synced (not well maintain) almost same repositories for entire EPICS community resouces.
+
+
+## Dependency
+
+* e3-base
+* e3-env
+
+## Setup
+
+```
+make init
+make build
+make install
+```
+
+## Execute iocsh
+
+``
+cd e3-env
+. setE3env.bash
+iocsh
+```
diff --git a/configure/CONFIG b/configure/CONFIG
index 32b1e32217e5c361c39c19bf808995b331e6c36e..c0502e60c60d6292abdfa094bdfcb001220e075b 100644
--- a/configure/CONFIG
+++ b/configure/CONFIG
@@ -39,7 +39,7 @@ export PROJECT:=$(EPICS_MODULE_NAME)
 # as the epics module version, and it will be used in the iocsh script 
 # with the require commands, for example
 # require $(PROJECT),$(LIBVERSION)
-export LIBVERSION:=2.5.3
+# export LIBVERSION:=2.5.3
 
 
 # It may be the sole reason why we have so many troubles related with
@@ -49,3 +49,5 @@ export LIBVERSION:=2.5.3
 
 
 
+E3_ENV:=e3-env
+E3_ENV_TAG:=master
diff --git a/configure/driver_makefile_conf.m4 b/configure/driver_makefile_conf.m4
new file mode 100644
index 0000000000000000000000000000000000000000..6f22c64884910caeb0993293229d86dfa2e593d3
--- /dev/null
+++ b/configure/driver_makefile_conf.m4
@@ -0,0 +1,45 @@
+dnl   Global ESS EPICS configration for driver.makefile
+dnl   per $(REQUIRE)/$(REQIRE_VERSION)
+dnl   
+dnl   It is installed via make install
+dnl
+dnl   conf file is loaded in driver.makefile
+dnl   to override the default environment in driver.makefile 
+
+dnl $  m4  config_site.m4
+dnl    CROSS_COMPILER_TARGET_ARCHS = 
+
+dnl    CROSS_COMPILER_HOST_ARCHS = 
+dnl    CROSS_COMPILER_RUNTEST_ARCHS = 
+dnl    SHARED_LIBRARIES = YES
+dnl    STATIC_BUILD = NO
+dnl    HOST_OPT = YES
+dnl    CROSS_OPT = YES
+dnl    HOST_WARN = YES
+dnl    CROSS_WARN = YES
+dnl    #INSTALL_LOCATIOIN = 
+dnl    USE_POSIX_THREAD_PRIORITY_SCHEDULING = YES
+dnl    EPICS_SITE_VERSION =
+dnl    GCC_PIPE = NO
+dnl    LINKER_USE_RPATH = YES
+
+dnl   Set the cross compiler target archs
+dnl   $ m4  -D_CROSS_COMPILER_TARGET_ARCHS=linux-ppc64e6500 config_site.m4
+dnl     CROSS_COMPILER_TARGET_ARCHS = linux-ppc64e6500
+dnl
+dnl
+ifdef(`_DEFAULT_EPICS_VERSIONS',
+	`DEFAULT_EPICS_VERSIONS = _DEFAULT_EPICS_VERSIONS',
+	`DEFAULT_EPICS_VERSIONS = ')
+	
+ifdef(`_BUILDCLASSES',
+	`BUILDCLASSES = _BUILDCLASSES',
+	`BUILDCLASSES = ')
+	
+ifdef(`_EPICS_MODULES',
+	`EPICS_MODULES = _EPICS_MODULES',
+	`EPICS_MODULES = ')
+
+ifdef(`_EPICS_LOCATION',
+	`EPICS_LOCATION = _EPICS_LOCATION',
+	`EPICS_LOCATION =')
diff --git a/configure/require_config b/configure/require_config
deleted file mode 100644
index 45f74d228e7be374ba915e75a7f9ce102c941c4d..0000000000000000000000000000000000000000
--- a/configure/require_config
+++ /dev/null
@@ -1,11 +0,0 @@
-# PROJECT and LIBVERSION should be defined in the makefile arguments
-# * this conf file should be in require/App/tools in order to override the default envs for driver.makefile
-# * selected EPICS VERSIONS should be defined
-# * each BASE should has startup dir and  EpicsHostArch.pl
-# * EPICS_MODULES is the target location of the epics modules (dynamically updated)
-# * EPICS_LOCATION is the target location of the epics bases  (dynamically updated)
-DEFAULT_EPICS_VERSIONS = 3.15.4 3.15.5
-BUILDCLASSES = 
-EPICS_MODULES = /eee/modules
-MODULE_LOCATION = ${EPICS_MODULES}/$(or ${PRJ},$(error PRJ not defined))/$(or ${LIBVERSION},$(error LIBVERSION not defined))
-EPICS_LOCATION = /eee/bases
diff --git a/e3-env b/e3-env
new file mode 160000
index 0000000000000000000000000000000000000000..eafc0d8b83e82b2be6d9531482e72a174ee947ac
--- /dev/null
+++ b/e3-env
@@ -0,0 +1 @@
+Subproject commit eafc0d8b83e82b2be6d9531482e72a174ee947ac
diff --git a/require.Makefile b/require.Makefile
index 097cc1201f79411d620ba4113e749253a637ad83..c5ef927efc9e749ffbd8c35e961bb746247fb8e2 100644
--- a/require.Makefile
+++ b/require.Makefile
@@ -1,4 +1,8 @@
 
+# This is the one time path in order to compile and install
+# require within EPICS Environment. After the installation
+# include $(REQUIRE_TOOLS)/driver.makefile should be used
+#
 where_am_I := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
 
 include ${where_am_I}/App/tools/driver.makefile