diff --git a/RTCP/Cobalt/InputProc/src/Station/generate.cc b/RTCP/Cobalt/InputProc/src/Station/generate.cc
index 81a08b72fc948f7f251f64feed912cbab14f3bb6..51247aefd1657a0cc3b8da2f66507bfdcb40928c 100644
--- a/RTCP/Cobalt/InputProc/src/Station/generate.cc
+++ b/RTCP/Cobalt/InputProc/src/Station/generate.cc
@@ -48,6 +48,18 @@ void usage()
   cerr << endl;
   cerr << "-h              Show this help." << endl;
   cerr << "-p parset       Read configuration from given (augmented) parset." << endl;
+  cerr << "-s stations     Override station list (comma-separated)." << endl;
+}
+
+// Create a skeleton parset
+void populateParsetSkeleton(Parset &ps)
+{
+  // Add one beam
+  ps.add("Observation.nrBeams", "1");
+  ps.add("Observation.Beam[0].subbandList", "[0]");
+
+  // Add at least one station
+  ps.add("Observation.VirtualInstrument.stationList", "[CS001]");
 }
 
 int main( int argc, char **argv )
@@ -55,13 +67,15 @@ int main( int argc, char **argv )
   INIT_LOGGER( "generator" );
 
   int opt;
-  string parsetFilename;
+  Parset ps;
+
+  populateParsetSkeleton(ps);
 
   // parse all command-line options
   while ((opt = getopt(argc, argv, "hp:")) != -1) {
     switch (opt) {
     case 'p':
-      parsetFilename = optarg;
+      ps.adoptFile(optarg);
       break;
 
     case 'h':
@@ -80,11 +94,8 @@ int main( int argc, char **argv )
     exit(1);
   }
 
-  // check for mandatory parameters
-  if (parsetFilename == "") {
-    usage();
-    exit(1);
-  }
+  // regenerate ps.settings
+  ps.updateSettings();
 
   LOFAR::Cobalt::MPI mpi;
   mpi.init(argc, argv);
@@ -93,10 +104,7 @@ int main( int argc, char **argv )
   omp_set_nested(true);
   omp_set_num_threads(16);
 
-  Parset ps(parsetFilename);
-
   struct BoardMode mode(ps.settings.nrBitsPerSample, ps.settings.clockMHz);
-
   const TimeStamp from(time(0), 3, mode.clockHz());
   const TimeStamp to(0);
 
@@ -108,14 +116,20 @@ int main( int argc, char **argv )
     if (static_cast<int>(f) % mpi.size() != mpi.rank())
       continue;
 
+    // Skip stations without any boards defined
+    if (field.inputStreams.size() == 0) {
+      LOG_WARN_STR("[" << field.name << "] No streams defined. Ignoring.");
+      continue;
+    }
+
     vector< SmartPtr<Stream> > outputStreams;
 
     for (size_t s = 0; s < field.inputStreams.size(); ++s) {
       const string& desc = field.inputStreams[s];
 
-      LOG_INFO_STR("Setting up stream to " << desc);
+      LOG_INFO_STR("[" << field.name << "] Creating stream to " << desc);
       outputStreams.push_back(createStream(desc, false));
-      LOG_INFO_STR("Stream created to " << desc);
+      LOG_INFO_STR("[" << field.name << "] Created stream to " << desc);
     }
 
     struct StationID stationID(field.name);