diff --git a/include/SANEEventGenerators.hh b/include/SANEEventGenerators.hh
index 9b98009b3f811dfba0e0ef5f7c4b42caa9d6123a..09175d48230b6941dcf595988375edf85a617836 100644
--- a/include/SANEEventGenerators.hh
+++ b/include/SANEEventGenerators.hh
@@ -5,19 +5,18 @@
 #include "BETAG4EventGenerator.hh"
 #include "G4ThreeVector.hh"
 #include "TMath.h"
-#include "InSANEInclusiveDiffXSec.h"
-#include "F1F209eInclusiveDiffXSec.h"
-#include "OARPionDiffXSec.h"
-#include "InSANEXSections.h"
-#include "InSANEPhaseSpace.h"
-#include "WiserXSection.h"
-#include "HallCBeam.h"
-#include "PolarizedDISXSec.h"
-#include "EPCVXSection.h"
-#include "SANETargets.h"
-#include "InSANERadiator.h"
-#include "InSANEFunctionManager.h"
-#include "InSANEElasticRadiativeTail.h"
+//#include "InSANEInclusiveDiffXSec.h"
+//#include "F1F209eInclusiveDiffXSec.h"
+//#include "OARPionDiffXSec.h"
+//#include "InSANEXSections.h"
+//#include "InSANEPhaseSpace.h"
+//#include "WiserXSection.h"
+//#include "HallCBeam.h"
+//#include "PolarizedDISXSec.h"
+//#include "EPCVXSection.h"
+//#include "InSANERadiator.h"
+//#include "InSANEFunctionManager.h"
+//#include "InSANEElasticRadiativeTail.h"
 
 /*! \page EventGeneratorHowTo How to make an event generator
 
@@ -125,33 +124,12 @@ class WiserEventGenerator : public BETAG4EventGenerator   {
  */
 class SANEInclusiveDISEventGenerator : public BETAG4EventGenerator  {
    public :
-      SANEInclusiveDISEventGenerator(){
-         fNH3PackingFraction = 0.6;
-         UVAPolarizedAmmoniaTarget * targ = new UVAPolarizedAmmoniaTarget("UVaTarget","UVa Ammonia target",fNH3PackingFraction);
-         SetTarget(targ);
-      }
-      virtual ~SANEInclusiveDISEventGenerator() { }
-
-
-      virtual void InitializeMaterialXSec(const Int_t i, const Double_t weight, const InSANETargetMaterial * mat, const InSANENucleus * targ){
-         InSANEPhaseSpaceSampler * samp = 0;
-         //F1F209eInclusiveDiffXSec * xsec = new F1F209eInclusiveDiffXSec();
-         InSANEInclusiveDISXSec * xsec = new InSANEInclusiveDISXSec();
-         //xsec->Dump();
-         xsec->SetTargetMaterial(*mat);
-         xsec->SetTargetMaterialIndex(i);
-         xsec->SetBeamEnergy(GetBeamEnergy());
-         xsec->SetTargetNucleus(*targ);
-         xsec->InitializePhaseSpaceVariables();
-         xsec->InitializeFinalStateParticles();
-         samp = new InSANEPhaseSpaceSampler(xsec);
-         samp->SetFoamCells(100);
-         samp->SetWeight(weight);
-         AddSampler(samp);
-      }
-      virtual void Initialize() {
-         InSANETargetEventGenerator::Initialize();
-      }
+      SANEInclusiveDISEventGenerator();
+      virtual ~SANEInclusiveDISEventGenerator() ;
+
+
+      virtual void InitializeMaterialXSec(const Int_t i, const Double_t weight, const InSANETargetMaterial * mat, const InSANENucleus * targ);
+      virtual void Initialize() ;
 
       Double_t fNH3PackingFraction;
 
@@ -181,19 +159,12 @@ class PolarizedInclusiveDISEventGenerator : public BETAG4EventGenerator  {
  */
 class NH3TargetEventGenerator : public BETAG4EventGenerator  {
    public :
-      NH3TargetEventGenerator(){
-         fNH3PackingFraction = 0.6;
-         UVAPolarizedAmmoniaTarget * targ = new UVAPolarizedAmmoniaTarget("UVaTarget","UVa Ammonia target",fNH3PackingFraction);
-         SetTarget(targ);
-      }
-
-      virtual ~NH3TargetEventGenerator() { }
+      NH3TargetEventGenerator();
+      virtual ~NH3TargetEventGenerator() ;
 
       Double_t fNH3PackingFraction;
 
-      virtual void Initialize() {
-         InSANETargetEventGenerator::Initialize();
-      }
+      virtual void Initialize() ;
 
 };
 //______________________________________________________________________________
diff --git a/src/BETAPhysicsList.cc b/src/BETAPhysicsList.cc
index 776f91031e07b2aee757e453466e64f3d2f8938c..391e071a1a9c08f0faf03cecf8dd73fcd199dfb8 100644
--- a/src/BETAPhysicsList.cc
+++ b/src/BETAPhysicsList.cc
@@ -118,7 +118,9 @@ void BETAPhysicsList::ConstructProcess() {
 //______________________________________________________________________________
 void BETAPhysicsList::ConstructGeneral() {
    // Add Decay Process
-   G4Decay* theDecayProcess = new G4Decay();
+  G4Decay* theDecayProcess = new G4Decay();
+  auto theParticleTable = G4ParticleTable::GetParticleTable();                                                                                                                                                 
+   auto theParticleIterator = theParticleTable->GetIterator();  
    theParticleIterator->reset();
    while ( ( *theParticleIterator ) () )
    {
@@ -136,6 +138,8 @@ void BETAPhysicsList::ConstructGeneral() {
 //______________________________________________________________________________
 void BETAPhysicsList::ConstructEM() {
 
+  auto theParticleTable = G4ParticleTable::GetParticleTable();                                                                                                                                                 
+   auto theParticleIterator = theParticleTable->GetIterator();  
    theParticleIterator->reset();
    while ( ( *theParticleIterator ) () )
    {
@@ -222,6 +226,8 @@ void BETAPhysicsList::ConstructOp() {
    G4OpticalSurfaceModel themodel = unified;
    //theBoundaryProcess->SetModel ( themodel );
 
+  auto theParticleTable = G4ParticleTable::GetParticleTable();                                                                                                                                                 
+   auto theParticleIterator = theParticleTable->GetIterator();  
    theParticleIterator->reset();
    while ( ( *theParticleIterator ) () )
    {
@@ -257,6 +263,8 @@ void BETAPhysicsList::ConstructOp() {
 //______________________________________________________________________________
 void BETAPhysicsList::SetVerbose( G4int verbose ) {
    G4VUserPhysicsList::SetVerboseLevel(verbose);
+  auto theParticleTable = G4ParticleTable::GetParticleTable();                                                                                                                                                 
+   auto theParticleIterator = theParticleTable->GetIterator();  
    theParticleIterator->reset();
    while ( ( *theParticleIterator ) () )
    {
@@ -295,6 +303,8 @@ void BETAPhysicsList::SetCuts() {
 }
 //______________________________________________________________________________
 void BETAPhysicsList::Print(int level ) {
+  auto theParticleTable = G4ParticleTable::GetParticleTable();                                                                                                                                                 
+   auto theParticleIterator = theParticleTable->GetIterator();  
    theParticleIterator->reset();
    while ( ( *theParticleIterator ) () )
    {
diff --git a/src/BETASimulationMessenger.cc b/src/BETASimulationMessenger.cc
index cced343f935eb6a85cdfde7f477e66d42a717b9f..7bd1c1f9a01465fbdba0ee5638191e831a44b37b 100644
--- a/src/BETASimulationMessenger.cc
+++ b/src/BETASimulationMessenger.cc
@@ -6,7 +6,7 @@
 #include "G4Tokenizer.hh"
 #include "G4UImanager.hh"
 
-
+#include "SANETargets.h"
 //___________________________________________________________________
 BETASimulationMessenger::BETASimulationMessenger ( BETASimulationManager* mgr )
       :fSimManager ( mgr )
diff --git a/src/SANEEventGenerators.cc b/src/SANEEventGenerators.cc
index 81c62ac7c806d9fda71cb85cd8d7d55c6f6a39d5..2cf50f517885aa10ffca0ef595becc60a2e5d45f 100644
--- a/src/SANEEventGenerators.cc
+++ b/src/SANEEventGenerators.cc
@@ -1,28 +1,86 @@
 #include "SANEEventGenerators.hh"
+#include "InSANEInclusiveDiffXSec.h"
+#include "F1F209eInclusiveDiffXSec.h"
+
 #include "QuasiElasticInclusiveDiffXSec.h"
 #include "InSANERadiator.h"
 #include "InSANEInclusivePhotoProductionXSec.h"
 #include "InSANEInclusiveElectroProductionXSec.h"
+#include "SANETargets.h"
+#include "InSANEInclusiveDiffXSec.h"
+#include "F1F209eInclusiveDiffXSec.h"
+#include "OARPionDiffXSec.h"
+#include "InSANEXSections.h"
+#include "InSANEPhaseSpace.h"
+#include "WiserXSection.h"
+#include "HallCBeam.h"
+#include "PolarizedDISXSec.h"
+#include "EPCVXSection.h"
+#include "InSANERadiator.h"
+#include "InSANEFunctionManager.h"
+#include "InSANEElasticRadiativeTail.h"
+#include "QuasiElasticInclusiveDiffXSec.h"
+#include "InSANEInclusiveDISXSec.h"
+#include "ExternalRadiator.h"
 
-//____________________________________________________________________
-void DISEventGenerator::Initialize(){
-   F1F209eInclusiveDiffXSec * fDiffXSec = new  F1F209eInclusiveDiffXSec();
-   //std::cout << " Beam Energy: " << fBeamEnergy << std::endl;
-   fDiffXSec->SetBeamEnergy(fBeamEnergy);
-   fDiffXSec->InitializePhaseSpaceVariables();
-   fDiffXSec->InitializeFinalStateParticles();
-   InSANEPhaseSpaceSampler *  fF1F2EventSampler = new InSANEPhaseSpaceSampler(fDiffXSec);
-   AddSampler(fF1F2EventSampler);
+using InSANE::physics::QuasiElasticInclusiveDiffXSec;
 
-   SetBeamEnergy(fBeamEnergy);
-   
-   //InSANEEventGenerator::Initialize();
+void DISEventGenerator::Initialize()
+{
+  F1F209eInclusiveDiffXSec * fDiffXSec = new  F1F209eInclusiveDiffXSec();
+  //std::cout << " Beam Energy: " << fBeamEnergy << std::endl;
+  fDiffXSec->SetBeamEnergy(fBeamEnergy);
+  fDiffXSec->InitializePhaseSpaceVariables();
+  fDiffXSec->InitializeFinalStateParticles();
+  InSANEPhaseSpaceSampler *  fF1F2EventSampler = new InSANEPhaseSpaceSampler(fDiffXSec);
+  AddSampler(fF1F2EventSampler);
 
-   CalculateTotalCrossSection();
+  SetBeamEnergy(fBeamEnergy);
+
+  //InSANEEventGenerator::Initialize();
+
+  CalculateTotalCrossSection();
 }
 //____________________________________________________________________
 
+SANEInclusiveDISEventGenerator::SANEInclusiveDISEventGenerator()
+{
+  fNH3PackingFraction = 0.6;
+  UVAPolarizedAmmoniaTarget * targ = new UVAPolarizedAmmoniaTarget("UVaTarget","UVa Ammonia target",fNH3PackingFraction);
+  SetTarget(targ);
+}
+//______________________________________________________________________________
+
+SANEInclusiveDISEventGenerator::~SANEInclusiveDISEventGenerator() { }
+//______________________________________________________________________________
+
+void SANEInclusiveDISEventGenerator::InitializeMaterialXSec(const Int_t i, const Double_t weight, const InSANETargetMaterial * mat, const InSANENucleus * targ)
+{
+  InSANEPhaseSpaceSampler * samp = 0;
+  //F1F209eInclusiveDiffXSec * xsec = new F1F209eInclusiveDiffXSec();
+  auto xsec = new InSANEInclusiveDISXSec();
+  //auto xsec = new InSANEInclusiveBornDISXSec();
+  //xsec->Dump();
+  xsec->SetTargetMaterial(*mat);
+  xsec->SetTargetMaterialIndex(i);
+  xsec->SetBeamEnergy(GetBeamEnergy());
+  xsec->SetTargetNucleus(*targ);
+  xsec->InitializePhaseSpaceVariables();
+  xsec->InitializeFinalStateParticles();
+  samp = new InSANEPhaseSpaceSampler(xsec);
+  samp->SetFoamCells(100);
+  samp->SetWeight(weight);
+  AddSampler(samp);
+}
+//______________________________________________________________________________
+
+void SANEInclusiveDISEventGenerator::Initialize()
+{
+  InSANETargetEventGenerator::Initialize();
+}
+
 //____________________________________________________________________
+
 void PolarizedDISEventGenerator::Initialize(){
    double Emin = 0.5;
    double Emax = 3.5;
@@ -261,7 +319,8 @@ void InclusiveElectronPionGenerator::InitializeMaterialXSec(const Int_t i, const
    }
 
    if( i!=0 ) {
-      InSANERadiator<QuasiElasticInclusiveDiffXSec> * QE_xsec = new InSANERadiator<QuasiElasticInclusiveDiffXSec>();
+      auto QE_xsec = new InSANE::physics::ExternalRadiator<QuasiElasticInclusiveDiffXSec>();
+      //InSANERadiator<QuasiElasticInclusiveDiffXSec> * QE_xsec = new InSANERadiator<QuasiElasticInclusiveDiffXSec>();
       QE_xsec->SetTargetMaterial(*mat);
       QE_xsec->SetTargetMaterialIndex(i);
       QE_xsec->SetBeamEnergy(GetBeamEnergy());
@@ -322,7 +381,22 @@ void InclusiveElectronPionGenerator::InitializeMaterialXSec(const Int_t i, const
 }
 //______________________________________________________________________________
 void InclusiveElectronPionGenerator::Initialize() {
-   InSANETargetEventGenerator::Initialize();
+  InSANETargetEventGenerator::Initialize();
+}
+//______________________________________________________________________________
+
+NH3TargetEventGenerator::NH3TargetEventGenerator(){
+  fNH3PackingFraction = 0.6;
+  UVAPolarizedAmmoniaTarget * targ = new UVAPolarizedAmmoniaTarget("UVaTarget","UVa Ammonia target",fNH3PackingFraction);
+  SetTarget(targ);
+}
+//______________________________________________________________________________
+
+NH3TargetEventGenerator::~NH3TargetEventGenerator() { }
+//______________________________________________________________________________
+
+void NH3TargetEventGenerator::Initialize() {
+  InSANETargetEventGenerator::Initialize();
 }
 //______________________________________________________________________________