diff --git a/Appl/CEP/CS1/CS1_BGLProc/src/BGL_Processing.cc b/Appl/CEP/CS1/CS1_BGLProc/src/BGL_Processing.cc
index bf853201cd5757be19f01f8ea0ea3e66acf22014..bb296054c583294132c085e930dbeb1e5eba4ede 100644
--- a/Appl/CEP/CS1/CS1_BGLProc/src/BGL_Processing.cc
+++ b/Appl/CEP/CS1/CS1_BGLProc/src/BGL_Processing.cc
@@ -292,9 +292,6 @@ void BGL_Processing::preprocess(BGL_Configuration &configuration)
   }
 
   if (itsIsTransposeOutput) {
-    // TODO: !useGather not implemented
-    //ASSERT(parset->getBool("OLAP.IONProc.useGather"));
-
     unsigned nrSubbandsPerPset	= configuration.nrSubbandsPerPset();
     unsigned logicalNode	= usedCoresPerPset * (outputPsetIndex - outputPsets.begin()) + myCore;
     // TODO: logicalNode assumes output psets are consecutively numbered
diff --git a/Appl/CEP/CS1/CS1_IONProc/src/CS1_ION_main.cc b/Appl/CEP/CS1/CS1_IONProc/src/CS1_ION_main.cc
index 86388112e5c7503c672761a7141bcfcf557e654e..33db9fb017010a2400bc2c0a7b52dfbee98df8c4 100644
--- a/Appl/CEP/CS1/CS1_IONProc/src/CS1_ION_main.cc
+++ b/Appl/CEP/CS1/CS1_IONProc/src/CS1_ION_main.cc
@@ -314,7 +314,7 @@ void *master_thread(void *)
 #endif
     }
 
-    if (parset.useGather() && parset.outputPsetIndex(myPsetNumber) >= 0) {
+    if (parset.outputPsetIndex(myPsetNumber) >= 0) {
       static char nrRuns[16], *argv[] = {
 	global_argv[0],
 	global_argv[1],
diff --git a/Appl/CEP/CS1/CS1_Interface/include/CS1_Interface/CS1_Parset.h b/Appl/CEP/CS1/CS1_Interface/include/CS1_Interface/CS1_Parset.h
index 5c40ae1b918b5772724074e1b6b4f9196e53b0a2..58c14b6f064e62985235b57f23ea9578f79a141c 100644
--- a/Appl/CEP/CS1/CS1_Interface/include/CS1_Interface/CS1_Parset.h
+++ b/Appl/CEP/CS1/CS1_Interface/include/CS1_Interface/CS1_Parset.h
@@ -63,6 +63,8 @@ public:
 	itsObservation(aParSet)
          {}
 	 
+	void           check() const;
+
 	double         startTime() const;
 	double         stopTime() const;
 	uint32	       nrStations() const;
@@ -87,16 +89,11 @@ public:
 	uint32         nrChannelsPerSubband() const;
 	uint32         nrPsets() const;
 	uint32         nrCoresPerPset() const;
-	double         chanWidth() const;
+	double         channelWidth() const;
 	vector<string> getPortsOf(const string& aKey) const;
-	void           IONodeRSPDestPorts(uint32 pset, vector<pair<string, string> > &RSPDestPort) const; 
 	string         stationName(const int index) const;
 	static string  expandedArrayString(const string& orgStr);
-	bool	       useScatter() const;
-	bool	       useGather() const;
 	uint32	       nrPsetsPerStorage() const;
-	uint32	       nrOutputsPerInputNode() const;
-	uint32	       nrInputsPerStorageNode() const;
 	vector<uint32> inputPsets() const;
 	vector<uint32> outputPsets() const;
 	vector<uint32> psetDimensions() const;
@@ -138,6 +135,7 @@ private:
 	void           addPosition(string stName);
 	double	       getTime(const char *name) const;
 	static int     findIndex(uint32 pset, const vector<uint32> &psets);
+	void           checkSubbandCount(const char *key) const;
 	
 	Observation    itsObservation;
 };
@@ -266,7 +264,7 @@ inline uint32 CS1_Parset::nrCoresPerPset() const
  
 inline unsigned CS1_Parset::nrSubbands() const
 {
-  return subbandToBeamMapping().size();
+  return getUint32Vector("Observation.subbandList").size();
 } 
 
 inline vector<unsigned> CS1_Parset::subbandToBeamMapping() const
@@ -286,36 +284,16 @@ inline vector<unsigned> CS1_Parset::subbandToRSPslotMapping() const
 }
 
 
-inline double CS1_Parset::chanWidth() const
+inline double CS1_Parset::channelWidth() const
 {
   return sampleRate() / nrChannelsPerSubband();
 }
 
-inline bool CS1_Parset::useScatter() const
-{
-  return getBool("OLAP.IONProc.useScatter");
-}
-
-inline bool CS1_Parset::useGather() const
-{
-  return getBool("OLAP.IONProc.useGather");
-}
-
 inline uint32 CS1_Parset::nrPsetsPerStorage() const
 {
   return getUint32("OLAP.psetsPerStorage");
 }
 
-inline uint32 CS1_Parset::nrOutputsPerInputNode() const
-{
-  return useScatter() ? 1 : nrCoresPerPset();
-}
-
-inline uint32 CS1_Parset::nrInputsPerStorageNode() const
-{
-  return (useGather() ? 1 : nrCoresPerPset()) * nrPsetsPerStorage();
-}
-
 inline vector<uint32> CS1_Parset::inputPsets() const
 {
   return getUint32Vector("OLAP.BGLProc.inputPsets");
diff --git a/Appl/CEP/CS1/CS1_Interface/src/CS1_Parset.cc b/Appl/CEP/CS1/CS1_Interface/src/CS1_Parset.cc
index 1b762bef3e50b266ef98b1ffaf9579e4b458e021..e7f52075b9a9bf0c57fac52f8ee89c4073f22e7a 100644
--- a/Appl/CEP/CS1/CS1_Interface/src/CS1_Parset.cc
+++ b/Appl/CEP/CS1/CS1_Interface/src/CS1_Parset.cc
@@ -50,38 +50,26 @@ using namespace ACC::APS;
 CS1_Parset::CS1_Parset() :
 	name()
 {
+  check();
 }
 
 CS1_Parset::~CS1_Parset()
 {
 }
 
-void CS1_Parset::IONodeRSPDestPorts(uint32 pset, vector<pair<string, string> > &RSPDestPort) const
+
+void CS1_Parset::checkSubbandCount(const char *key) const
 {
-  char buf[50];
-  
-  sprintf(buf,"PIC.Core.IONode[%d].RSP",pset);
-  vector<string> snames = getStringVector(buf);
-  string rspdest_ports;
-    
-  for (uint i = 0; i < snames.size(); i++) {
-    rspdest_ports = getStringVector("PIC.Core." + snames[i].substr(0, snames[i].length()-1) + ".dest.ports")[atoi(snames[i].substr(snames[i].length()-1,snames[i].length()).c_str())];
-    if (rspdest_ports.substr(0,5) == "file:" || rspdest_ports.substr(0,5) == "FILE:") {
-      RSPDestPort.push_back(pair<string, string>(rspdest_ports.substr(rspdest_ports.find(":")+1),""));
-    }
-    else if (rspdest_ports.substr(0,4) == "udp:" || rspdest_ports.substr(0,4) == "UDP:" ||
-             rspdest_ports.substr(0,4) == "tcp:" || rspdest_ports.substr(0,4) == "TCP:") {
-      RSPDestPort.push_back(pair<string, string>(StringUtil::split(rspdest_ports, ':')[1], rspdest_ports.substr(rspdest_ports.rfind(":")+1)));
-    }
-    else if (rspdest_ports.find(":") != string::npos){
-      // udp
-      RSPDestPort.push_back(pair<string, string>(StringUtil::split(rspdest_ports, ':')[0], StringUtil::split(rspdest_ports, ':')[1]));
-    }
-    else {
-      // file
-      RSPDestPort.push_back(pair<string, string>(rspdest_ports,""));
-    }
-  }
+  if (getUint32Vector(key).size() != nrSubbands())
+    throw std::runtime_error(string(key) + " contains wrong number (" + boost::lexical_cast<string>(getUint32Vector(key).size()) + ") of subbands (expected " + boost::lexical_cast<string>(nrSubbands()) + ')');
+}
+
+
+void CS1_Parset::check() const
+{
+  checkSubbandCount("Observation.beamList");
+  checkSubbandCount("Observation.rspBoardList");
+  checkSubbandCount("Observation.rspSlotList");
 }
 
 
@@ -247,9 +235,9 @@ vector<double> CS1_Parset::getBeamDirection(const unsigned beam) const
   char buf[50];
   std::vector<double> beamDirs(2);
  
-  sprintf(buf,"Observation.Beam[%d].angle1", beam);
+  sprintf(buf, "Observation.Beam[%d].angle1", beam);
   beamDirs[0] = getDouble(buf);
-  sprintf(buf,"Observation.Beam[%d].angle2", beam);
+  sprintf(buf, "Observation.Beam[%d].angle2", beam);
   beamDirs[1] = getDouble(buf);
 
   return beamDirs;
diff --git a/Appl/CEP/CS1/CS1_Run/src/CS1.parset b/Appl/CEP/CS1/CS1_Run/src/CS1.parset
index f1c9bbd67969f71bc1d16869c6b6ec35116eeb5a..e4de515ffd327f008ffb9fec233b118994bf9419 100644
--- a/Appl/CEP/CS1/CS1_Run/src/CS1.parset
+++ b/Appl/CEP/CS1/CS1_Run/src/CS1.parset
@@ -12,9 +12,6 @@
 
 OLAP.OLAP_Conn.BGLProc_Storage_Ports = [8300..8363]
 
-# should be one of NULL(inputFromMemory), FILE, TCP, UDP, ETHERNET
-OLAP.OLAP_Conn.station_Input_Transport = NULL
-
 # should be one of ZOID, FCNP, TCP, NULL
 # BGLProc doesn't open the parset file!
 OLAP.OLAP_Conn.IONProc_BGLProc_Transport = FCNP
@@ -31,7 +28,6 @@ OLAP.BGLProc.nrPPFTaps=16
 OLAP.BGLProc.coresPerPset = 64
 OLAP.BGLProc.maxConcurrentComm = 1
 
-OLAP.IONProc.useGather = T
 OLAP.IONProc.integrationSteps = 1
 
 OLAP.StorageProc.integrationSteps = 60
@@ -49,7 +45,7 @@ OLAP.nrSubbandsPerFrame = 36
 OLAP.nrBitsPerSample=16
 OLAP.nrSecondsOfBuffer = 4
 OLAP.maxNetworkDelay = 0.5 # 1 second extra added to compensate for timestamp bug
-OLAP.delayCompensation = F
+OLAP.delayCompensation = T
 
 Observation.sampleClock = 160
 
@@ -61,15 +57,15 @@ Observation.bandFilter = LBL_30_80
 #Observation.bandFilter = HB_170_230
 #Observation.bandFilter = HB_210_240
 
+Observation.Beam[0].angle1 = 0                  # NCP
+Observation.Beam[0].angle2 = 1.570796327
+Observation.Beam[1].angle1 = 5.2336866848083394 # Cygnus
+Observation.Beam[1].angle2 = 0.71094251447010637
+Observation.Beam[2].angle1 = 6.1234876806221052 # Cas A
+Observation.Beam[2].angle2 = 1.0265153995604648
 #Observation.Beam[1].angle1 = 0                  # NCP
 #Observation.Beam[1].angle2 = 1.570796327
-Observation.Beam[0].angle1 = 5.2336866848083394 # Cygnus
-Observation.Beam[0].angle2 = 0.71094251447010637
-#Observation.Beam[1].angle1 = 6.1234876806221052 # Cas A
-#Observation.Beam[1].angle2 = 1.0265153995604648
-#Observation.Beam[1].angle1 = 0                  # NCP
-Observation.Beam[1].angle2 = 1.570796327
-Observation.Beam[1].angle1 = 0.9293405574       # pulsar
+#Observation.Beam[1].angle1 = 0.9293405574       # pulsar
 #Observation.Beam[1].angle2 = 0.9525774347
 #Observation.Beam[1].angle1 = 4.5192832066722115 # Jupiter
 #Observation.Beam[1].angle2 = 5.893698795
@@ -81,12 +77,18 @@ Observation.Beam[1].angle1 = 0.9293405574       # pulsar
 #Observation.nrBeams = 1
 Observation.Beam[0].directionTypes = J2000
 Observation.Beam[1].directionTypes = J2000
+Observation.Beam[2].directionTypes = J2000
 #Observation.Beam[0].subbandList = [300..335]
 #Observation.Beam[1].beamletList = [0..1, 54..55, 108..109, 162..163]
 #Observation.Beam[0].beamletList = [0..35]
 
+#Observation.subbandList  = [300]
+#Observation.beamList     = [0]
+#Observation.rspBoardList = [0]
+#Observation.rspSlotList  = [0]
+
 Observation.subbandList  = [300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335]
-Observation.beamList     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+Observation.beamList     = [0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
 Observation.rspBoardList = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
 Observation.rspSlotList  = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]
 
diff --git a/Appl/CEP/CS1/CS1_Run/src/CS1_Parset.py b/Appl/CEP/CS1/CS1_Run/src/CS1_Parset.py
index f92c1e19cdcf720ab17bebd88a737a7f7259eb1f..b0261028a343ab9f468998d500aa861961151799 100644
--- a/Appl/CEP/CS1/CS1_Run/src/CS1_Parset.py
+++ b/Appl/CEP/CS1/CS1_Run/src/CS1_Parset.py
@@ -71,12 +71,8 @@ class CS1_Parset(LOFAR_Parset.Parset):
         self['Observation.stopTime'] = datetime.datetime.fromtimestamp(start + duration)
 
     def setIntegrationTime(self, integrationTime):
-	if self.getBool('OLAP.IONProc.useGather'):
-	  self['OLAP.IONProc.integrationSteps']     = integrationTime
-	  self['OLAP.StorageProc.integrationSteps'] = 1
-	else:
-	  self['OLAP.IONProc.integrationSteps']     = 1
-	  self['OLAP.StorageProc.integrationSteps'] = integrationTime
+	self['OLAP.IONProc.integrationSteps']     = integrationTime
+	self['OLAP.StorageProc.integrationSteps'] = 1
 
     def setMSName(self, msName):
         self['Observation.MSNameMask'] = msName
diff --git a/Appl/CEP/CS1/CS1_Run/src/CS1_Sections.py b/Appl/CEP/CS1/CS1_Run/src/CS1_Sections.py
index 84e358413b30801a34046e76671d43bb6a4abdc0..4bec28ef0a251c11c38829fdc9dc592832a740c7 100644
--- a/Appl/CEP/CS1/CS1_Run/src/CS1_Sections.py
+++ b/Appl/CEP/CS1/CS1_Run/src/CS1_Sections.py
@@ -128,8 +128,7 @@ class StorageSection(Section):
         self.parset['OLAP.OLAP_Conn.BGLProc_Storage_ServerHosts'] = '[' + ','.join(storageIPs) + ']'
 
     def run(self, runlog, noRuns, runCmd = None):
-	if self.parset.getBool("OLAP.IONProc.useGather"):
-	    noRuns = noRuns / self.parset.getInt32("OLAP.IONProc.integrationSteps");
+	noRuns = noRuns / self.parset.getInt32("OLAP.IONProc.integrationSteps");
         Section.run(self, runlog, noRuns, runCmd)
 
 class IONProcSection(Section):
diff --git a/Appl/CEP/CS1/CS1_Run/src/OLAP.parset b/Appl/CEP/CS1/CS1_Run/src/OLAP.parset
index f119b3fbbb23ae4864f1c9a7f3f0c09c388c1f10..3daf47b6005aa890707b6fc5d6c96b6597c1a651 100644
--- a/Appl/CEP/CS1/CS1_Run/src/OLAP.parset
+++ b/Appl/CEP/CS1/CS1_Run/src/OLAP.parset
@@ -484,10 +484,16 @@ PIC.Core.B03_RSP.dest.ports = [10.170.0.13:4346,10.170.0.14:4347]
 PIC.Core.B03_0.RSP = 0
 PIC.Core.B03_1.RSP = 1
 
-PIC.Core.Station.B00_0.RSP.ports = [10.170.0.1:4346,10.170.0.1:4347,10.170.0.1:4348,10.170.0.1:4349]
+#PIC.Core.Station.B00_0.RSP.ports = [10.170.0.1:4346,10.170.0.1:4347,10.170.0.1:4348,10.170.0.1:4349]
+#PIC.Core.Station.B00_1.RSP.ports = [10.170.0.2:4346,10.170.0.2:4347,10.170.0.2:4348,10.170.0.2:4349]
+#PIC.Core.IONProc.R000-B00[0].inputs = [B00_0/RSP0,B00_0/RSP1,B00_0/RSP2,B00_0/RSP3]
+#PIC.Core.IONProc.R000-B00[1].inputs = [B00_1/RSP0,B00_1/RSP1,B00_1/RSP2,B00_1/RSP3]
+
+#PIC.Core.Station.B00_0.RSP.ports = [tcp:10.170.0.1:4346]
+PIC.Core.Station.B00_0.RSP.ports = [10.170.0.1:4346]
 PIC.Core.Station.B00_1.RSP.ports = [10.170.0.2:4346,10.170.0.2:4347,10.170.0.2:4348,10.170.0.2:4349]
-PIC.Core.IONProc.R000-B00[0].inputs = [B00_0/RSP0,B00_0/RSP1,B00_0/RSP2,B00_0/RSP3]
-PIC.Core.IONProc.R000-B00[1].inputs = [B00_1/RSP0,B00_1/RSP1,B00_1/RSP2,B00_1/RSP3]
+PIC.Core.IONProc.R000-B00[0].inputs = [B00_0/RSP0]
+PIC.Core.IONProc.R000-B00[1].inputs = []
 
 PIC.Core.Station.B01_0.RSP.ports = [10.170.0.5:4346,10.170.0.5:4347,10.170.0.5:4348,10.170.0.5:4349]
 PIC.Core.Station.B01_1.RSP.ports = [10.170.0.6:4346,10.170.0.6:4347,10.170.0.6:4348,10.170.0.6:4349]
diff --git a/Appl/CEP/CS1/CS1_Storage/include/CS1_Storage/WH_SubbandWriter.h b/Appl/CEP/CS1/CS1_Storage/include/CS1_Storage/WH_SubbandWriter.h
index 1baabef12821ab6dcc4be9e2d4a95fa1409c5a38..57ab243295b97834f3a6d94cb617f770fa4d02a1 100644
--- a/Appl/CEP/CS1/CS1_Storage/include/CS1_Storage/WH_SubbandWriter.h
+++ b/Appl/CEP/CS1/CS1_Storage/include/CS1_Storage/WH_SubbandWriter.h
@@ -87,9 +87,7 @@ namespace LOFAR
 
       uint itsNrSubbandsPerPset;
       uint itsNrSubbandsPerStorage;
-      uint itsNrInputChannelsPerPset;
 
-      vector<uint> itsCurrentInputs;
       vector<uint> itsBandIDs;   ///< MS IDs of the frequency bands
       uint itsTimeCounter;       ///< Counts the time
       uint itsTimesToIntegrate;  ///< Number of timeSteps to integrate
diff --git a/Appl/CEP/CS1/CS1_Storage/src/AH_Storage.cc b/Appl/CEP/CS1/CS1_Storage/src/AH_Storage.cc
index 7f03b22d0fbd26bdc6ee84b7caa3130da8aa5580..e7c7e7f58351bc7c2ec0424cfedb57a85b3a5110 100644
--- a/Appl/CEP/CS1/CS1_Storage/src/AH_Storage.cc
+++ b/Appl/CEP/CS1/CS1_Storage/src/AH_Storage.cc
@@ -69,8 +69,6 @@ namespace LOFAR
       ASSERT(nrSubbands > 0);
       uint nrSubbandsPerPset = itsCS1PS->nrSubbandsPerPset();
       ASSERT(nrSubbandsPerPset > 0);
-      uint nrInputChannels = itsCS1PS->useGather() ? 1 : itsCS1PS->nrCoresPerPset();
-      ASSERT(nrInputChannels > 0);
       uint nrPsetsPerStorage = itsParamSet.getUint32("OLAP.psetsPerStorage");
       ASSERT(nrSubbands % nrSubbandsPerPset == 0);
       ASSERT(nrSubbands / nrSubbandsPerPset % nrPsetsPerStorage == 0);
@@ -79,7 +77,6 @@ namespace LOFAR
       // create. Each WH_SubbandWriter will write up to \a nrSubbandsPerPset
       // to an AIPS++ Measurement Set.
       uint nrWriters = nrSubbands / nrSubbandsPerPset / nrPsetsPerStorage;
-      uint maxConcurrent = itsCS1PS->getInt32("OLAP.BGLProc.maxConcurrentComm");
       LOG_TRACE_VAR_STR("Creating " << nrWriters << " subband writers ...");
 
       for (unsigned nw = 0; nw < nrWriters; ++nw)
@@ -106,19 +103,9 @@ namespace LOFAR
         // Each writer will run on a separate node.
         step.runOnNode(nw);
         // Connect to BG output
-	for (unsigned pset = 0; pset < nrPsetsPerStorage; pset ++) {
-	  vector<int> channels;
-	  for (unsigned core = 0; core < nrInputChannels; core++) {
-	    int channel = pset * nrInputChannels + core;
-	    step.getInDataManager(channel).setInBuffer(channel, false, 10);
-	    itsStub->connect(nw, channel, step.getInDataManager(channel), channel);
-	    channels.push_back(channel);
-	  }
-	  // limit the number of concurrent incoming connections
-	  // actually, we would like to set the number of concurrent
-	  // communications for all psets together, but we cannot express this
-	  // thus we do this for each pset
-	  step.getInDataManager(0).setInRoundRobinPolicy(channels, maxConcurrent);
+	for (unsigned channel = 0; channel < nrPsetsPerStorage; channel ++) {
+	  step.getInDataManager(channel).setInBuffer(channel, false, 10);
+	  itsStub->connect(nw, channel, step.getInDataManager(channel), channel);
 	}
       }
 #ifdef HAVE_MPI
diff --git a/Appl/CEP/CS1/CS1_Storage/src/WH_SubbandWriter.cc b/Appl/CEP/CS1/CS1_Storage/src/WH_SubbandWriter.cc
index 62517a6ae2f9604019907cd0f641f9ae1a4f8d6a..0fb3bdeefee07c1bf22e0dd624e757595797af3d 100644
--- a/Appl/CEP/CS1/CS1_Storage/src/WH_SubbandWriter.cc
+++ b/Appl/CEP/CS1/CS1_Storage/src/WH_SubbandWriter.cc
@@ -32,7 +32,6 @@
 // Application specific includes
 #include <CS1_Storage/WH_SubbandWriter.h>
 #include <CS1_Interface/DH_Visibilities.h>
-#include <CS1_Interface/BGL_Mapping.h>
 #include <CS1_Storage/MSWriter.h>
 #include <tinyCEP/Sel_RoundRobin.h>
 #include <Transport/TH_MPI.h>
@@ -52,7 +51,7 @@ namespace LOFAR
     WH_SubbandWriter::WH_SubbandWriter(const string& name, 
                                        const vector<uint>& subbandID,
 				       CS1_Parset *pset) 
-      : WorkHolder(pset->nrInputsPerStorageNode(), 0, name, "WH_SubbandWriter"),
+      : WorkHolder(pset->nrPsetsPerStorage(), 0, name, "WH_SubbandWriter"),
         itsCS1PS(pset),
         itsSubbandIDs(subbandID),
         itsTimeCounter(0),
@@ -142,8 +141,6 @@ namespace LOFAR
                 antPos.size() << " == " << 3 * itsNStations);
       itsNrSubbandsPerPset	= itsCS1PS->nrSubbandsPerPset();
       itsNrSubbandsPerStorage	= itsNrSubbandsPerPset * itsCS1PS->nrPsetsPerStorage();
-      itsNrInputChannelsPerPset = itsCS1PS->useGather() ? 1 : itsCS1PS->nrCoresPerPset();
-      itsCurrentInputs.resize(itsNrSubbandsPerStorage / itsNrSubbandsPerPset, 0);
       LOG_TRACE_VAR_STR("SubbandsPerStorage = " << itsNrSubbandsPerStorage);
       vector<string> storageStationNames = itsCS1PS->getStringVector("OLAP.storageStationNames");
 
@@ -185,7 +182,7 @@ namespace LOFAR
       // correct indices for the reference frequencies are in the vector of
       // subbandIDs.      
       itsBandIDs.resize(itsNrSubbandsPerStorage);
-      double chanWidth = itsCS1PS->chanWidth();
+      double chanWidth = itsCS1PS->channelWidth();
       LOG_TRACE_VAR_STR("chanWidth = " << chanWidth);
 
       for (uint sb = 0; sb < itsNrSubbandsPerStorage; ++sb) {
@@ -241,14 +238,8 @@ namespace LOFAR
       for (uint sb = 0; sb < itsNrSubbandsPerStorage; ++ sb) {
         // find out from which input channel we should read
 	unsigned pset = sb / itsNrSubbandsPerPset;
-	unsigned core = itsCurrentInputs[pset];
 
-	if (!itsCS1PS->useGather())
-	  core = BGL_Mapping::mapCoreOnPset(core, pset);
-
-	unsigned inputChannel = core + pset * itsNrInputChannelsPerPset;
-
-	DH_Visibilities			    *inputDH	= static_cast<DH_Visibilities *>(getDataManager().getInHolder(inputChannel));
+	DH_Visibilities			    *inputDH	= static_cast<DH_Visibilities *>(getDataManager().getInHolder(pset));
         DH_Visibilities::NrValidSamplesType *valSamples = &inputDH->getNrValidSamples(0, 0);
   	DH_Visibilities::VisibilityType     *newVis	= &inputDH->getVisibility(0, 0, 0, 0);
        
@@ -299,11 +290,7 @@ namespace LOFAR
 	}
 #endif
 
-	getDataManager().readyWithInHolder(inputChannel);
-
-	// select next channel
-	if (++ itsCurrentInputs[pset] == itsNrInputChannelsPerPset)
-	  itsCurrentInputs[pset] = 0;
+	getDataManager().readyWithInHolder(pset);
       }
 
       // Update the time counter.