diff --git a/Makefile.in b/Makefile.in
index 410196c24dd040d33afa1cdfd461963432319350..b1522d6c42b6f284600e25c6fc738cbe01d0487f 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -35,9 +35,8 @@ DEVFLAGS=@DEVFLAGS@
 	$(eval epics_bld_dir := $(model_bld_dir)/epics/)
 	
 
-	@mkdir -p src/epics/util src/fe src/epics/fmseq src/include
+	@mkdir -p src/epics/util src/fe src/epics/fmseq src/fe/$@/include
 	@ln -fs $(srcdir)/src/epics/util/lib src/epics/util > /dev/null 2>&1 || /bin/true
-	@ln -fs $(srcdir)/src/include/drv src/include > /dev/null 2>&1 || /bin/true
 	@ln -fs $(srcdir)/src/epics/simLink src/epics > /dev/null 2>&1 || /bin/true
 	@ln -fs $(srcdir)/src/epics/util/Makefile.kernel src/epics/util > /dev/null 2>&1 || /bin/true
 	@ln -fs $(srcdir)/src/epics/util/Userspace_CMakeLists.cmake src/epics/util > /dev/null 2>&1
@@ -80,6 +79,8 @@ endif
 	@#Save build config and source files for traceability
 	@/bin/mkdir -p $(epics_bld_dir)/target/src
 	@echo $(srcdir) > $(epics_bld_dir)/target/src/rcg_location.txt
+	@(cd $(srcdir) && git rev-parse HEAD) > $(epics_bld_dir)/target/src/rcg_git_hash.txt
+	@(cd $(srcdir) && git --no-pager diff) > $(epics_bld_dir)/target/src/rcg_git_diff.txt
 	@echo Build date `date` > $(epics_bld_dir)/target/src/build.txt
 	@echo Compiled on `hostname` >> $(epics_bld_dir)/target/src/build.txt
 	@echo RCG_LIB_PATH=${RCG_LIB_PATH} >> $(epics_bld_dir)/target/src/build.txt
diff --git a/config/Makefile.linux b/config/Makefile.linux
index c59cbb423d15d3f71d429359a2be48422dd579da..77c726cd3d1163348e8ad613ff9bff425b677379 100644
--- a/config/Makefile.linux
+++ b/config/Makefile.linux
@@ -1,5 +1,6 @@
 # Linux Epics IOC system build rules
 
+MODEL_NAME := $(subst epics,,$(TARGET))
 
 EPICS_VERSION := $(shell pkg-config --modversion epics-base)
 EPICS_BIN_PATH := $(shell pkg-config --variable=bindir epics-base)
@@ -19,7 +20,7 @@ PREPROCESS = /usr/bin/gcc -x c -E -P
 CFLAGS += $(EXTRA_CFLAGS)
 CFLAGS += $(shell pkg-config --cflags epics-base)
 CFLAGS += -I/usr/lib/rmnet -I/usr/lib/rfm2g
-CFLAGS += -Isrc/include
+CFLAGS += -I$(EPICS_BUILD_DIR)/../include
 CFLAGS += -I$(RCG_SRC_DIR)/src/include -I$(RCG_SRC_DIR)/src/include/drv
 ifeq (,$(findstring tcsepics, $(TARGET)))
 CFLAGS += -DRFM_EPICS -DNO_FM10GEN_C_CODE
@@ -209,7 +210,7 @@ $(EPICS_SRC_DIR)/%.i: $(EPICS_SRC_DIR)/%.st
 $(EPICS_SRC_DIR)/%.st: src/epics/fmseq/% $(FMSEQFILES)
 	(cd src/epics/fmseq; \
 	 cat $(notdir $<) | cpp $(CFLAGS) -  | grep -v ^# | $(if $(FMSEQ), $(FMSEQ), $(RCG_SRC_DIR)/src/epics/util/fmseq.pl) $(notdir $<) &&\
-	 mv $(notdir $<)_proc.h ../../include/ &&\
+	 mv $(notdir $<)_proc.h ../../fe/$(MODEL_NAME)/include/ &&\
 	 mv $(notdir $<).* ../../../$(EPICS_SRC_DIR))
 
 
diff --git a/install b/install
index 0cea539021b6ba34148409723d2cad4dec22796f..99ee576660b9ffa00d26c73379100f67e21d31c0 100755
--- a/install
+++ b/install
@@ -10,7 +10,10 @@ else
     srcdir=$2
 fi
 
-EPICS_TARGET_DIR=src/fe/${system}/epics/target/
+MODEL_BUILD_DIR=src/fe/${system}
+MODEL_INC_DIR=src/fe/${system}/include
+EPICS_BUILD_DIR=${MODEL_BUILD_DIR}/epics/
+EPICS_TARGET_DIR=${EPICS_BUILD_DIR}/target/
 
 if ! test -e ${EPICS_TARGET_DIR}; then
     echo "Please make $system first." >&2
@@ -26,15 +29,13 @@ site=${site^^*}
 ifo=${ifo^^*}
 site_letter=${ifo:0:1}
 upper_system=`echo $system | tr a-z A-Z`
-targetcpu=`grep TARGET_CPU src/include/${system}.h | head -1 | awk '{print $3}'`
+targetcpu=`grep TARGET_CPU ${MODEL_INC_DIR}/${system}.h | head -1 | awk '{print $3}'`
 cur_date=`date +%y%m%d_%H%M%S`
 
 RTCDS=/opt/rtcds/${site,,*}/${ifo,,*}
 TARGET=$RTCDS/target/${system}
 ARCHIVE=$RTCDS/target_archive/${system}/${system}_$cur_date
 
-EPICS_BUILD_DIR="src/fe/${system}/epics/"
-
 echo "Installing system=$system site=$site ifo=$ifo"
 
 mkdir -p $TARGET
@@ -120,7 +121,7 @@ if [ x$gds_node != "x" ]; then
     echo "Installing GDS components..."
 
     datarate=`grep datarate ${EPICS_BUILD_DIR}/src/${system}.par | head -1 | sed 's/[^0-9]*\([0-9]*\)/\1/'`
-    targethost=`grep TARGET_HOST_NAME src/include/${system}.h | head -1 | awk '{print $3}'`
+    targethost=`grep TARGET_HOST_NAME ${MODEL_INC_DIR}/${system}.h | head -1 | awk '{print $3}'`
     if test ${datarate} -lt 16384; then
 	datarate_mult=`expr ${datarate} / 2048`
     else
diff --git a/src/epics/util/feCodeGen.pl b/src/epics/util/feCodeGen.pl
index 99c451f1634f98e6f36e58b4e0f2907032380398..bbd27f73683e2f1ec7e77050b10c96eb1ca80d9c 100755
--- a/src/epics/util/feCodeGen.pl
+++ b/src/epics/util/feCodeGen.pl
@@ -198,7 +198,7 @@ $modelEpicsCodeDir = $modelCodeFilepath . "/epics/";
 $modelCodeKernFilepath = $modelCodeKernDir. $skeleton . "_core.c"; 
 $modelCodeUspFilepath = $modelCodeUspDir . $skeleton . "_core.c";
 
-$modelHeaderFilepath = "../../include/";
+$modelHeaderFilepath = $modelCodeFilepath. "/include/";
 $modelHeaderFilepath .= $skeleton;
 $modelHeaderFilepath .= ".h";
 
diff --git a/src/epics/util/lib/createKernelMakefile.pm b/src/epics/util/lib/createKernelMakefile.pm
index b2898a5c5815ed039caeeb205c1deaa0f77c432f..34bce7f82b52385d51e531e680968fd9cdff303b 100644
--- a/src/epics/util/lib/createKernelMakefile.pm
+++ b/src/epics/util/lib/createKernelMakefile.pm
@@ -252,7 +252,7 @@ if ($::iopModel < 1) {   #************ SETUP FOR USER APP ***************
 
 
 print OUTM "EXTRA_CFLAGS += -DMODULE -DNO_RTL=1\n";
-print OUTM "EXTRA_CFLAGS += -I\$(SUBDIRS)/../../../include -I$::rcg_src_dir/src/include\n";
+print OUTM "EXTRA_CFLAGS += -I\$(SUBDIRS)/../../../fe/" . "\L$::skeleton" . "/include -I$::rcg_src_dir/src/include\n";
 print OUTM "EXTRA_CFLAGS += -ffast-math -m80387 -msse2 -fno-builtin-sincos -mpreferred-stack-boundary=4\n";
 print OUTM "\n";
 close OUTM;
diff --git a/src/epics/util/lib/createUserMakefile.pm b/src/epics/util/lib/createUserMakefile.pm
index 6eee2df35ab89dd6a0223ffe017f768cd771d420..6d89be4e8cb56f4e2924b0d45dc1d471a38565ab 100644
--- a/src/epics/util/lib/createUserMakefile.pm
+++ b/src/epics/util/lib/createUserMakefile.pm
@@ -227,7 +227,7 @@ my ($makefileDir) = @_;
         }
     }
 
-    print OUTM "list(APPEND INC_DIRS \"\${PROJECT_SOURCE_DIR}/../../../include\"  \"$::rcg_src_dir\/src/include\")\n";
+    print OUTM "list(APPEND INC_DIRS \"\${PROJECT_SOURCE_DIR}/../../../fe/" . "\L$::skeleton" ."/include\"  \"$::rcg_src_dir\/src/include\")\n";
 
     if ($::pciNet > 0 && $::virtualiop != 1) {
         print OUTM "list(APPEND LDFLAGS \"-L \${API_LIB_PATH} -lsisci \")\n";