diff --git a/DDG4/examples/CLICSidSimu.py b/DDG4/examples/CLICSidSimu.py
index d37fd24dc31a9b7211878e15a00ab2f4403e8f6f..562deed19431a6c76ac88f7c813c04128209c87d 100644
--- a/DDG4/examples/CLICSidSimu.py
+++ b/DDG4/examples/CLICSidSimu.py
@@ -15,10 +15,12 @@ from SystemOfUnits import *
 """
 def run():
   kernel = DDG4.Kernel()
+  lcdd = kernel.lcdd()
   install_dir = os.environ['DD4hepINSTALL']
   example_dir = install_dir+'/examples/DDG4/examples';
   kernel.loadGeometry("file:"+install_dir+"/examples/CLICSiD/compact/compact.xml")
   kernel.loadXML("file:"+example_dir+"/DDG4_field.xml")
+  DDG4.importConstants(lcdd)
 
   simple = DDG4.Simple(kernel)
   simple.printDetectors()
@@ -111,6 +113,7 @@ def run():
   gen.OutputLevel = 4 # generator_output_level
   gen.MomentumScale = 0.1
   gen.Mask = 1
+  gen.enableUI()
   kernel.generatorAction().adopt(gen)
   # Install vertex smearing for this interaction
   gen = DDG4.GeneratorAction(kernel,"Geant4InteractionVertexSmear/Smear1");  
@@ -118,6 +121,7 @@ def run():
   gen.Mask = 1
   gen.Offset = (-20*mm, -10*mm, -10*mm, 0*ns)
   gen.Sigma = (12*mm, 8*mm, 8*mm, 0*ns)
+  gen.enableUI()
   kernel.generatorAction().adopt(gen)
 
   # Second particle file reader
@@ -127,6 +131,7 @@ def run():
   gen.OutputLevel = 4 # generator_output_level
   gen.Mask = 2
   gen.MomentumScale = 0.1
+  gen.enableUI()
   kernel.generatorAction().adopt(gen)
   # Install vertex smearing for this interaction
   gen = DDG4.GeneratorAction(kernel,"Geant4InteractionVertexSmear/Smear2");
@@ -134,6 +139,7 @@ def run():
   gen.Mask = 2
   gen.Offset = (20*mm, 10*mm, 10*mm, 0*ns)
   gen.Sigma = (2*mm, 1*mm, 1*mm, 0*ns)
+  gen.enableUI()
   kernel.generatorAction().adopt(gen)
 
   #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -141,11 +147,13 @@ def run():
   # Merge all existing interaction records
   gen = DDG4.GeneratorAction(kernel,"Geant4InteractionMerger/InteractionMerger")
   gen.OutputLevel = 4 #generator_output_level
+  gen.enableUI()
   kernel.generatorAction().adopt(gen)
 
   # Finally generate Geant4 primaries
   gen = DDG4.GeneratorAction(kernel,"Geant4PrimaryHandler/PrimaryHandler")
   gen.OutputLevel = 4 #generator_output_level
+  gen.enableUI()
   kernel.generatorAction().adopt(gen)
 
   # And handle the simulation particles.
@@ -157,8 +165,9 @@ def run():
   part.OutputLevel = 5 # generator_output_level
   part.enableUI()
   user = DDG4.Action(kernel,"Geant4TCUserParticleHandler/UserParticleHandler")
-  user.TrackingVolume_Zmax = 165.70*cm  # EcalEndcap_zmin
-  user.TrackingVolume_Rmax = 126.50*cm  # EcalBarrel_rmin
+  user.TrackingVolume_Zmax = DDG4.EcalEndcap_zmin
+  user.TrackingVolume_Rmax = DDG4.EcalBarrel_rmin
+  user.enableUI()
   part.adopt(user)
 
   """
diff --git a/DDG4/examples/run.C b/DDG4/examples/run.C
index b62089327843dc800296041ca4304102da723186..ecfef7b36bb2428a2a5f8bd0790802dd7d084d21 100644
--- a/DDG4/examples/run.C
+++ b/DDG4/examples/run.C
@@ -2,11 +2,11 @@
 void run()  {
   gInterpreter->ProcessLine(".X initAClick.C");
   //gInterpreter->ProcessLine(".L exampleAClick.C+");
-  //gInterpreter->ProcessLine(".L xmlAClick.C+");
+  gInterpreter->ProcessLine(".L xmlAClick.C+");
   //gInterpreter->ProcessLine(".L TEve.C+");
   //gSystem->Load("libDD4hepCore");
   //gSystem->Load("libDD4hepG4");
-  gInterpreter->ProcessLine(".L FCC_Hcal.C+");
+  //gInterpreter->ProcessLine(".L FCC_Hcal.C+");
   //gInterpreter->ProcessLine(".X DDG4Dump.C+");
   //gInterpreter->ProcessLine(".X a.C++");
 }
diff --git a/DDG4/examples/sequences.xml b/DDG4/examples/sequences.xml
index 06b2fc69debcc927f1e0d143678cd92491207ba4..4d344897d83f8407617f93713828d1fa5fd3f8ad 100644
--- a/DDG4/examples/sequences.xml
+++ b/DDG4/examples/sequences.xml
@@ -4,22 +4,22 @@
 
 
   <!-- Kernel parameters  
-  --   UI="UI" is default, 
-  --
-  --   Note:
-  --   NumEvents is ignored in interactive sessions, but  used
-  --   in batch mode without ui nor vis.
-  --
-  --   To run batch: set UI=""
+       UI="UI" is default, 
+    
+       Note:
+       NumEvents is ignored in interactive sessions, but  used
+       in batch mode without ui nor vis.
+    
+       To run batch: set UI=""
   -->
   <kernel UI="UI" NumEvents="5"/>  
 
   <!-- List of globally known actions. These actions will be registered with the Geant4Kernel 
-  --   object and may be retrieved by there using the action name.
-  --
-  --   Note: registered actions MUST be unique.
-  --   However, not all actions need to registered....
-  --   Only register those, you later need to retrieve by name.
+       object and may be retrieved by there using the action name.
+    
+       Note: registered actions MUST be unique.
+       However, not all actions need to registered....
+       Only register those, you later need to retrieve by name.
   -->
   <actions>
     <action name="Geant4TestRunAction/RunInit">
@@ -34,6 +34,11 @@
 		  Property_double="5e15"
 		  Property_string="Hello_2"/>
     </action>
+    <action name="Geant4TCUserParticleHandler/UserParticleHandler">
+      <properties Control="true"
+		  TrackingVolume_Zmax="165*cm"
+		  TrackingVolume_Rmax="125*cm"/>
+    </action>
 
     <!-- UI handler initializing vis and ui. NAME IS FIXED/COMMON KNOWLEDGE -->
     <action name="Geant4UIManager/UI">
@@ -42,16 +47,14 @@
 		  SetupUI="run.mac"
 		  SessionType="csh"/>
      </action>
-    <!-- void and empty for the time being.... NAME IS FIXED/COMMON KNOWLEDGE -->
-    <action name="Geant4DummyTruthHandler/MonteCarloTruthHandler"/>
   </actions>
 
   <!-- List of known phases.
-  --   Note: Phases can only be attached to the program at very well defined moments,
-  --   which are explained in the documentation.
-  --   These are typically the "standard" moments: BeginRun, EndRun, BeginEvent, etc.
-  --   and the calls after processing the hits of each sensitive detector.
-  --
+       Note: Phases can only be attached to the program at very well defined moments,
+       which are explained in the documentation.
+       These are typically the "standard" moments: BeginRun, EndRun, BeginEvent, etc.
+       and the calls after processing the hits of each sensitive detector.
+    
   -->
   <phases>
     <phase type="RunAction/begin">
@@ -72,13 +75,13 @@
   </phases>
 
   <!-- List of globally known filters. Filters are called by Geant4 before the
-  --   hit processing in the sensitive detectors start. The global filters
-  --   may be shared between many sensitive detectors. Alternatively filters
-  --   may be directly attached to the sensitive detector in question.
-  --   Attributes are directly passed as properties to the filter action.
-  --
-  --   Note: registered global filters MUST be unique.
-  --   However, not all filters need to registered....
+       hit processing in the sensitive detectors start. The global filters
+       may be shared between many sensitive detectors. Alternatively filters
+       may be directly attached to the sensitive detector in question.
+       Attributes are directly passed as properties to the filter action.
+    
+       Note: registered global filters MUST be unique.
+       However, not all filters need to registered....
   -->
   <filters>
     <filter name="GeantinoRejectFilter/GeantinoRejector"/>
@@ -94,10 +97,10 @@
   </filters>
 
   <!-- List of known action sequences.
-  --   Note: Action sequences exist for each of the various geant4 callback,
-  --   which are explained in the documentation, such as EventAction, RunAction, etc
-  --   and the calls after processing the hits of each sensitive detector.
-  --
+       Note: Action sequences exist for each of the various geant4 callback,
+       which are explained in the documentation, such as EventAction, RunAction, etc
+       and the calls after processing the hits of each sensitive detector.
+    
   -->
   <sequences>
     <sequence name="Geant4EventActionSequence/EventAction">
@@ -124,6 +127,12 @@
 		    multiplicity="1"
 		    direction="(1,1,1)"/>
       </action>
+      <action name="Geant4ParticleHandler/ParticleHandler">
+        <properties Control="true"
+		    SaveProcesses="['Decay']"
+  	  	    MinimalKineticEnergy="100*MeV"/>
+	<adopt name="UserParticleHandler"/>
+      </action>
     </sequence>
 
     <sequence sd="SiVertexBarrel" type="Geant4SensDetActionSequence">
diff --git a/DDG4/examples/xmlAClick.C b/DDG4/examples/xmlAClick.C
index ee44cd48d6f8643ce76ca613e15c57068b695c80..1096deeeb566abc4627d41e53d84fdfe02a8d4e6 100644
--- a/DDG4/examples/xmlAClick.C
+++ b/DDG4/examples/xmlAClick.C
@@ -1,19 +1,44 @@
 #include "DDG4/Geant4Config.h"
+#if 0
+#include "DDG4/Geant4Handle.h"
+#include "DDG4/Geant4Particle.h"
+#include "DDG4/Geant4Kernel.h"
+#include "DDG4/Geant4PhysicsList.h"
+#include "DDG4/Geant4GeneratorAction.h"
+#include "DDG4/Geant4RunAction.h"
+#include "DDG4/Geant4EventAction.h"
+#include "DDG4/Geant4TrackingAction.h"
+#include "DDG4/Geant4SteppingAction.h"
+#include "DDG4/Geant4StackingAction.h"
+#include "DDG4/Geant4ActionPhase.h"
+#include "DDG4/Geant4SensDetAction.h"
+#include "DDG4/Geant4ParticleHandler.h"
+#include "DDG4/Geant4UserParticleHandler.h"
+#include "DDG4/ComponentUtils.h"
+#include "DD4hep/LCDD.h"
+#endif
+
 #include <iostream>
+
+
+using namespace DD4hep;
+using namespace DD4hep::Simulation;
 using namespace DD4hep::Simulation::Setup;
 
 void setupG4_XML()  {
-  DD4hep::Geometry::LCDD& lcdd = DD4hep::Geometry::LCDD::getInstance();
-  Kernel& kernel = Kernel::instance(lcdd);
-  kernel.loadGeometry("file:../DD4hep.trunk/DDExamples/CLICSiD/compact/compact.xml");
-  kernel.loadXML("DDG4_field.xml");
-  kernel.loadXML("sequences.xml");
-  kernel.loadXML("physics.xml");
+  std::string prefix = "file:../DD4hep.trunk";
+  Geant4Kernel& kernel = Kernel::instance(Geometry::LCDD::getInstance());
+  kernel.loadGeometry((prefix+"/DDExamples/CLICSiD/compact/compact.xml").c_str());
+  kernel.loadXML((prefix+"/DDG4/examples/DDG4_field.xml").c_str());
+  kernel.loadXML((prefix+"/DDG4/examples/sequences.xml").c_str());
+  kernel.loadXML((prefix+"/DDG4/examples/physics.xml").c_str());
   kernel.configure();
   kernel.initialize();
   kernel.run();
   std::cout << "Successfully executed application .... " << std::endl;
   kernel.terminate();
+#if 0
+#endif
 }
 
 
diff --git a/DDG4/include/DDG4/Geant4Config.h b/DDG4/include/DDG4/Geant4Config.h
index 74e2cc1edd64d2539fa275728ea322d6983b88b2..194823065ac7079352a19ee49125fb62563ab8a1 100644
--- a/DDG4/include/DDG4/Geant4Config.h
+++ b/DDG4/include/DDG4/Geant4Config.h
@@ -79,6 +79,7 @@ namespace DD4hep {
   }    // End namespace Simulation
 }      // End namespace DD4hep
 
+#include "DDG4/Geant4Particle.h"
 #include "DDG4/Geant4Handle.h"
 #include "DDG4/Geant4Kernel.h"
 #include "DDG4/Geant4PhysicsList.h"
diff --git a/DDG4/include/DDG4/Geant4Kernel.h b/DDG4/include/DDG4/Geant4Kernel.h
index 8fadb8b0d547604fb7ba3e335c8e8d621b207c1c..69001fde0ea9f0cb7934002ba3e43928903764b7 100644
--- a/DDG4/include/DDG4/Geant4Kernel.h
+++ b/DDG4/include/DDG4/Geant4Kernel.h
@@ -115,8 +115,6 @@ namespace DD4hep {
       /// Helper to register an action sequence
       template <typename C> bool registerSequence(C*& seq, const std::string& name);
 
-#if defined(__CINT__) || defined(__MAKECINT__)
-#endif
     public:
       /// Standard constructor
       Geant4Kernel(LCDD& lcdd);
diff --git a/DDG4/plugins/Geant4XMLSetup.cpp b/DDG4/plugins/Geant4XMLSetup.cpp
index 79b3635848478e3a7ca3f7ec5655f7abc9b732ec..b85a2c3c8ca0ce0c2586d985b9ee3b0f63517564 100644
--- a/DDG4/plugins/Geant4XMLSetup.cpp
+++ b/DDG4/plugins/Geant4XMLSetup.cpp
@@ -83,6 +83,15 @@ namespace DD4hep  {
     _setProperties(handle,e);
     printout(INFO,"Geant4Setup","+++ Added action %s of type %s",tn.second.c_str(),tn.first.c_str());
     installMessenger(handle);
+
+    if ( action.hasChild(_Unicode(adopt)) )  {
+      xml_comp_t child = action.child(_Unicode(adopt));
+      Geant4Action* user = kernel.globalAction(child.nameStr());
+      Geant4ParticleHandler* ph = dynamic_cast<Geant4ParticleHandler*>(handle.get());
+      if ( ph )  {
+	ph->adopt(user);
+      }
+    }
     return handle;
   }
 
diff --git a/DDG4/python/DD4hep.py b/DDG4/python/DD4hep.py
index b586739e597f847b7342f5f708a319ec23855f58..2545d7bb2d4ef60a35d60005a2cf99cff1472ea1 100644
--- a/DDG4/python/DD4hep.py
+++ b/DDG4/python/DD4hep.py
@@ -37,9 +37,11 @@ def loadDD4hep():
 
 # We are nearly there ....
 name_space = __import__(__name__)
-def import_class(ns,nam):  
+def import_namespace_item(ns,nam):  
   scope = getattr(name_space,ns)
-  setattr(name_space,nam,getattr(scope,nam))
+  attr = getattr(scope,nam)
+  setattr(name_space,nam,attr)
+  return attr
 
 def import_root(nam):
   #print 'import ROOT class ',nam,str(name_space)
@@ -73,58 +75,65 @@ OutputLevel = _Levels()
 Core       = DD4hep
 Geo        = DD4hep.Geometry
 Geometry   = DD4hep.Geometry
+
+import_root('XmlTools')
+import_namespace_item('XmlTools','Evaluator')
 #---------------------------------------------------------------------------
-import_class('Core','NamedObject')
-import_class('Core','run_interpreter')
+import_namespace_item('Core','NamedObject')
+import_namespace_item('Core','run_interpreter')
 
 def import_geometry():
-  import_class('Core','setPrintLevel')
-  import_class('Core','printLevel')
-  import_class('Geo','LCDD')
-  import_class('Geo','VolumeManager')
-  import_class('Geo','OverlayedField')
+  import_namespace_item('Core','setPrintLevel')
+  import_namespace_item('Core','printLevel')
+  import_namespace_item('Geo','LCDD')
+  import_namespace_item('Core','evaluator')
+  import_namespace_item('Core','g4Evaluator')
+  
+  import_namespace_item('Geo','VolumeManager')
+  import_namespace_item('Geo','OverlayedField')
+  import_namespace_item('Geo','Ref_t')
 
   #// Objects.h
-  import_class('Geo','Author')
-  import_class('Geo','Header')
-  import_class('Geo','Constant')
-  import_class('Geo','Atom')
-  import_class('Geo','Material')
-  import_class('Geo','VisAttr')
-  import_class('Geo','AlignmentEntry')
-  import_class('Geo','Limit')
-  import_class('Geo','LimitSet')
-  import_class('Geo','Region')
+  import_namespace_item('Geo','Author')
+  import_namespace_item('Geo','Header')
+  import_namespace_item('Geo','Constant')
+  import_namespace_item('Geo','Atom')
+  import_namespace_item('Geo','Material')
+  import_namespace_item('Geo','VisAttr')
+  import_namespace_item('Geo','AlignmentEntry')
+  import_namespace_item('Geo','Limit')
+  import_namespace_item('Geo','LimitSet')
+  import_namespace_item('Geo','Region')
 
   #// Readout.h
-  import_class('Geo','Readout')
-  import_class('Geo','Alignment')
-  import_class('Geo','Conditions')
+  import_namespace_item('Geo','Readout')
+  import_namespace_item('Geo','Alignment')
+  import_namespace_item('Geo','Conditions')
 
   #// DetElement.h
-  import_class('Geo','DetElement')
-  import_class('Geo','SensitiveDetector')
+  import_namespace_item('Geo','DetElement')
+  import_namespace_item('Geo','SensitiveDetector')
 
   #// Volume.h
-  import_class('Geo','Volume')
-  import_class('Geo','PlacedVolume')
+  import_namespace_item('Geo','Volume')
+  import_namespace_item('Geo','PlacedVolume')
 
   #// Shapes.h
-  import_class('Geo','Polycone')
-  import_class('Geo','ConeSegment')
-  import_class('Geo','Box')
-  import_class('Geo','Torus')
-  import_class('Geo','Cone')
-  import_class('Geo','Tube')
-  import_class('Geo','Trap')
-  import_class('Geo','Trapezoid')
-  import_class('Geo','Sphere')
-  import_class('Geo','Paraboloid')
-  import_class('Geo','PolyhedraRegular')
-  import_class('Geo','BooleanSolid')
-  import_class('Geo','SubtractionSolid')
-  import_class('Geo','UnionSolid')
-  import_class('Geo','IntersectionSolid')
+  import_namespace_item('Geo','Polycone')
+  import_namespace_item('Geo','ConeSegment')
+  import_namespace_item('Geo','Box')
+  import_namespace_item('Geo','Torus')
+  import_namespace_item('Geo','Cone')
+  import_namespace_item('Geo','Tube')
+  import_namespace_item('Geo','Trap')
+  import_namespace_item('Geo','Trapezoid')
+  import_namespace_item('Geo','Sphere')
+  import_namespace_item('Geo','Paraboloid')
+  import_namespace_item('Geo','PolyhedraRegular')
+  import_namespace_item('Geo','BooleanSolid')
+  import_namespace_item('Geo','SubtractionSolid')
+  import_namespace_item('Geo','UnionSolid')
+  import_namespace_item('Geo','IntersectionSolid')
 
 
 def import_tgeo():
diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py
index b1e2a3a365cda05123fb087eb6221c9b69e4ebb3..b32bd01827a93554db762bf18c30c084cd518562 100644
--- a/DDG4/python/DDG4.py
+++ b/DDG4/python/DDG4.py
@@ -31,7 +31,38 @@ Simulation = DD4hep.Simulation
 
 Kernel     = Sim.KernelHandle
 Interface  = Sim.Geant4ActionCreation
+LCDD       = Geo.LCDD
 
+#---------------------------------------------------------------------------
+def _constant(self,name):
+  return self.constantAsString(name)
+
+LCDD.globalVal = _constant
+#---------------------------------------------------------------------------
+
+"""
+import DDG4
+l=DDG4.LCDD.getInstance()
+l.addConstant(DDG4.Ref_t(DDG4.NamedObject('AA','10*cm')))
+DDG4.importConstants(l,'sub-name-space')
+"""
+def importConstants(lcdd,namespace=None):
+  scope = current
+  ns = current
+  if namespace is not None and not hasattr(current,namespace):
+    import imp
+    m = imp.new_module('DDG4.'+namespace)
+    setattr(current,namespace,m)
+    ns = m
+  values = {}
+  for c in lcdd.constants():
+    values[c.first] = c.second.GetTitle()
+  evaluator = DD4hep.evaluator()
+  for key,value in values:
+    setattr(ns,key,value)
+    #print 'Imported global value:',c.first,'=',c.second.GetTitle(),'into namespace',ns.__name__
+#---------------------------------------------------------------------------
+  
 def _registerGlobalAction(self,action):
   self.get().registerGlobalAction(Interface.toAction(action))
 def _registerGlobalFilter(self,filter):
diff --git a/DDG4/src/Geant4ParticleHandler.cpp b/DDG4/src/Geant4ParticleHandler.cpp
index 8e93097899c9ebf5313c45669c404a78dce4cb8e..0c642a7c06b31c5b526a748a8223a13facb466bb 100644
--- a/DDG4/src/Geant4ParticleHandler.cpp
+++ b/DDG4/src/Geant4ParticleHandler.cpp
@@ -57,6 +57,7 @@ namespace {
 Geant4ParticleHandler::Geant4ParticleHandler(Geant4Context* context, const string& nam)
   : Geant4GeneratorAction(context,nam), Geant4MonteCarloTruth(), m_userHandler(0), m_primaryMap(0)
 {
+  InstanceCount::increment(this);
   //generatorAction().adopt(this);
   eventAction().callAtBegin(this,&Geant4ParticleHandler::beginEvent);
   eventAction().callAtEnd(this,&Geant4ParticleHandler::endEvent);
@@ -69,7 +70,7 @@ Geant4ParticleHandler::Geant4ParticleHandler(Geant4Context* context, const strin
   declareProperty("KeepAllParticles",    m_keepAll = false);
   declareProperty("SaveProcesses",       m_processNames);
   declareProperty("MinimalKineticEnergy",m_kinEnergyCut = 100e0*MeV);
-  InstanceCount::increment(this);
+  m_needsControl = true;
 }
 
 /// No default constructor
diff --git a/DDG4/src/Geant4UserParticleHandler.cpp b/DDG4/src/Geant4UserParticleHandler.cpp
index 0ed51d41c2c50f90203d6aa7ddcf8ff2b451f1b6..221756edf945238c570c9d38641e4390a723ede1 100644
--- a/DDG4/src/Geant4UserParticleHandler.cpp
+++ b/DDG4/src/Geant4UserParticleHandler.cpp
@@ -18,6 +18,7 @@ Geant4UserParticleHandler::Geant4UserParticleHandler(Geant4Context* context, con
   : Geant4Action(context,nam)
 {
   InstanceCount::increment(this);
+  m_needsControl = true;
 }
 
 /// Default destructor