diff --git a/RTCP/Cobalt/CoInterface/src/DataFactory.cc b/RTCP/Cobalt/CoInterface/src/DataFactory.cc
index 2ccadbfba503997ae93d563b665c642f71463234..1f6440f3db0fd05e676e672b08fe44898675b1a1 100644
--- a/RTCP/Cobalt/CoInterface/src/DataFactory.cc
+++ b/RTCP/Cobalt/CoInterface/src/DataFactory.cc
@@ -53,8 +53,6 @@ namespace LOFAR
         return new FinalBeamFormedData(nrSamples, nrSubbands, nrChannels, allocator);
       }
 
-      case TRIGGER_DATA: return new TriggerData;
-
       default: THROW(CoInterfaceException, "unsupported output type");
       }
 
diff --git a/RTCP/Cobalt/CoInterface/src/OutputTypes.h b/RTCP/Cobalt/CoInterface/src/OutputTypes.h
index bc1c08d40376e4d7a1df196fb5a10257bf2b7fef..3b9b054961df06dd6b29176073188dd4e4b59bcb 100644
--- a/RTCP/Cobalt/CoInterface/src/OutputTypes.h
+++ b/RTCP/Cobalt/CoInterface/src/OutputTypes.h
@@ -29,26 +29,9 @@ namespace LOFAR
     enum OutputType
     {
       CORRELATED_DATA = 1,
-      BEAM_FORMED_DATA,
-      TRIGGER_DATA,
-
-      // define LAST and FIRST in the enum to make them valid values within the
-      // allocated range for the enum (=minimal number of bits to store all values)
-      LAST_OUTPUT_TYPE,
-      FIRST_OUTPUT_TYPE = 1
+      BEAM_FORMED_DATA
     };
 
-    inline OutputType operator ++ (OutputType &outputType) // prefix ++
-    {
-      return (outputType = static_cast<OutputType>(outputType + 1));
-    }
-
-
-    inline OutputType operator ++ (OutputType &outputType, int) // postfix ++
-    {
-      return static_cast<OutputType>((outputType = static_cast<OutputType>(outputType + 1)) - 1);
-    }
-
   } // namespace Cobalt
 } // namespace LOFAR
 
diff --git a/RTCP/Cobalt/CoInterface/src/Parset.cc b/RTCP/Cobalt/CoInterface/src/Parset.cc
index 539b8f3010305aeb53b4f472b74c456bc756b6ea..74bc6d771c2fdcb23c61a93574eaeafb174d1c3f 100644
--- a/RTCP/Cobalt/CoInterface/src/Parset.cc
+++ b/RTCP/Cobalt/CoInterface/src/Parset.cc
@@ -679,24 +679,6 @@ namespace LOFAR
 
     void Parset::check() const
     {
-      checkInputConsistency();
-      checkVectorLength("Observation.beamList", nrSubbands());
-
-      for (OutputType outputType = FIRST_OUTPUT_TYPE; outputType < LAST_OUTPUT_TYPE; outputType++)
-        if (outputThisType(outputType)) {
-          std::string prefix = keyPrefix(outputType);
-          unsigned expected = nrStreams(outputType);
-
-          checkVectorLength(prefix + ".locations", expected);
-          checkVectorLength(prefix + ".filenames", expected);
-        }
-
-      if (CNintegrationSteps() % dedispersionFFTsize() != 0)
-        THROW(CoInterfaceException, "OLAP.CNProc.integrationSteps (" << CNintegrationSteps() << ") must be divisible by OLAP.CNProc.dedispersionFFTsize (" << dedispersionFFTsize() << ')');
-
-      if (outputThisType(BEAM_FORMED_DATA) || outputThisType(TRIGGER_DATA)) {
-        // second transpose is performed
-      }
     }
 
 
@@ -725,7 +707,6 @@ namespace LOFAR
       switch (outputType) {
       case CORRELATED_DATA:   return "Observation.DataProducts.Output_Correlated";
       case BEAM_FORMED_DATA:  return "Observation.DataProducts.Output_Beamformed";
-      case TRIGGER_DATA:      return "Observation.DataProducts.Output_Trigger";
       default:                THROW(CoInterfaceException, "Unknown output type");
       }
     }
@@ -734,9 +715,12 @@ namespace LOFAR
     std::string Parset::getHostName(OutputType outputType, unsigned streamNr) const
     {
       if (outputType == CORRELATED_DATA)
-        return settings.correlator.files[streamNr].location.host; // TODO: add to check() to reject parset or obsconfig early to avoid segfault here if streamNr >= settings.correlator.files.size()
+        return settings.correlator.files[streamNr].location.host;
+
+      if (outputType == BEAM_FORMED_DATA)
+        return settings.beamFormer.files[streamNr].location.host;
 
-      return StringUtil::split(getStringVector(keyPrefix(outputType) + ".locations", true)[streamNr], ':')[0];
+      return "unknown";
     }
 
 
@@ -745,16 +729,10 @@ namespace LOFAR
       if (outputType == CORRELATED_DATA)
         return settings.correlator.files[streamNr].location.filename;
 
-      const std::string keyname = keyPrefix(outputType) + ".filenames";
-      if (!isDefined(keyname))
-        THROW(CoInterfaceException, "Could not find filename key: " << keyname);
-
-      const std::vector<std::string> filenames = getStringVector(keyname, true);
+      if (outputType == BEAM_FORMED_DATA)
+        return settings.beamFormer.files[streamNr].location.filename;
 
-      if (streamNr >= filenames.size())
-        THROW(CoInterfaceException, "Filename index out of bounds for key " << keyname << ": " << streamNr << " >= " << filenames.size());
-
-      return filenames[streamNr];
+      return "unknown";
     }
 
 
@@ -763,7 +741,10 @@ namespace LOFAR
       if (outputType == CORRELATED_DATA)
         return settings.correlator.files[streamNr].location.directory;
 
-      return StringUtil::split(getStringVector(keyPrefix(outputType) + ".locations", true)[streamNr], ':')[1];
+      if (outputType == BEAM_FORMED_DATA)
+        return settings.beamFormer.files[streamNr].location.directory;
+
+      return "unknown";
     }
 
 
@@ -773,9 +754,8 @@ namespace LOFAR
         return 0;
 
       switch (outputType) {
-      case CORRELATED_DATA:   return settings.correlator.files.size();
-      case BEAM_FORMED_DATA:        // FALL THROUGH
-      case TRIGGER_DATA:      return settings.beamFormer.files.size();
+      case CORRELATED_DATA:    return settings.correlator.files.size();
+      case BEAM_FORMED_DATA:   return settings.beamFormer.files.size();
       default:                 THROW(CoInterfaceException, "Unknown output type");
       }
     }
diff --git a/RTCP/Cobalt/OutputProc/src/outputProc.cc b/RTCP/Cobalt/OutputProc/src/outputProc.cc
index c0731aaa771bc33118545a5aa06145e934619e5a..048f061da65c3f54519d786919c93eabd36c4707 100644
--- a/RTCP/Cobalt/OutputProc/src/outputProc.cc
+++ b/RTCP/Cobalt/OutputProc/src/outputProc.cc
@@ -139,14 +139,29 @@ void process(Stream &controlStream, size_t myRank)
 
     vector<SmartPtr<SubbandWriter> > subbandWriters;
 
-    for (OutputType outputType = FIRST_OUTPUT_TYPE; outputType < LAST_OUTPUT_TYPE; outputType++) 
-    {
-      for (unsigned streamNr = 0; streamNr < parset.nrStreams(outputType); streamNr++) 
+    // Process correlated data
+    if (parset.settings.correlator.enabled) {
+      for (size_t fileIdx = 0; fileIdx < parset.settings.correlator.files.size(); ++fileIdx)
+      {
+        if (parset.settings.correlator.files[fileIdx].location.host != myHostName) 
+          continue;
+
+        SubbandWriter *writer = startWriter(parset, CORRELATED_DATA, fileIdx);
+        if (writer == NULL)
+          continue;
+
+        subbandWriters.push_back(writer);
+      }
+    }
+
+    // Process beam-formed data
+    if (parset.settings.beamFormer.enabled) {
+      for (size_t fileIdx = 0; fileIdx < parset.settings.beamFormer.files.size(); ++fileIdx)
       {
-        if (parset.getHostName(outputType, streamNr) != myHostName) 
+        if (parset.settings.beamFormer.files[fileIdx].location.host != myHostName) 
           continue;
 
-        SubbandWriter *writer = startWriter(parset, outputType, streamNr);
+        SubbandWriter *writer = startWriter(parset, BEAM_FORMED_DATA, fileIdx);
         if (writer == NULL)
           continue;