diff --git a/SConscript.py b/SConscript.py
index ab23e32dfe25867872cc34c6d4c42bd213d357bd..c1a0618b3e43fe453ac4b8c49b7e3a3a46b05d7c 100644
--- a/SConscript.py
+++ b/SConscript.py
@@ -10,23 +10,40 @@ Import ('pbaseenv')
 
 roothcdict = pbaseenv.subst('$HC_DIR')+'/HallCDict.C'
 roothcobj = pbaseenv.subst('$HC_SRC')+'/HallCDict.so'
-hcheaders = Split("""
-src/THcInterface.h src/THcParmList.h src/THcAnalyzer.h src/THcHallCSpectrometer.h
-src/THcDetectorMap.h src/THcRawHit.h src/THcHitList.h src/THcSignalHit.h src/THcHodoscope.h
-src/THcScintillatorPlane.h src/THcRawHodoHit.h src/THcHodoHit.h
-src/THcDC.h src/THcDriftChamberPlane.h
-src/THcDriftChamber.h src/THcRawDCHit.h src/THcDCHit.h src/THcDCWire.h src/THcSpacePoint.h
-src/THcDCLookupTTDConv.h src/THcDCTimeToDistConv.h src/THcShower.h src/THcShowerPlane.h
-src/THcShowerArray.h src/THcShowerHit.h
-src/THcRawShowerHit.h src/THcAerogel.h src/THcAerogelHit.h src/THcCherenkov.h src/THcCherenkovHit.h
-src/THcGlobals.h src/THcDCTrack.h src/THcFormula.h
-src/THcRaster.h src/THcRasteredBeam.h src/THcRasterRawHit.h src/THcScalerEvtHandler.h
-src/THcConfigEvtHandler.h src/THcHodoEff.h
-src/THcTrigApp.h src/THcTrigDet.h src/THcTrigRawHit.h
-src/THcRawAdcHit.h src/THcRawTdcHit.h
-src/THcDummySpectrometer.h
-src/HallC_LinkDef.h
-""")
+ 
+hcheadersbase = Glob('src/*.h',exclude=['src/THcGlobals.h','src/HallC_LinkDef.h'])
+
+cmd = "echo '#ifdef __CINT__' > src/HallC_LinkDef.h"
+os.system(cmd)
+cmd = "echo ' ' >> src/HallC_LinkDef.h"
+os.system(cmd)
+cmd = "echo '#pragma link off all globals;' >> src/HallC_LinkDef.h"
+os.system(cmd)
+cmd = "echo '#pragma link off all classes;' >> src/HallC_LinkDef.h"
+os.system(cmd)
+cmd = "echo '#pragma link off all functions;' >> src/HallC_LinkDef.h"
+os.system(cmd)
+cmd = "echo ' ' >> src/HallC_LinkDef.h"
+os.system(cmd)
+cmd = "echo '#pragma link C++ global gHcParms;' >> src/HallC_LinkDef.h"
+os.system(cmd)
+cmd = "echo '#pragma link C++ global gHcDetectorMap;' >> src/HallC_LinkDef.h"
+os.system(cmd)
+cmd = "echo ' ' >> src/HallC_LinkDef.h"
+os.system(cmd)
+
+for hcheaderfile in hcheadersbase:
+    filename = '%s' % hcheaderfile
+    basefilename = filename.rsplit('.',1)
+    newbasefilename = basefilename[0].rsplit('/',1)
+    cmd1 = "echo '#pragma link C++ class %s+;' >> src/HallC_LinkDef.h" % newbasefilename[1]
+    os.system(cmd1)
+
+cmd = "echo '#endif' >> src/HallC_LinkDef.h"
+os.system(cmd)
+
+hcheaders = Glob('src/*.h',exclude=['src/HallC_LinkDef.h'])+Glob('src/HallC_LinkDef.h')
+
 pbaseenv.RootCint(roothcdict,hcheaders)
 pbaseenv.SharedObject(target = roothcobj, source = roothcdict)
 
diff --git a/SConstruct b/SConstruct
index dc2690f95737f9bb33a19617cef8f35b5df89a8e..82066ea3c7ec414505701d3335915273fb9643fe 100644
--- a/SConstruct
+++ b/SConstruct
@@ -33,8 +33,8 @@ baseenv = Environment(ENV = os.environ)
 
 ####### Check SCons version ##################
 print('!!! Building the Hall C analyzer and libraries with SCons requires')
-print('!!! SCons version 2.1.0 or newer.')
-EnsureSConsVersion(2,1,0)
+print('!!! SCons version 2.5.0 or newer.')
+EnsureSConsVersion(2,5,0)
 
 ####### Hall A Build Environment #############
 #
diff --git a/src/HallC_LinkDef.h b/src/HallC_LinkDef.h
index 29977d2bd02d2b35a0f48b223d0c929bd87f6a38..fe76604858c7d7692bb3feed9610978b979090ab 100644
--- a/src/HallC_LinkDef.h
+++ b/src/HallC_LinkDef.h
@@ -1,68 +1,54 @@
 #ifdef __CINT__
-
+ 
 #pragma link off all globals;
 #pragma link off all classes;
 #pragma link off all functions;
-
+ 
 #pragma link C++ global gHcParms;
 #pragma link C++ global gHcDetectorMap;
-
-//#ifdef MACVERS
-//#pragma link C++ global gHaVars;
-//#pragma link C++ global gHaCuts;
-//#pragma link C++ global gHaApps;
-//#pragma link C++ global gHaScalers;
-//#pragma link C++ global gHaPhysics;
-//#pragma link C++ global gHaRun;
-//#pragma link C++ global gHaDB;
-//#pragma link C++ global gHaTextvars;
-//#pragma link C++ global gHaDecoder;
-//#endif
-
-#pragma link C++ class THcInterface+;
-#pragma link C++ class THcParmList+;
+ 
+#pragma link C++ class THcAerogel+;
+#pragma link C++ class THcAerogelHit+;
 #pragma link C++ class THcAnalyzer+;
-#pragma link C++ class THcHallCSpectrometer+;
-#pragma link C++ class THcDetectorMap+;
-#pragma link C++ class THcRawHit+;
-#pragma link C++ class THcHitList+;
-#pragma link C++ class THcSignalHit+;
-#pragma link C++ class THcHodoscope+;
-#pragma link C++ class THcScintillatorPlane+;
-#pragma link C++ class THcRawHodoHit+;
-#pragma link C++ class THcHodoHit+;
+#pragma link C++ class THcCherenkov+;
+#pragma link C++ class THcCherenkovHit+;
+#pragma link C++ class THcConfigEvtHandler+;
 #pragma link C++ class THcDC+;
-#pragma link C++ class THcDriftChamber+;
-#pragma link C++ class THcDriftChamberPlane+;
-#pragma link C++ class THcRawDCHit+;
 #pragma link C++ class THcDCHit+;
-#pragma link C++ class THcDCWire+;
 #pragma link C++ class THcDCLookupTTDConv+;
 #pragma link C++ class THcDCTimeToDistConv+;
-#pragma link C++ class THcSpacePoint+;
 #pragma link C++ class THcDCTrack+;
-#pragma link C++ class THcShower+;
-#pragma link C++ class THcShowerPlane+;
-#pragma link C++ class THcShowerArray+;
-
-#pragma link C++ class THcShowerHit+;
-#pragma link C++ class THcRawShowerHit+;
-#pragma link C++ class THcAerogel+;
-#pragma link C++ class THcAerogelHit+;
-#pragma link C++ class THcCherenkov+;
-#pragma link C++ class THcCherenkovHit+;
+#pragma link C++ class THcDCWire+;
+#pragma link C++ class THcDetectorMap+;
+#pragma link C++ class THcDriftChamber+;
+#pragma link C++ class THcDriftChamberPlane+;
+#pragma link C++ class THcDummySpectrometer+;
 #pragma link C++ class THcFormula+;
+#pragma link C++ class THcHallCSpectrometer+;
+#pragma link C++ class THcHitList+;
+#pragma link C++ class THcHodoEff+;
+#pragma link C++ class THcHodoHit+;
+#pragma link C++ class THcHodoscope+;
+#pragma link C++ class THcInterface+;
+#pragma link C++ class THcParmList+;
 #pragma link C++ class THcRaster+;
-#pragma link C++ class THcRasteredBeam+;
 #pragma link C++ class THcRasterRawHit+;
+#pragma link C++ class THcRasteredBeam+;
+#pragma link C++ class THcRawAdcHit+;
+#pragma link C++ class THcRawDCHit+;
+#pragma link C++ class THcRawHit+;
+#pragma link C++ class THcRawHodoHit+;
+#pragma link C++ class THcRawShowerHit+;
+#pragma link C++ class THcRawTdcHit+;
 #pragma link C++ class THcScalerEvtHandler+;
-#pragma link C++ class THcConfigEvtHandler+;
-#pragma link C++ class THcHodoEff+;
+#pragma link C++ class THcScintillatorPlane+;
+#pragma link C++ class THcShower+;
+#pragma link C++ class THcShowerArray+;
+#pragma link C++ class THcShowerHit+;
+#pragma link C++ class THcShowerPlane+;
+#pragma link C++ class THcSignalHit+;
+#pragma link C++ class THcSpacePoint+;
 #pragma link C++ class THcTrigApp+;
 #pragma link C++ class THcTrigDet+;
 #pragma link C++ class THcTrigRawHit+;
-#pragma link C++ class THcRawAdcHit+;
-#pragma link C++ class THcRawTdcHit+;
-#pragma link C++ class THcDummySpectrometer+;
-
 #endif
diff --git a/src/SConscript.py b/src/SConscript.py
index c9a05dcbc2a3783f51f059c25e71a9bf41a6e5c8..6d14bae26a6e17600889a65dca92cc568b38b51d 100644
--- a/src/SConscript.py
+++ b/src/SConscript.py
@@ -6,32 +6,7 @@ import re
 import SCons.Util
 Import('pbaseenv')
 
-list = Split("""
-THcInterface.cxx THcParmList.cxx THcAnalyzer.cxx
-THcHallCSpectrometer.cxx
-THcDetectorMap.cxx
-THcRawHit.cxx THcHitList.cxx
-THcSignalHit.cxx
-THcHodoscope.cxx THcScintillatorPlane.cxx
-THcRawHodoHit.cxx THcHodoHit.cxx
-THcDC.cxx THcDriftChamberPlane.cxx
-THcDriftChamber.cxx
-THcRawDCHit.cxx THcDCHit.cxx
-THcDCWire.cxx
-THcSpacePoint.cxx THcDCTrack.cxx
-THcDCLookupTTDConv.cxx THcDCTimeToDistConv.cxx
-THcShower.cxx THcShowerPlane.cxx THcShowerArray.cxx
-THcRawShowerHit.cxx THcShowerHit.cxx
-THcAerogel.cxx THcAerogelHit.cxx
-THcCherenkov.cxx THcCherenkovHit.cxx
-THcFormula.cxx
-THcRaster.cxx THcRasteredBeam.cxx THcRasterRawHit.cxx
-THcScalerEvtHandler.cxx THcConfigEvtHandler.cxx
-THcTrigApp.cxx THcTrigDet.cxx THcTrigRawHit.cxx
-THcRawAdcHit.cxx THcRawTdcHit.cxx
-THcDummySpectrometer.cxx
-THcHodoEff.cxx
-""")
+list = Glob('*.cxx', exclude=['main.C'])
 
 pbaseenv.Object('main.C')