diff --git a/Podd/Podd_LinkDef.h b/Podd/Podd_LinkDef.h
index ae90010a9758546554362acb8fe485e860f84b79..a3ab2ab39ca339f9e5793aa5892fa1ea71d5e04c 100644
--- a/Podd/Podd_LinkDef.h
+++ b/Podd/Podd_LinkDef.h
@@ -15,10 +15,29 @@
 
 #pragma link C++ nestedclass;
 #pragma link C++ nestedtypedef;
-#pragma link C++ namespace Podd;
 
+#pragma link C++ namespace Podd;
 #pragma link C++ namespace podd2;
 
+#pragma link C++ class podd2::EmptyBase+;
+
+#pragma link C++ class podd2::AnalysisLogging<podd2::EmptyBase>+;
+#pragma link C++ class podd2::CutLogging<podd2::EmptyBase>+;
+#pragma link C++ class podd2::ConfigLogging<podd2::EmptyBase>+;
+#pragma link C++ class podd2::DetectorLogging<podd2::EmptyBase>+;
+#pragma link C++ class podd2::HitLogging<podd2::EmptyBase>+;
+#pragma link C++ class podd2::ParameterLogging<podd2::EmptyBase>+;
+#pragma link C++ class podd2::RunLogging<podd2::EmptyBase>+;
+#pragma link C++ class podd2::SpectrometerLogging<podd2::EmptyBase>+;
+
+#pragma link C++ class podd2::RunLogging<TObject>+;
+
+#pragma link C++ class podd2::ParameterLogging<TNamed>+;
+
+//podd2::ParameterLogging<TNamed>
+//
+// 
+
 #pragma link C++ class THaVar+;
 #pragma link C++ class THaVarList+;
 #pragma link C++ class THaNamedList+;
@@ -34,6 +53,7 @@
 #pragma link C++ class THaCodaRun+;
 #pragma link C++ class THaRunParameters+;
 #pragma link C++ class THaApparatus+;
+#pragma link C++ class podd2::SpectrometerLogging<THaApparatus>+;
 #pragma link C++ class THaSpectrometer+;
 #pragma link C++ class Podd::DecData+;
 #pragma link C++ class BdataLoc+;
@@ -43,6 +63,10 @@
 #pragma link C++ class RoclenLoc+;
 #pragma link C++ class BankData+;
 #pragma link C++ class THaAnalysisObject+;
+//#pragma link C++ class podd2::AnalysisLogging<THaAnalysisObject>+;
+#pragma link C++ class podd2::AnalysisLogging<THaAnalysisObject>+;
+#pragma link C++ class podd2::DetectorLogging<THaAnalysisObject>+;
+
 #pragma link C++ class THaDetectorBase+;
 #pragma link C++ class THaPhysicsModule+;
 #pragma link C++ class THaVertexModule+;
@@ -115,6 +139,19 @@
 #pragma link C++ class Podd::SimDecoder+;
 #pragma link C++ class Podd::CodaRawDecoder+;
 
+#pragma link C++ class podd2::AnalysisLogging<THaPostProcess>+;
+
+#pragma link C++ class podd2::ConfigLogging<TObject>+;
+#pragma link C++ class podd2::ConfigLogging<THaVarList>+;
+#pragma link C++ class podd2::ConfigLogging<THaExtTarCor>+;
+#pragma link C++ class podd2::ConfigLogging<THaBeamDet>+;
+#pragma link C++ class podd2::ConfigLogging<THaPhysicsModule>+;
+#pragma link C++ class podd2::ConfigLogging<THaNonTrackingDetector>+;
+#pragma link C++ class podd2::ConfigLogging<THaEvtTypeHandler>+;
+#pragma link C++ class podd2::ConfigLogging<THaSpectrometer>+;
+#pragma link C++ class podd2::ConfigLogging<THaEvtTypeHandler>+;
+#pragma link C++ class podd2::ConfigLogging<THaHelicityDet>+;
+
 
 #ifdef ONLINE_ET
 #pragma link C++ class THaOnlRun+;
@@ -155,4 +192,6 @@
 #pragma link C++ function THaVar::THaVar( const char*, const char*, std::vector<double>&, const Int_t* );
 #pragma link C++ function THaVar::THaVar( const char*, const char*, std::vector<float>&, const Int_t* );
 
+
+
 #endif
diff --git a/Podd/THaExtTarCor.cxx b/Podd/THaExtTarCor.cxx
index fcadde76f419d9c939b83a4c10f03459538a39e2..8cea78a2810a56db7dbca15e8bdc737d055faa17 100644
--- a/Podd/THaExtTarCor.cxx
+++ b/Podd/THaExtTarCor.cxx
@@ -49,6 +49,7 @@
 #include "VarDef.h"
 
 //_____________________________________________________________________________
+
 THaExtTarCor::THaExtTarCor( const char* name, const char* description,
 			    const char* spectro, const char* vertex ) :
   THaPhysicsModule(name,description), fThetaCorr(0.0), fDeltaCorr(0.0),
diff --git a/Podd/THaExtTarCor.h b/Podd/THaExtTarCor.h
index 6d3bf67168ee1dae1b2f883d2d19a3a21730c057..4f7a2a073d678188d730ad9cde05e5c3b260762c 100644
--- a/Podd/THaExtTarCor.h
+++ b/Podd/THaExtTarCor.h
@@ -16,7 +16,8 @@ class THaVertexModule;
 class THaExtTarCor : public THaPhysicsModule, public THaTrackingModule {
   
 public:
-  THaExtTarCor( const char* name, const char* description,
+
+  THaExtTarCor( const char* name = "derp", const char* description = "" ,
 		const char* spectro="", const char* vertex="" );
   virtual ~THaExtTarCor();
   
diff --git a/Podd/THaRunBase.cxx b/Podd/THaRunBase.cxx
index c6e38fca941759d8dde9b4253b009abdb3ef9f44..54d5cf206759fa3ab721209d29521319b4aae4c9 100644
--- a/Podd/THaRunBase.cxx
+++ b/Podd/THaRunBase.cxx
@@ -26,7 +26,7 @@ static const char* DEFRUNPARAM = "THaRunParameters";
 
 //_____________________________________________________________________________
 THaRunBase::THaRunBase( const char* description ) :
-  podd2::RunLogging<TNamed>(NOTINIT, description ),
+  TNamed(NOTINIT, description ), podd2::RunLogging<podd2::EmptyBase>(),
   fNumber(-1), fType(0), fDate(UNDEFDATE,0), fNumAnalyzed(0),
   fDBRead(kFALSE), fIsInit(kFALSE), fOpened(kFALSE), fAssumeDate(kFALSE),
   fDataSet(0), fDataRead(0), fDataRequired(kDate), fParam(0),
@@ -39,7 +39,7 @@ THaRunBase::THaRunBase( const char* description ) :
 
 //_____________________________________________________________________________
 THaRunBase::THaRunBase( const THaRunBase& rhs ) :
-  podd2::RunLogging<TNamed>( rhs ), fNumber(rhs.fNumber), fType(rhs.fType),
+  TNamed( rhs ),podd2::RunLogging<podd2::EmptyBase>(), fNumber(rhs.fNumber), fType(rhs.fType),
   fDate(rhs.fDate), fNumAnalyzed(rhs.fNumAnalyzed), fDBRead(rhs.fDBRead),
   fIsInit(rhs.fIsInit), fOpened(kFALSE), fAssumeDate(rhs.fAssumeDate),
   fDataSet(rhs.fDataSet), fDataRead(rhs.fDataRead),
diff --git a/Podd/THaRunBase.h b/Podd/THaRunBase.h
index 1b8345f0c6611b6a22ec225746eb0e090ca269c7..4d853ddb5bfb033fee4f1a810a7e8351001c8a39 100644
--- a/Podd/THaRunBase.h
+++ b/Podd/THaRunBase.h
@@ -16,7 +16,7 @@ class THaEvData;
 
 #include "podd2/Logger.h"
 
-class THaRunBase : public podd2::RunLogging<TNamed> {
+class THaRunBase : public TNamed, public podd2::RunLogging<podd2::EmptyBase> {
   
 public:
   THaRunBase( const char* description="" );
@@ -36,7 +36,7 @@ public:
 
   // Main functions
   virtual const UInt_t* GetEvBuffer() const = 0;
-  virtual Int_t        Init();
+  virtual Int_t         Init();
   virtual Int_t        Open() = 0;
   virtual Int_t        ReadEvent() = 0;
   virtual Int_t        SkipToEndOfFile(Int_t skip_max = -1){ return 0;}
diff --git a/include/podd2/Logger.h b/include/podd2/Logger.h
index 96fa7ec567b8cbbd927b9290b111a254605eeec1..0750e6b9b3d0e759baffe9467b8936ea1946efb6 100644
--- a/include/podd2/Logger.h
+++ b/include/podd2/Logger.h
@@ -1,6 +1,8 @@
 #ifndef podd2_Logger_hh
 #define podd2_Logger_hh
 
+#include "TObject.h"
+
 #include "spdlog/spdlog.h"
 #include "spdlog/sinks/stdout_color_sinks.h" //support for stdout logging
 #include "spdlog/sinks/basic_file_sink.h" // support for basic file logging
@@ -11,7 +13,10 @@ namespace podd2 {
     std::shared_ptr<spdlog::logger> make_logger(std::string name, std::string file);
   }
 
-  struct EmptyBase {};
+  struct EmptyBase {
+    virtual ~EmptyBase(){}
+    ClassDef(EmptyBase,1)
+  };
 
   template <typename Base>
   class RunLogging : public Base {
@@ -27,6 +32,8 @@ namespace podd2 {
       }
       //_logger->set_pattern("[%t] [%n] %^[%l]%$ %v");
     }
+    virtual ~RunLogging(){}
+    ClassDef(RunLogging,1)
   };
 
   template <typename Base>
@@ -40,27 +47,10 @@ namespace podd2 {
       _logger = spdlog::get("config");
       if(!_logger) {
         _logger = log::make_logger("config","logs/config.txt");
-        //std::vector<spdlog::sink_ptr> sinks;
-        //sinks.push_back(std::make_shared<spdlog::sinks::stdout_color_sink_mt>());
-        ////auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
-        //sinks[0]->set_level(spdlog::level::info);
-        ////console_sink->set_pattern("[multi_sink_example] [%^%l%$] %v");
-        //sinks[0]->set_pattern("[%t] [%n] %^[%l]%$ %v");
-
-        //sinks.push_back(
-        //    std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/multisink.txt", true));
-        ////auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/multisink.txt", true);
-        //sinks[1]->set_level(spdlog::level::trace);
-
-        //_logger = std::make_shared<spdlog::logger>("config", std::begin(sinks), std::end(sinks));
-        //_logger->set_level(spdlog::level::debug);
-        //_logger->set_pattern("[%t] [%n] %^[%l]%$ %v");
-        //_logger->warn("this should appear in both console and file");
-        //_logger->info("this message should not appear in the console, only in the file");
-        ////_logger = spdlog::stdout_color_mt("config");
-        //spdlog::register_logger(_logger);
       }
     }
+    virtual ~ConfigLogging(){}
+    ClassDef(ConfigLogging,1)
   };
 
   template <typename Base>
@@ -77,6 +67,8 @@ namespace podd2 {
       }
       //_param_logger->set_pattern("[%t] [%n] %^[%l]%$ %v");
     }
+    virtual ~ParameterLogging(){}
+    ClassDef(ParameterLogging,1)
   };
 
   template <typename Base>
@@ -93,6 +85,8 @@ namespace podd2 {
       }
       //_ana_logger->set_pattern("[%t] [%n] %^[%l]%$ %v");
     }
+    virtual ~AnalysisLogging(){}
+    ClassDef(AnalysisLogging,1)
   };
 
   template <typename Base>
@@ -109,6 +103,8 @@ namespace podd2 {
       }
       //_hit_logger->set_pattern("[%t] [%n] %^[%l]%$ %v");
     }
+    virtual ~HitLogging(){}
+    ClassDef(HitLogging,1)
   };
 
   template <typename Base>
@@ -125,6 +121,8 @@ namespace podd2 {
       }
       //_cut_logger->set_pattern("[%t] [%n] %^[%l]%$ %v");
     }
+    virtual ~CutLogging(){}
+    ClassDef(CutLogging,1)
   };
 
 
@@ -142,6 +140,8 @@ namespace podd2 {
       }
       //_det_logger->set_pattern("[%t] [%n] %^[%l]%$ %v");
     }
+    virtual ~DetectorLogging(){}
+    ClassDef(DetectorLogging,1)
   };
 
   template <typename Base>
@@ -158,6 +158,8 @@ namespace podd2 {
       }
       //_spec_logger->set_pattern("[%t] [%n] %^[%l]%$ %v");
     }
+    virtual ~SpectrometerLogging(){}
+    ClassDef(SpectrometerLogging,1)
   };