diff --git a/Generator/CMakeLists.txt b/Generator/CMakeLists.txt
index 0f850fcf1983a2d96839ce3b86a6a3bd8a076f5d..79fbb6a6dc67f24ef9c01104893d8ae8272732c0 100644
--- a/Generator/CMakeLists.txt
+++ b/Generator/CMakeLists.txt
@@ -6,7 +6,7 @@ set(GenAlgo_srcs
     src/GenEvent.cpp 
     src/GenReader.cpp 
     src/StdHepRdr.cpp 
-    # src/GenPrinter.cpp
+    src/GenPrinter.cpp
     # src/LCAscHepRdr.cc
     # src/HepevtRdr.cpp
     # src/SLCIORdr.cpp
diff --git a/Generator/src/GenPrinter.cpp b/Generator/src/GenPrinter.cpp
index 827f5b4055dec886e91169b5407ba2ddda026e98..48c6d499451ec24b1eb9b0874b971cdc0678f3b2 100644
--- a/Generator/src/GenPrinter.cpp
+++ b/Generator/src/GenPrinter.cpp
@@ -1,11 +1,7 @@
 #include "GenPrinter.h"
 #include "GenEvent.h"
 
-GenPrinter::GenPrinter(string name){}
-
-
-GenPrinter::~GenPrinter(){
-}
+DECLARE_COMPONENT(GenPrinter)
 
 bool GenPrinter::mutate(MyHepMC::GenEvent& event){
     std::cout << "print mc info for event "<< event.getID() << ", mc size ="<< event.m_mc_vec.size() <<  std::endl;
@@ -19,12 +15,12 @@ bool GenPrinter::mutate(MyHepMC::GenEvent& event){
     << "Charge            :"<< p.getCharge            ()<<std::endl 
     << "Time              :"<< p.getTime              ()<<std::endl 
     << "Mass              :"<< p.getMass              ()<<std::endl 
-    << "Vertex            :"<< p.getVertex            ()[0]<<std::endl 
-    << "Endpoint          :"<< p.getEndpoint          ()[1]<<std::endl 
-    << "Momentum          :"<< p.getMomentum          ()[2]<<std::endl 
-    << "MomentumAtEndpoint:"<< p.getMomentumAtEndpoint()[0]<<std::endl 
-    << "Spin              :"<< p.getSpin              ()[1]<<std::endl 
-    << "ColorFlow         :"<< p.getColorFlow         ()[1]<<std::endl 
+    << "Vertex            :"<< p.getVertex            ()<<std::endl 
+    << "Endpoint          :"<< p.getEndpoint          ()<<std::endl 
+    << "Momentum          :"<< p.getMomentum          ()<<std::endl 
+    << "MomentumAtEndpoint:"<< p.getMomentumAtEndpoint()<<std::endl 
+    << "Spin              :"<< p.getSpin              ()<<std::endl 
+    << "ColorFlow         :"<< p.getColorFlow         ()<<std::endl 
     << "Parent size       :"<< p.parents_size         ()<<std::endl 
     << "Daughter size     :"<< p.daughters_size       ()<<std::endl; 
     //for(unsigned int j=0; j<p.parents_size(); j++) std::cout << " for parent: "<< j << ",PDG="<< p.getParents(j).getPDG() << ",id=:"<< p.getParents(j).id()<<std::endl;
@@ -33,10 +29,32 @@ bool GenPrinter::mutate(MyHepMC::GenEvent& event){
     return true;
 }
 
-bool GenPrinter::configure(){
-return true;
+bool GenPrinter::configure_gentool(){
+    return true;
 }
 
 bool GenPrinter::finish(){
-return true;
+    return true;
 }
+
+StatusCode
+GenPrinter::initialize() {
+    StatusCode sc;
+    if (not configure_gentool()) {
+        error() << "failed to initialize." << endmsg;
+        return StatusCode::FAILURE;
+    }
+
+    return sc;
+}
+
+StatusCode
+GenPrinter::finalize() {
+    StatusCode sc;
+    if (not finish()) {
+        error() << "Failed to finalize." << endmsg;
+        return StatusCode::FAILURE;
+    }
+    return sc;
+}
+
diff --git a/Generator/src/GenPrinter.h b/Generator/src/GenPrinter.h
index 9fe8a1c9d9fa3306db67471fc686885fbbfa2c8b..bf53200342e81899aaa93df656390f2d3dd7c0e5 100644
--- a/Generator/src/GenPrinter.h
+++ b/Generator/src/GenPrinter.h
@@ -1,19 +1,24 @@
 #ifndef GenPrinter_h
 #define GenPrinter_h 1
 
+#include <GaudiKernel/AlgTool.h>
 #include "GenEvent.h"
 #include "IGenTool.h"
 
 using namespace std;
 
-class GenPrinter: public IGenTool{
+class GenPrinter: public extends<AlgTool, IGenTool> {
+public:
+    using extends::extends;
 
-    public:
-        GenPrinter(string name);
-        ~GenPrinter();
-        bool configure() override;               
-        bool mutate(MyHepMC::GenEvent& event) override;    
-        bool finish() override;
+    // Overriding initialize and finalize
+    StatusCode initialize() override;
+    StatusCode finalize() override;
+
+public:
+    bool configure_gentool() override;               
+    bool mutate(MyHepMC::GenEvent& event) override;    
+    bool finish() override;
 };
 
 #endif