diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenEventManipulator.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenEventManipulator.h
new file mode 100644
index 0000000000000000000000000000000000000000..d7a721b282edfee14af2d68ff0f7f6b61b29a52b
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenEventManipulator.h
@@ -0,0 +1,49 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+///////////////////////////////////////////////////////////////////
+// IGenEventManipulator.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef ISF_HEPMC_INTERFACES_IGENEVENTMANIPULATOR_H
+#define ISF_HEPMC_INTERFACES_IGENEVENTMANIPULATOR_H 1
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+
+namespace HepMC {
+    class GenEvent;
+} 
+ 
+namespace ISF {
+ 
+  static const InterfaceID IID_IGenEventManipulator("IGenEventManipulator", 1, 0);
+   
+  /**
+   @class IGenEventManipulator
+       
+   Interface definition for the HepMC::GenEvent manipulator,
+   the provided GenEvent is hereby changed, i.e. geometrical transformations are applied to
+   all contained vertices.
+       
+   @author Andreas.Salzburger -at- cern.ch
+   */
+     
+  class IGenEventManipulator : virtual public IAlgTool {
+     public:
+     
+       /** Virtual destructor */
+       virtual ~IGenEventManipulator(){}
+
+       /** AlgTool interface methods */
+       static const InterfaceID& interfaceID() { return IID_IGenEventManipulator; }
+       
+       /** Returns the Particle Stack, should register truth */
+       virtual StatusCode manipulate(HepMC::GenEvent& ge) = 0;
+       
+  };
+
+} // end of namespace
+
+#endif // ISF_HEPMC_INTERFACES_IGENEVENTMANIPULATOR_H
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenParticleFilter.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenParticleFilter.h
new file mode 100644
index 0000000000000000000000000000000000000000..54adad8b4c85f40dafcf75b8e2fe4144128a345f
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenParticleFilter.h
@@ -0,0 +1,51 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+///////////////////////////////////////////////////////////////////
+// IGenParticleFilter.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef ISF_HEPMC_INTERFACES_IGENPARTICLEFILTER_H
+#define ISF_HEPMC_INTERFACES_IGENPARTICLEFILTER_H 1
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+ 
+// Simulation includes
+#include "ISF_Event/SimSvcID.h" 
+
+namespace HepMC {
+    class GenParticle;
+} 
+ 
+namespace ISF {
+ 
+  static const InterfaceID IID_IGenParticleFilter("IGenParticleFilter", 1, 0);
+   
+  /**
+   @class IGenParticleFilter
+      
+   Interface definition for HepMC::GenParticle filter,
+   these filters should be primarily be used in the stack filling process      
+       
+   @author Andreas.Salzburger -at- cern.ch
+   */
+     
+  class IGenParticleFilter : virtual public IAlgTool {
+     public:
+     
+       /** Virtual destructor */
+       virtual ~IGenParticleFilter(){}
+
+       /** AlgTool interface methods */
+       static const InterfaceID& interfaceID() { return IID_IGenParticleFilter; }
+       
+       /** Returns a boolean if the particle has passed or not */
+       virtual bool pass(const HepMC::GenParticle& particle) const = 0;
+       
+  };
+
+} // end of namespace
+
+#endif // ISF_HEPMC_INTERFACES_IGENPARTICLEFILTER_H
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ILorentzVectorGenerator.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ILorentzVectorGenerator.h
new file mode 100644
index 0000000000000000000000000000000000000000..f104e674097e997ec3dabab151fe4fa582105ddf
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ILorentzVectorGenerator.h
@@ -0,0 +1,46 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+///////////////////////////////////////////////////////////////////
+// ILorentzVectorGenerator.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef ISF_HEPMC_INTERFACES_ILORENTZVECTORGENERATOR_H
+#define ISF_HEPMC_INTERFACES_ILORENTZVECTORGENERATOR_H 1
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+ 
+// forward declarations
+namespace CLHEP {
+  class HepLorentzVector;
+}
+
+namespace ISF {
+ 
+  static const InterfaceID IID_ILorentzVectorGenerator("ILorentzVectorGenerator", 1, 0);
+   
+  /**
+   @class ILorentzVectorGenerator
+      
+   Interface definition for an AthenaTool creating a HepLorentzVector
+
+   @author Elmar.Ritsch -at- cern.ch
+   */
+     
+  class ILorentzVectorGenerator : virtual public IAlgTool {
+     public:
+       /** Virtual destructor */
+       virtual ~ILorentzVectorGenerator(){}
+
+       /** AlgTool interface methods */
+       static const InterfaceID& interfaceID() { return IID_ILorentzVectorGenerator; }
+       
+       /** Returns a boolean if the particle has passed or not */
+       virtual CLHEP::HepLorentzVector* generate() = 0;
+  };
+
+} // end of namespace
+
+#endif // ISF_HEPMC_INTERFACES_ILORENTZVECTORGENERATOR_H
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ITruthStrategy.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ITruthStrategy.h
new file mode 100644
index 0000000000000000000000000000000000000000..a11ab4cf7e01e6dcea22ecfbcc86e6a1735e2837
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ITruthStrategy.h
@@ -0,0 +1,43 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+///////////////////////////////////////////////////////////////////
+// ITruthStrategy.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef ISF_HEPMC_INTERFACES_ITRUTHSTRATEGY_H
+#define ISF_HEPMC_INTERFACES_ITRUTHSTRATEGY_H 1
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+ 
+// forward declarations
+namespace HepMC {
+  class GenVertex;
+}
+namespace ISF {
+  class ITruthIncident;
+
+  static const InterfaceID IID_ITruthStrategy("ITruthStrategy", 1, 0);
+   
+  /**
+   @class ITruthStrategy
+      
+   @TODO: class description
+       
+   @author Elmar.Ritsch -at- cern.ch
+   */
+     
+  class ITruthStrategy : virtual public IAlgTool {
+    public:
+      /** AlgTool interface methods */
+      static const InterfaceID& interfaceID() { return IID_ITruthStrategy; }
+      
+      /** true if the ITruthStrategy implementation applies to the given ITruthIncident */
+      virtual bool pass( const ITruthIncident& incident) const = 0;
+  };
+
+} // end of namespace
+
+#endif // ISF_HEPMC_INTERFACES_ITRUTHSTRATEGY_H
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/cmt/requirements b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/cmt/requirements
new file mode 100644
index 0000000000000000000000000000000000000000..6678f4e10ad4a2d3329be4ec0738f4c2e73ecc32
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/cmt/requirements
@@ -0,0 +1,16 @@
+package ISF_HepMC_Interfaces
+author <Andreas.Salzburger@cern.ch>
+
+manager Andreas Salzburger <Andreas.Salzburger@cern.ch>
+manager Elmar Ritsch <Elmar.Ritsch@cern.ch>
+manager Wolfgang Lukas <Wolfgang.Lukas@cern.ch>
+
+public
+use  AtlasPolicy                AtlasPolicy-*                   
+use  GaudiInterface             GaudiInterface-*        External
+use  ISF_Event                  ISF_Event-*             Simulation/ISF/ISF_Core
+end_public
+
+private
+#macro cppdebugflags '$(cppdebugflags_s)'
+#macro_remove componentshr_linkopts "-Wl,-s"