diff --git a/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl b/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl
index 5eb2ce5b2dc96b423edaa9d72d4ec86120c8ed68..c5f5e7da25dc785ae466b0f421dbc7ae8025b34f 100644
--- a/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl
+++ b/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl
@@ -11,31 +11,31 @@
 namespace corsika {
 
   ObservationPlaneWriterParquet::ObservationPlaneWriterParquet()
-      : ParquetStreamer(){}
+      : output_() {}
 
   void ObservationPlaneWriterParquet::startOfLibrary(
       std::filesystem::path const& directory) {
 
     // setup the streamer
-    initStreamer((directory / "particles.parquet").string());
+    output_.initStreamer((directory / "particles.parquet").string());
 
     // build the schema
-    addField("pdg", parquet::Repetition::REQUIRED, parquet::Type::INT32,
-             parquet::ConvertedType::INT_32);
-    addField("energy", parquet::Repetition::REQUIRED, parquet::Type::FLOAT,
-             parquet::ConvertedType::NONE);
-    addField("x", parquet::Repetition::REQUIRED, parquet::Type::FLOAT,
-             parquet::ConvertedType::NONE);
-    addField("y", parquet::Repetition::REQUIRED, parquet::Type::FLOAT,
-             parquet::ConvertedType::NONE);
+    output_.addField("pdg", parquet::Repetition::REQUIRED, parquet::Type::INT32,
+                     parquet::ConvertedType::INT_32);
+    output_.addField("energy", parquet::Repetition::REQUIRED, parquet::Type::FLOAT,
+                     parquet::ConvertedType::NONE);
+    output_.addField("x", parquet::Repetition::REQUIRED, parquet::Type::FLOAT,
+                     parquet::ConvertedType::NONE);
+    output_.addField("y", parquet::Repetition::REQUIRED, parquet::Type::FLOAT,
+                     parquet::ConvertedType::NONE);
 
     // and build the streamer
-    buildStreamer();
+    output_.buildStreamer();
   }
 
   void ObservationPlaneWriterParquet::endOfShower() { ++shower_; }
 
-  void ObservationPlaneWriterParquet::endOfLibrary() { closeStreamer(); }
+  void ObservationPlaneWriterParquet::endOfLibrary() { output_.closeStreamer(); }
 
   void ObservationPlaneWriterParquet::write(Code const& pid,
                                             units::si::HEPEnergyType const& energy,
@@ -44,12 +44,10 @@ namespace corsika {
     using namespace units::si;
 
     // write the next row - we must write `shower_` first.
-    (*writer_) << shower_
-               << static_cast<int>(get_PDG(pid))
-               << static_cast<float>(energy / 1_eV)
-               << static_cast<float>(x / 1_m)
-               << static_cast<float>(y / 1_m)
-               << parquet::EndRow;
+    *(output_.getWriter()) << shower_ << static_cast<int>(get_PDG(pid))
+                           << static_cast<float>(energy / 1_GeV)
+                           << static_cast<float>(x / 1_m) << static_cast<float>(y / 1_m)
+                           << parquet::EndRow;
   }
 
 } // namespace corsika
diff --git a/corsika/detail/output/ParquetStreamer.inl b/corsika/detail/output/ParquetStreamer.inl
index 000b93846fbfa77ec101db54ec0391d9d0f6364f..d9b4672be3a4201a342a5a0664a3602731cbbdd4 100644
--- a/corsika/detail/output/ParquetStreamer.inl
+++ b/corsika/detail/output/ParquetStreamer.inl
@@ -47,4 +47,8 @@ namespace corsika {
     outfile_->Close();
   }
 
+  std::shared_ptr<parquet::StreamWriter> ParquetStreamer::getWriter() {
+    return writer_;
+  }
+
 } // namespace corsika
diff --git a/corsika/modules/writers/ObservationPlaneWriterParquet.hpp b/corsika/modules/writers/ObservationPlaneWriterParquet.hpp
index 53ec19a2e38b868833f0e29c8c6a21061fd5b452..cda8b8fb5119a116e9d1516aca8182c34b83158d 100644
--- a/corsika/modules/writers/ObservationPlaneWriterParquet.hpp
+++ b/corsika/modules/writers/ObservationPlaneWriterParquet.hpp
@@ -15,7 +15,9 @@
 
 namespace corsika {
 
-  class ObservationPlaneWriterParquet : public BaseOutput, private ParquetStreamer {
+  class ObservationPlaneWriterParquet : public BaseOutput {
+
+    ParquetStreamer output_; ///< The primary output file.
 
   public:
     /**