diff --git a/DPPP_SageCal/include/DPPP_SageCal/SageCal.h b/DPPP_SageCal/include/DPPP_SageCal/SageCal.h
index ee6744719aaf336194e1004dd6830292da1e9781..ca4516fa1b305eaa48ff67f3eff4aae3c4d182d0 100644
--- a/DPPP_SageCal/include/DPPP_SageCal/SageCal.h
+++ b/DPPP_SageCal/include/DPPP_SageCal/SageCal.h
@@ -80,6 +80,8 @@ namespace LOFAR {
 
       void loadData(const DPBuffer&, Data::IOData&, double*);
 
+      void writeData(DPBuffer&, const Data::IOData&);
+
       //# Data members.
       DPInput*         _input;
       DPBuffer         _buffer;
diff --git a/DPPP_SageCal/src/SageCal.cc b/DPPP_SageCal/src/SageCal.cc
index 94da5e6f3d6a691216a102e86d6a87da2d11e8e4..926e192910c2708f29f6b68acd9913e1a564b413 100644
--- a/DPPP_SageCal/src/SageCal.cc
+++ b/DPPP_SageCal/src/SageCal.cc
@@ -67,7 +67,16 @@ namespace LOFAR {
     }
 
     SageCal::~SageCal()
-    {}
+    {
+      delete [] _iodata.u;
+      delete [] _iodata.v;
+      delete [] _iodata.w;
+      delete [] _iodata.x;
+      delete [] _iodata.xo;
+      delete [] _iodata.freqs;
+      delete [] _iodata.flag;
+      delete [] _iodata.NchanMS;
+    }
 
     DPStep::ShPtr SageCal::makeStep (DPInput* input,
                                     const ParameterSet& parset,
@@ -89,6 +98,7 @@ namespace LOFAR {
       _iodata.dec0 = ref_dir.getValue().get()[1];
 
       _iodata.Nms = 1;
+      _iodata.Nchan = info().nchan();
       try {
         _iodata.u=new double[_iodata.Nbase*_iodata.tilesz];
         _iodata.v=new double[_iodata.Nbase*_iodata.tilesz];
@@ -210,12 +220,29 @@ namespace LOFAR {
           }
           // For now, we just let sagecal believe all timeslots are good
           countgood++;
+          row0++;
         }
       }
 
       *fratio=(double)countbad/(double)(countgood+countbad);
     }
 
+    void SageCal::writeData(DPBuffer& buffer, const Data::IOData& iodata ) {
+      uint row0=0;
+
+      for (int time=0; time<1; time++) { // Todo: handle tilesz
+        for (int bl=0; bl<iodata.Nbase; ++bl) {
+          uint ant1 = info().getAnt1()[bl];
+          uint ant2 = info().getAnt2()[bl];
+          if (ant1==ant2) {
+            continue;
+          }
+
+          std::complex<float> *data = &(buffer.getData().data()[time*info().nbaselines()*4*info().nchan()+bl*4*info().nchan()]);
+        }
+      }
+    }
+
     bool SageCal::process (const DPBuffer& bufin)
     {
       _timer.start();
@@ -233,6 +260,8 @@ namespace LOFAR {
                                      _iodata.deltaf, _iodata.deltat, _iodata.dec0,
                                      Data::Nt, Data::DoSim);
 
+      //writeData(_buffer, _iodata);
+
       _timer.stop();
       getNextStep()->process(_buffer);
       return false;