diff --git a/RTCP/Cobalt/InputProc/test/tMPITransfer.cc b/RTCP/Cobalt/InputProc/test/tMPITransfer.cc
index 9e0b93f26c77127ffc1c2ef467e88cb744d894ac..95f57d4af8ea167982544885b4a9a15bd12c4d00 100644
--- a/RTCP/Cobalt/InputProc/test/tMPITransfer.cc
+++ b/RTCP/Cobalt/InputProc/test/tMPITransfer.cc
@@ -120,13 +120,13 @@ void sender()
       LOG_INFO_STR("Detected " << s);
       LOG_INFO_STR("Connecting to receivers to send " << from << " to " << to);
       SampleBufferReader<SampleT> reader(s, keys(beamletDistribution), 0.1);
-      MPISendStation<SampleT> sender(s, rank, beamletDistribution);
+      MPISendStation sender(s, rank, beamletDistribution);
 
       LOG_INFO_STR("Sending to receivers");
       for (TimeStamp current = from; current + blockSize < to; current += blockSize) {
         SmartPtr<struct SampleBufferReader<SampleT>::Block> block(reader.block(current, current + blockSize));
 
-        sender.sendBlock(*block);
+        sender.sendBlock<SampleT>(*block);
       }
 
       generator.stop();
@@ -148,31 +148,39 @@ void receiver()
     stationRanks[i] = i;
 
   {
-    MPIReceiveStations<SampleT> receiver(stationRanks, beamlets[receiverNr], blockSize);
+    MPIReceiveStations receiver(stationRanks, beamlets[receiverNr], blockSize);
+    const size_t nrStations = stationRanks.size();
+    const size_t nrBeamlets = beamlets[receiverNr].size();
 
-    size_t block = 0;
+    MultiDimArray<struct MPIReceiveStations::Beamlet<SampleT>, 2> block(boost::extents[nrStations][nrBeamlets]);
+
+    for (size_t s = 0; s < nrStations; ++s) {
+      for (size_t b = 0; b < nrBeamlets; ++b) {
+        block[s][b].samples.resize(blockSize);
+      }
+    }
+
+    size_t blockIdx = 0;
 
     for(TimeStamp current = from; current + blockSize < to; current += blockSize) {
-      receiver.receiveBlock();
+      receiver.receiveBlock<SampleT>(block);
 
       // data is now in receiver.lastBlock
 
       // calculate flagging average
-      const size_t nrStations = stationRanks.size();
-      const size_t nrBeamlets = beamlets[receiverNr].size();
       const size_t nrSamples = nrStations * nrBeamlets * blockSize;
       size_t nrFlaggedSamples = 0;
 
       for (size_t s = 0; s < nrStations; ++s) {
         for (size_t b = 0; b < nrBeamlets; ++b) {
-          nrFlaggedSamples = receiver.lastBlock[s].flags[b].count();
+          nrFlaggedSamples = block[s][b].flags.count();
         }
       }
 
       float flagPerc = 100.0f * nrFlaggedSamples / nrSamples;
 
-      LOG_INFO_STR("Receiver " << rank << " received block " << block << " flags: " << flagPerc << "%" );
-      ++block;
+      LOG_INFO_STR("Receiver " << rank << " received block " << blockIdx << " flags: " << flagPerc << "%" );
+      ++blockIdx;
     }
   }