diff --git a/Generators/AtlasHepMC/AtlasHepMC/IO_GenEvent.h b/Generators/AtlasHepMC/AtlasHepMC/IO_GenEvent.h
index c835adb2b578c432113887e3db28cb054f460cfa..04dd2c9f6b91111edaaa491f080268a419c50173 100644
--- a/Generators/AtlasHepMC/AtlasHepMC/IO_GenEvent.h
+++ b/Generators/AtlasHepMC/AtlasHepMC/IO_GenEvent.h
@@ -15,6 +15,27 @@ namespace HepMC
 {
 typedef HepMC3::WriterAsciiHepMC2   WriterAsciiHepMC2;
 typedef HepMC3::ReaderAsciiHepMC2   ReaderAsciiHepMC2;
+class IO_GenEvent {
+public:
+    IO_GenEvent( const std::string& filename="IO_GenEvent.dat",
+                 std::ios::openmode mode=std::ios::out ) {
+        m_writer=new  HepMC3::WriterAsciiHepMC2(filename);
+    }
+    IO_GenEvent( std::ostream & os ) {
+        m_writer=new  HepMC3::WriterAsciiHepMC2(os);
+    }
+    ~IO_GenEvent() {
+        if(m_writer) {
+            m_writer->close();
+            delete m_writer;
+        }
+    }
+    void write_event( const HepMC3::GenEvent* evt ) {
+        m_writer->write_event(*evt);
+    }
+private:
+    HepMC3::WriterAsciiHepMC2 *m_writer;
+};
 }
 #else
 #include "HepMC/IO_GenEvent.h"
diff --git a/Generators/AtlasHepMC/AtlasHepMC/IteratorRange.h b/Generators/AtlasHepMC/AtlasHepMC/IteratorRange.h
index 4f8674320ca5ca3d45e9ffd9552d7586a6db30b9..98422d0a128ba000a75c8db78437f19e70d21374 100644
--- a/Generators/AtlasHepMC/AtlasHepMC/IteratorRange.h
+++ b/Generators/AtlasHepMC/AtlasHepMC/IteratorRange.h
@@ -5,5 +5,13 @@
 
 #ifndef ATLASHEPMC_ITERATORRANGE_H
 #define ATLASHEPMC_ITERATORRANGE_H
+#ifdef HEPMC3
+namespace HepMC {
+enum IteratorRange { parents, children, family,
+                     ancestors, descendants, relatives
+                   };
+}
+#else
 #include "HepMC/IteratorRange.h"
 #endif
+#endif