diff --git a/RTCP/CNProc/src/CN_Processing.cc b/RTCP/CNProc/src/CN_Processing.cc
index 045be583cdd116308f10b5f9a5b08a6c03340af9..9d948d25d2b21a643a1e81dee55a6f6d0aded483 100644
--- a/RTCP/CNProc/src/CN_Processing.cc
+++ b/RTCP/CNProc/src/CN_Processing.cc
@@ -130,18 +130,18 @@ template <typename SAMPLE_TYPE> void CN_Processing<SAMPLE_TYPE>::preprocess(CN_C
 
 
   itsNrStations	             = configuration.nrStations();
+  itsNrBeamFormedStations    = configuration.nrMergedStations();
   itsNrPencilBeams           = configuration.nrPencilBeams();
   itsNrSubbands              = configuration.nrSubbands();
   itsNrSubbandsPerPset       = configuration.nrSubbandsPerPset();
   itsNrStokes                = configuration.nrStokes();
   itsOutputPsetSize          = outputPsets.size();
   itsCenterFrequencies       = configuration.refFreqs();
+  itsFlysEye                 = configuration.flysEye();
 
   unsigned nrChannels			 = configuration.nrChannelsPerSubband();
   unsigned nrSamplesPerIntegration       = configuration.nrSamplesPerIntegration();
   unsigned nrSamplesPerStokesIntegration = configuration.nrSamplesPerStokesIntegration();
-  unsigned nrBeamFormedStations          = configuration.nrMergedStations();
-  unsigned nrBaselines                   = nrBeamFormedStations * (nrBeamFormedStations + 1) / 2;
 
   // Each phase (e.g., transpose, PPF, correlator) reads from an input data
   // set and writes to an output data set.  To save memory, a few memory buffers
@@ -150,7 +150,7 @@ template <typename SAMPLE_TYPE> void CN_Processing<SAMPLE_TYPE>::preprocess(CN_C
   // Since some buffers (arenas) are used multiple times, we use multiple
   // Allocators for a single arena.
 
-  itsPlan = new CN_ProcessingPlan<SAMPLE_TYPE>( configuration, itsIsTransposeInput, itsIsTransposeOutput, nrBaselines );
+  itsPlan = new CN_ProcessingPlan<SAMPLE_TYPE>( configuration, itsIsTransposeInput, itsIsTransposeOutput );
 
   // calculate what to calculate, what goes where, etc
   itsPlan->assignArenas();
@@ -321,7 +321,7 @@ template <typename SAMPLE_TYPE> void CN_Processing<SAMPLE_TYPE>::calculateCohere
     LOG_DEBUG(std::setprecision(12) << "core " << itsLocationInfo.rank() << ": start calculating coherent Stokes at " << MPI_Wtime());
 #endif // HAVE_MPI
   computeTimer.start();
-  itsCoherentStokes->calculateCoherent(itsPlan->itsBeamFormedData,itsPlan->itsCoherentStokesData,itsNrPencilBeams);
+  itsCoherentStokes->calculateCoherent(itsPlan->itsBeamFormedData,itsPlan->itsCoherentStokesData,itsFlysEye ? itsNrBeamFormedStations : itsNrPencilBeams);
   computeTimer.stop();
 }
 
diff --git a/RTCP/CNProc/src/CN_Processing.h b/RTCP/CNProc/src/CN_Processing.h
index 2255b198ea2814fee1e30c3a359674c4bde00703..bca197588248f487bca00fe0276e99fdc43d48eb 100644
--- a/RTCP/CNProc/src/CN_Processing.h
+++ b/RTCP/CNProc/src/CN_Processing.h
@@ -92,6 +92,8 @@ template <typename SAMPLE_TYPE> class CN_Processing : public CN_Processing_Base,
 #endif
 
     unsigned            itsNrStations;
+    unsigned            itsNrBeamFormedStations;
+    bool                itsFlysEye;
     unsigned            itsNrPencilBeams;
     unsigned            itsNrSubbands;
     unsigned            itsNrSubbandsPerPset;
diff --git a/RTCP/IONProc/src/OutputSection.cc b/RTCP/IONProc/src/OutputSection.cc
index 5a7d664e7562cd01c217a9e07e9b14950c89906e..956fbb9d3403246fa6bfda3067fd023268a461fe 100644
--- a/RTCP/IONProc/src/OutputSection.cc
+++ b/RTCP/IONProc/src/OutputSection.cc
@@ -71,7 +71,7 @@ void OutputSection::preprocess(const Parset *ps)
   CN_Configuration configuration(*ps);
 
   // allocate output structures and temporary data holders
-  itsPlan = new CN_ProcessingPlan<>( configuration, false, true, ps->nrBaselines() );
+  itsPlan = new CN_ProcessingPlan<>( configuration, false, true );
   itsPlan->removeNonOutputs();
   itsPlan->allocateOutputs( hugeMemoryAllocator );
   itsOutputs.resize(itsPlan->nrOutputs());
@@ -92,7 +92,7 @@ void OutputSection::preprocess(const Parset *ps)
     unsigned subbandNumber = itsPsetIndex * itsNrSubbandsPerPset + subband;
 
     if (subbandNumber < itsNrSubbands) {
-      itsSumPlans[subband] = new CN_ProcessingPlan<>( configuration, false, true, ps->nrBaselines() );
+      itsSumPlans[subband] = new CN_ProcessingPlan<>( configuration, false, true );
       itsSumPlans[subband]->removeNonOutputs();
 
       // create data structures to accumulate data, if needed
diff --git a/RTCP/IONProc/src/OutputThread.cc b/RTCP/IONProc/src/OutputThread.cc
index 647b26ef5fb73d5169ff837e7e995ab3148125c4..8dcb41628a8507aa5006adae79b610a34c0aea5b 100644
--- a/RTCP/IONProc/src/OutputThread.cc
+++ b/RTCP/IONProc/src/OutputThread.cc
@@ -54,7 +54,7 @@ OutputThread::OutputThread(const unsigned subband, const Parset &ps )
   // transpose the data holders: create queues streams for the output streams
   // itsPlans is the owner of the pointers to sample data structures
   for (unsigned i = 0; i < maxSendQueueSize; i ++) {
-    CN_ProcessingPlan<> *plan = new CN_ProcessingPlan<>( configuration, false, true, ps.nrBaselines() );
+    CN_ProcessingPlan<> *plan = new CN_ProcessingPlan<>( configuration, false, true );
     plan->removeNonOutputs();
     plan->allocateOutputs( hugeMemoryAllocator );
 
diff --git a/RTCP/Interface/include/Interface/CN_ProcessingPlan.h b/RTCP/Interface/include/Interface/CN_ProcessingPlan.h
index 524b9030c015233310f272129b9204cf09d971fc..7d7c2286a729378155089d5859ab5c665748c463 100644
--- a/RTCP/Interface/include/Interface/CN_ProcessingPlan.h
+++ b/RTCP/Interface/include/Interface/CN_ProcessingPlan.h
@@ -48,12 +48,11 @@ namespace RTCP {
 template <typename SAMPLE_TYPE = i8complex> class CN_ProcessingPlan: public ProcessingPlan
 {
   public:
-    CN_ProcessingPlan( CN_Configuration &configuration, bool isInput, bool isOutput, unsigned nrBaselines );
+    CN_ProcessingPlan( CN_Configuration &configuration, bool isInput, bool isOutput );
     virtual ~CN_ProcessingPlan();
 
     const bool             itsIsTransposeInput;
     const bool             itsIsTransposeOutput;
-    const unsigned         itsNrBaselines;
 
     InputData<SAMPLE_TYPE>	 *itsInputData;
     SubbandMetaData              *itsInputSubbandMetaData;
diff --git a/RTCP/Interface/include/Interface/Parset.h b/RTCP/Interface/include/Interface/Parset.h
index 8849bbf3612b95fb35140e5c17dc6b11e304e1be..1e2d1f29fd461a62a4b81bcf7975ca47e7f68c5d 100644
--- a/RTCP/Interface/include/Interface/Parset.h
+++ b/RTCP/Interface/include/Interface/Parset.h
@@ -109,7 +109,6 @@ public:
 	string         getMSBaseDir() const;
 	string         getTransportType(const string& prefix) const;
 	string         getModeName() const;
-	bool           outputIncoherentStokesI() const;
 
         bool           outputFilteredData() const;
         bool           outputCorrelatedData() const;
@@ -304,7 +303,7 @@ inline unsigned Parset::nrStokes() const
 {
   if( getModeName() == "IncoherentStokesI"
    || getModeName() == "CoherentStokesI" 
-   || getBool("Observation.outputIncoherentStokesI") ) {
+   || getBool("Observation.outputIncoherentStokesI",false) ) {
     return 1;
   } else if( getModeName() == "IncoherentAllStokes"
           || getModeName() == "CoherentAllStokes" ) {
diff --git a/RTCP/Interface/src/CN_ProcessingPlan.cc b/RTCP/Interface/src/CN_ProcessingPlan.cc
index acb34daedc8cf0541c65fa3148333c1d38976228..d2f84eec699832da6eadebbc60224145349ed9dd 100644
--- a/RTCP/Interface/src/CN_ProcessingPlan.cc
+++ b/RTCP/Interface/src/CN_ProcessingPlan.cc
@@ -29,10 +29,10 @@ namespace RTCP {
 // shortcut to automatically name the data sets
 #define TRANSFORM(source,set)   transform(source,set,#set)
 
-template <typename SAMPLE_TYPE> CN_ProcessingPlan<SAMPLE_TYPE>::CN_ProcessingPlan( CN_Configuration &configuration, bool isInput, bool isOutput, unsigned nrBaselines ):
+template <typename SAMPLE_TYPE> CN_ProcessingPlan<SAMPLE_TYPE>::CN_ProcessingPlan( CN_Configuration &configuration, bool isInput, bool isOutput )
+:
   itsIsTransposeInput(isInput),
   itsIsTransposeOutput(isOutput),
-  itsNrBaselines(nrBaselines),
   itsInputData(0),
   itsInputSubbandMetaData(0),
   itsSubbandMetaData(0),
@@ -47,6 +47,8 @@ template <typename SAMPLE_TYPE> CN_ProcessingPlan<SAMPLE_TYPE>::CN_ProcessingPla
 {
   // in fly's eye mode, every station is a beam
   const unsigned nrBeams = configuration.flysEye() ? configuration.nrMergedStations() : configuration.nrPencilBeams();
+
+  const unsigned nrBaselines = configuration.nrMergedStations() * (configuration.nrMergedStations() + 1)/2;
     
   if (itsIsTransposeInput) {
     std::vector<unsigned> &outputPsets = configuration.outputPsets();
@@ -77,7 +79,7 @@ template <typename SAMPLE_TYPE> CN_ProcessingPlan<SAMPLE_TYPE>::CN_ProcessingPla
     );
 
     itsCorrelatedData = new CorrelatedData(
-      itsNrBaselines,
+      nrBaselines,
       configuration.nrChannelsPerSubband()
     );