diff --git a/CEP/BB/MWCommon/include/MWCommon/VdsDesc.h b/CEP/BB/MWCommon/include/MWCommon/VdsDesc.h
index aefa2608557a4a08091c6f4971deffa0dc534b73..a90fe750c78951eca6ba01791846ca6e3b263e15 100644
--- a/CEP/BB/MWCommon/include/MWCommon/VdsDesc.h
+++ b/CEP/BB/MWCommon/include/MWCommon/VdsDesc.h
@@ -33,8 +33,7 @@ namespace LOFAR { namespace CEP {
   {
   public:
     /// Construct with a description of the entire visibility data set.
-    /// Also supply a vector mapping antenna name to number.
-    VdsDesc (const VdsPartDesc&, const std::vector<std::string>& antNames);
+    explicit VdsDesc (const VdsPartDesc&);
 
     /// Construct from the given parameterset.
     /// @{
@@ -55,17 +54,6 @@ namespace LOFAR { namespace CEP {
     const VdsPartDesc& getDesc() const
       { return itsDesc; }
 
-    /// Get antennas names.
-    const std::vector<std::string>& getAntNames() const
-      { return itsAntNames; }
-
-    /// Convert an antenna name to its index.
-    /// -1 is returned if not found.
-    int antNr (const std::string& name) const;
-
-    /// Convert an antenna regex to indices.
-    std::vector<int> antNrs (const casa::Regex& names) const;
-
     /// Write it in parset format.
     void write (std::ostream& os) const;
 
@@ -75,7 +63,6 @@ namespace LOFAR { namespace CEP {
 
     VdsPartDesc              itsDesc;
     std::vector<VdsPartDesc> itsParts;
-    std::vector<std::string> itsAntNames;     //# maps antennanr to name
   };
 
 }} /// end namespaces
diff --git a/CEP/BB/MWCommon/include/MWCommon/VdsPartDesc.h b/CEP/BB/MWCommon/include/MWCommon/VdsPartDesc.h
index 0deb1d5f1e16a93255095f5f4fd36e4af08c0dd7..522d29bcad8d9c173d7b6692ee7f92303fbc60be 100644
--- a/CEP/BB/MWCommon/include/MWCommon/VdsPartDesc.h
+++ b/CEP/BB/MWCommon/include/MWCommon/VdsPartDesc.h
@@ -29,15 +29,14 @@ namespace LOFAR { namespace CEP {
   /// The description of the VDS also contains info about the time,
   /// frequency, and baseline domain of the visibility data.
   ///
-  /// Currently the information is made persistent in a LOFAR .parset file.
-  /// In the future it needs to use the Centrol Processor Resource Manager.
+  /// The information is made persistent in a LOFAR .parset file.
 
   class VdsPartDesc
   {
   public:
     /// Construct an empty object.
     VdsPartDesc()
-      : itsStartTime(0), itsEndTime(0)
+      : itsStartTime(0), itsStepTime(1)
       {}
 
     /// Construct from the given parameterset.
@@ -47,15 +46,11 @@ namespace LOFAR { namespace CEP {
     void setName (const std::string& name, const std::string& fileSys);
 
     /// Set the start and end time.
-    void setTimes (double startTime, double endTime);
+    void setTimes (double startTime, double endTime, double stepTime);
 
     /// Add a band.
     void addBand (int nchan, double startFreq, double endFreq);
 
-    /// Set the baselines.
-    void setBaselines (const std::vector<int>& ant1,
-		       const std::vector<int>& ant2);
-
     /// Write it in parset format.
     void write (std::ostream& os, const std::string& prefix) const;
 
@@ -69,6 +64,8 @@ namespace LOFAR { namespace CEP {
       { return itsStartTime; }
     double getEndTime() const
       { return itsEndTime; }
+    double getStepTime() const
+      { return itsStepTime; }
     int getNBand() const
       { return itsNChan.size(); }
     const std::vector<int>& getNChan() const
@@ -77,10 +74,6 @@ namespace LOFAR { namespace CEP {
       { return itsStartFreqs; }
     const std::vector<double>& getEndFreqs() const
       { return itsEndFreqs; }
-    const std::vector<int>& getAnt1() const
-      { return itsAnt1; }
-    const std::vector<int>& getAnt2() const
-      { return itsAnt2; }
     /// @}
 
   private:
@@ -88,11 +81,10 @@ namespace LOFAR { namespace CEP {
     std::string itsFileSys;    //# name of file system the VDS resides on
     double      itsStartTime;
     double      itsEndTime;
-    std::vector<int>         itsNChan;        //# nr of channels per band
-    std::vector<double>      itsStartFreqs;   //# start freq of each band
-    std::vector<double>      itsEndFreqs;     //# end freq of each band
-    std::vector<int>         itsAnt1;         //# 1st antenna of each baseline
-    std::vector<int>         itsAnt2;         //# 2nd antenna of each baseline
+    double      itsStepTime;
+    std::vector<int>    itsNChan;        //# nr of channels per band
+    std::vector<double> itsStartFreqs;   //# start freq of each channel
+    std::vector<double> itsEndFreqs;     //# end freq of each channel
   };
     
 }} /// end namespaces
diff --git a/CEP/BB/MWCommon/src/VdsDesc.cc b/CEP/BB/MWCommon/src/VdsDesc.cc
index 01aa64dd4d38e5e310902e08fd4ba563b48a1bc9..13766901cf0ea7e4769f9bc28b1ce300639b4acb 100644
--- a/CEP/BB/MWCommon/src/VdsDesc.cc
+++ b/CEP/BB/MWCommon/src/VdsDesc.cc
@@ -16,10 +16,8 @@ using namespace std;
 
 namespace LOFAR { namespace CEP {
 
-  VdsDesc::VdsDesc (const VdsPartDesc& desc,
-                    const vector<string>& antNames)
-    : itsDesc     (desc),
-      itsAntNames (antNames)
+    VdsDesc::VdsDesc (const VdsPartDesc& desc)
+    : itsDesc (desc)
   {}
 
   VdsDesc::VdsDesc (const string& parsetName)
@@ -30,7 +28,6 @@ namespace LOFAR { namespace CEP {
   void VdsDesc::init (const ParameterSet& parset)
   {
     itsDesc = VdsPartDesc (parset);
-    itsAntNames = parset.getStringVector ("AntNames");
     int npart = parset.getInt32 ("NParts");
     for (int i=0; i<npart; ++i) {
       ostringstream prefix;
@@ -43,7 +40,6 @@ namespace LOFAR { namespace CEP {
   void VdsDesc::write (ostream& os) const
   {
     itsDesc.write (os, "");
-    os << "AntNames = " << itsAntNames << endl;
     os << "NParts = " << itsParts.size() << endl;
     for (unsigned i=0; i<itsParts.size(); ++i) {
       ostringstream prefix;
@@ -52,27 +48,6 @@ namespace LOFAR { namespace CEP {
     }
   }
 
-  int VdsDesc::antNr (const string& name) const
-  {
-    vector<string>::const_iterator inx =
-                 find (itsAntNames.begin(), itsAntNames.end(), name);
-    if (inx == itsAntNames.end()) {
-      return -1;
-    }
-    return inx - itsAntNames.begin();
-  }
-
-  vector<int> VdsDesc::antNrs (const casa::Regex& names) const
-  {
-    vector<int> result;
-    for (unsigned i=0; i<itsAntNames.size(); ++i) {
-      if (casa::String(itsAntNames[i]).matches (names)) {
-	result.push_back (i);
-      }
-    }
-    return result;
-  }
-
 //   int VdsDesc::findPart (const string& fileSystem,
 // 			     const vector<int>& done) const
 //   {
diff --git a/CEP/BB/MWCommon/src/VdsPartDesc.cc b/CEP/BB/MWCommon/src/VdsPartDesc.cc
index 486b9eddb2b03cf8ca15f1795e721c06da91dbbf..e66201cd7a2bbfabc8797eba6814bb8743acb4b9 100644
--- a/CEP/BB/MWCommon/src/VdsPartDesc.cc
+++ b/CEP/BB/MWCommon/src/VdsPartDesc.cc
@@ -18,28 +18,30 @@ namespace LOFAR { namespace CEP {
 
   VdsPartDesc::VdsPartDesc (const ParameterSet& parset)
   {
-    itsName = parset.getString ("Name");
-    itsFileSys = parset.getString ("FileSys");
-    itsStartTime = parset.getDouble ("StartTime");
-    itsEndTime = parset.getDouble ("EndTime");
-    itsNChan = parset.getInt32Vector ("NChan");
-    itsStartFreqs = parset.getDoubleVector ("StartFreqs");
-    itsEndFreqs = parset.getDoubleVector ("EndFreqs");
-    itsAnt1 = parset.getInt32Vector ("Ant1");
-    itsAnt2 = parset.getInt32Vector ("Ant2");
+    itsName       = parset.getString ("Name");
+    itsFileSys    = parset.getString ("FileSys", "");
+    itsStartTime  = parset.getDouble ("StartTime");
+    itsEndTime    = parset.getDouble ("EndTime");
+    itsStepTime   = parset.getDouble ("StepTime");
+    itsNChan      = parset.getInt32Vector ("NChan", vector<int32>());
+    itsStartFreqs = parset.getDoubleVector ("StartFreqs", vector<double>());
+    itsEndFreqs   = parset.getDoubleVector ("EndFreqs", vector<double>());
   }
 
   void VdsPartDesc::write (std::ostream& os, const std::string& prefix) const
   {
-    os << prefix << "Name = " << itsName << endl;
-    os << prefix << "FileSys = " << itsFileSys << endl;
-    os << prefix << "StartTime = " << itsStartTime << endl;
-    os << prefix << "EndTime = " << itsEndTime << endl;
-    os << prefix << "NChan = " << itsNChan << endl;
-    os << prefix << "StartFreqs = " << itsStartFreqs << endl;
-    os << prefix << "EndFreqs = " << itsEndFreqs << endl;
-    os << prefix << "Ant1 = " << itsAnt1 << endl;
-    os << prefix << "Ant2 = " << itsAnt2 << endl;
+    os << prefix << "Name       = " << itsName << endl;
+    if (! itsFileSys.empty()) {
+      os << prefix << "FileSys    = " << itsFileSys << endl;
+    }
+    os << prefix << "StartTime  = " << itsStartTime << endl;
+    os << prefix << "EndTime    = " << itsEndTime << endl;
+    os << prefix << "StepTime   = " << itsStepTime << endl;
+    if (! itsNChan.empty()) {
+      os << prefix << "NChan      = " << itsNChan << endl;
+      os << prefix << "StartFreqs = " << itsStartFreqs << endl;
+      os << prefix << "EndFreqs   = " << itsEndFreqs << endl;
+    }
   }
 
   void VdsPartDesc::setName (const std::string& name,
@@ -49,24 +51,22 @@ namespace LOFAR { namespace CEP {
     itsFileSys = fileSys;
   }
 
-  void VdsPartDesc::setTimes (double startTime, double endTime)
+    void VdsPartDesc::setTimes (double startTime, double endTime, double stepTime)
   {
     itsStartTime = startTime;
     itsEndTime   = endTime;
+    itsStepTime  = stepTime;
   }
 
   void VdsPartDesc::addBand (int nchan, double startFreq, double endFreq)
   {
     itsNChan.push_back (nchan);
-    itsStartFreqs.push_back (startFreq);
-    itsEndFreqs.push_back (endFreq);
-  }
-
-  void VdsPartDesc::setBaselines (const std::vector<int>& ant1,
-			      const std::vector<int>& ant2)
-  {
-    itsAnt1 = ant1;
-    itsAnt2 = ant2;
+    double step = (endFreq-startFreq)/nchan;
+    for (int i=0; i<nchan; ++i) {
+      itsStartFreqs.push_back (startFreq);
+      startFreq += step;
+      itsEndFreqs.push_back (startFreq);
+    }
   }
 
 }} // end namespaces
diff --git a/CEP/BB/MWCommon/src/finddproc.cc b/CEP/BB/MWCommon/src/finddproc.cc
index d114c76512cf451c5b8ec6b0d90401bdc52f81da..0d7b04d1308401f499e3acb65ebbe5d3f7dbf3d6 100644
--- a/CEP/BB/MWCommon/src/finddproc.cc
+++ b/CEP/BB/MWCommon/src/finddproc.cc
@@ -42,7 +42,7 @@ void makeFile (const string& vdsName, const string& clusterName)
 	     " for dataset part " << iter->getName() <<
 	     " on file system " << iter->getFileSys());
     }
-    cout << nodes[winx].getName() << endl;
+    cout << nodes[winx].getName() << '#' << iter->getName() << endl;
     // Increment the load to indicate it is already in use. In that way it
     // will only be used again if all other possible nodes are used as well.
     workers.incrLoad (winx);
diff --git a/CEP/BB/MWCommon/src/socketrun b/CEP/BB/MWCommon/src/socketrun
index e42829af3cf3f7a702dd5028f82eb23077e45ab0..04cd6e44e95161f3a3ce2d416b588328088cac51 100755
--- a/CEP/BB/MWCommon/src/socketrun
+++ b/CEP/BB/MWCommon/src/socketrun
@@ -11,7 +11,7 @@
 # This script starts a distributed process to process a datasets.
 # The processes will use sockets for communication.
 #
-# run as:  socketrun dry hfn port program [arg1 arg2 ...]
+# run as:  socketrun dry hfn port logfile program [arg1 arg2 ...]
 
 dry=$1
 shift
@@ -19,6 +19,8 @@ hfn=$1
 shift
 port=$1
 shift
+logfile=$1
+shift
 program=$1
 shift
 
@@ -27,14 +29,20 @@ np=`wc -l $hfn | awk '{print $1}'`
 # The first host is the master one.
 masterhost=
 rank=0
-for host in `cat $hfn`
+for inline in `cat $hfn`
 do
+  host=`echo $inline | sed -e 's%#.*%%'`
+  part=`echo $inline | sed -e 's%.*#%%'`
   if test "$masterhost" = ""; then
     masterhost=$host
   fi
-  echo "ssh $host $program socket $masterhost $port $np $rank"
+  echo "ssh $host $program socket $masterhost $port $np $rank $part" "$@"
   if test $dry = 0; then
-    ssh $host $program socket $masterhost $port $np $rank &
+    if test "$logfile" = ""; then
+      ssh -x -f $host $program socket $masterhost $port $np $rank $part "$@"
+    else
+      ssh -x -f $host $program socket $masterhost $port $np $rank $part "$@" > $logfile-$rank 2>&1
+    fi
   fi
   rank=`expr $rank + 1`
 done
diff --git a/CEP/BB/MWCommon/src/startdistproc b/CEP/BB/MWCommon/src/startdistproc
index a425bc07368798901f3ad97c46b22bbf662b382d..a324196cd06cc6cafce246581f4155ca766e7aaf 100755
--- a/CEP/BB/MWCommon/src/startdistproc
+++ b/CEP/BB/MWCommon/src/startdistproc
@@ -8,10 +8,12 @@
 # $Id$
 
 
-# This script starts a distributed process to process a datasets.
+# This script starts a distributed process to process a dataset.
 # It can use sockets or MPI.
 # The VdsDesc and ClusterDesc files are used to determine on which nodes
 # the various processes need to be started.
+# Possible arguments can be given after the program namw. They are given as
+# arguments to the distributed programs.
 
 
 # Find the path used to start the script.
@@ -26,7 +28,8 @@ hfn=
 fdp=
 master=localhost
 extra=
-dry=1
+dry=0
+logfile=
 help=0
 program=
 if [ $# = 0 ]; then
@@ -51,6 +54,9 @@ do
     shift
     hfn="$1"
     shift
+  elif [ "$1" = "-nohfn" ]; then
+    shift
+    hfn=
   elif [ "$1" = "-fdp" ]; then
     shift
     fdp="$1"
@@ -61,6 +67,13 @@ do
   elif [ "$1" = "-nodry" ]; then
     shift
     dry=0
+  elif [ "$1" = "-logfile" ]; then
+    shift
+    logfile="$1"
+    shift
+  elif [ "$1" = "-nologfile" ]; then
+    shift
+    logfile=
   elif [ "$1" = "-mode" ]; then
     shift
     modxx="$1"
@@ -69,6 +82,9 @@ do
     shift
     master="$1"
     shift
+  elif [ "$1" = "-nomasterhost" ]; then
+    shift
+    master=
   elif [ "$1" = "-extrahosts" ]; then
     shift
     extra="$1"
@@ -99,7 +115,8 @@ if [ $help = 1 ]; then
   echo ''
   echo 'Run as:'
   echo ' startdistproc -dsn datasetname -cdn clusterdescname [-mode mode]'
-  echo '              [-hfn hostfilename] [-fdp finddproc-path] [-[no]dry]'
+  echo '              [-hfn hostfilename] [-fdp finddproc-path]'
+  echo '              [-logfile logfilename] [-[no]dry]'
   echo '              [-extrahosts "host1 host2 ..."] [-noextrahosts]'
   echo '              [-masterhost host] program [arg1 arg2 ...]'
   echo ''
@@ -107,14 +124,19 @@ if [ $help = 1 ]; then
   echo '  -cdn clusterdescname  The name of the file describing the cluster.'
   echo '  -hfn hostfilename     The name of the generated hostfile.'
   echo '                        It defaults to /tmp/machinefile_$$'
-  echo '  -fdp finddproc-path   Path where to find finddproc.'
+  echo '  -fdp finddproc-path   Path where to find finddistproc.'
   echo '                        Default is empty.'
+  echo '  -logfile logfilename  The general name of the subprocesses log files.'
+  echo '                        They are suffixed with a sequence number.'
   echo '  -dry                  Do a dry run (default is -nodry).'
   echo '  -mode mode            mode can be mpi, single, or a number.'
-  echo '                        A number denotes that sockets have to be used'
-  echo '                        and defines the port to be used.'
+  echo '                        A number means that ssh is used to start the programs and'
+  echo '                        defines the socket port the programs can use (if needed).'
+  echo '                        Single means a single process is started using memory'
+  echo '                        communication.'
   echo '  -masterhost host      The name of the host the master runs on.'
   echo '                        The default is localhost.'
+  echo '                        -nomasterhost means that no master process is started.'
   echo '  -extrahosts hosts     The hosts to be used for extra processes (e.g. solvers).'
   echo '                        Multiple hosts have to be separated by whitespace'
   echo '                        and enclosed in quotes.'
@@ -155,7 +177,9 @@ np=`wc -l $hfn | awk '{print $1}'`
 
 # Run the program as needed.
 if test "$modxx" = "mpi"; then
-  echo "mpirun -np $np -machinefile $hfn $program $@"
+  sed -e "s/#.*//" $hfn > ${hfn}_tmp
+  mv ${hfn}_tmp $hfn
+  echo "mpirun -np $np -machinefile $hfn $program" "$@"
   if test $dry = 0; then
     mpirun -np $np -machinefile $hfn $program "$@"
   fi
@@ -165,6 +189,6 @@ elif test "$modxx" = "single"; then
     $program "$@"
   fi
 else
-  echo "socketrun $hfn $program $@"
-  $pgmpath/socketrun $dry $hfn $modxx $program "$@"
+  echo "socketrun $dry $hfn $modxx $logfile $program" "$@"
+  $pgmpath/socketrun $dry $hfn $modxx "$logfile" $program "$@"
 fi
diff --git a/CEP/BB/MWCommon/test/tSocketConnection.run b/CEP/BB/MWCommon/test/tSocketConnection.run
index 1a566966f1a1d8c397926b40dc8c23c3a9d94da6..f0b0030d76456d1afa4e19ec2af941435798670b 100755
--- a/CEP/BB/MWCommon/test/tSocketConnection.run
+++ b/CEP/BB/MWCommon/test/tSocketConnection.run
@@ -16,6 +16,7 @@ if [ $STATUS != 0 ]; then
 fi
 
 # Output the result in order.
+sleep 1
 echo "Run1 ..."
 cat tSocketConnection_tmp.outs1 tSocketConnection_tmp.outc1
 
@@ -35,6 +36,7 @@ if [ $STATUS != 0 ]; then
 fi
 
 # Output the result in order.
+sleep 1
 echo "Run2 ..."
 cat tSocketConnection_tmp.outs2 tSocketConnection_tmp.outc2
 exit 0
diff --git a/CEP/BB/MWCommon/test/tVdsDesc.cc b/CEP/BB/MWCommon/test/tVdsDesc.cc
index 4cba7f69937bf1bf421c14df7c9c9b9d1ff35eb8..1db688e049fc81426856df3dcc30813f9728d9db 100644
--- a/CEP/BB/MWCommon/test/tVdsDesc.cc
+++ b/CEP/BB/MWCommon/test/tVdsDesc.cc
@@ -18,89 +18,40 @@ void checkVds (const VdsPartDesc& vds, double endTime)
   ASSERT (vds.getName() == "/usr/local/xyx");
   ASSERT (vds.getFileSys() == "node1:/usr");
   ASSERT (vds.getStartTime() == 0);
+  ASSERT (vds.getStepTime() == 0.5);
   ASSERT (vds.getEndTime() == endTime);
   ASSERT (vds.getNChan().size() == 2);
-  ASSERT (vds.getNChan()[0] == 64);
-  ASSERT (vds.getNChan()[1] == 128);
-  ASSERT (vds.getStartFreqs().size() == 2);
+  ASSERT (vds.getNChan()[0] == 2);
+  ASSERT (vds.getNChan()[1] == 3);
+  ASSERT (vds.getStartFreqs().size() == 5);
   ASSERT (vds.getStartFreqs()[0] == 20);
-  ASSERT (vds.getStartFreqs()[1] == 120);
-  ASSERT (vds.getEndFreqs().size() == 2);
-  ASSERT (vds.getEndFreqs()[0] == 100);
-  ASSERT (vds.getEndFreqs()[1] == 300);
-  ASSERT (vds.getAnt1().size() == 3);
-  ASSERT (vds.getAnt1()[0] == 0);
-  ASSERT (vds.getAnt1()[1] == 1);
-  ASSERT (vds.getAnt1()[2] == 2);
-  ASSERT (vds.getAnt2().size() == 3);
-  ASSERT (vds.getAnt2()[0] == 0);
-  ASSERT (vds.getAnt2()[1] == 1);
-  ASSERT (vds.getAnt2()[2] == 3);
+  ASSERT (vds.getStartFreqs()[1] == 60);
+  ASSERT (vds.getStartFreqs()[2] == 120);
+  ASSERT (vds.getStartFreqs()[3] == 180);
+  ASSERT (vds.getStartFreqs()[4] == 240);
+  ASSERT (vds.getEndFreqs().size() == 5);
+  ASSERT (vds.getEndFreqs()[0] == 60);
+  ASSERT (vds.getEndFreqs()[1] == 100);
+  ASSERT (vds.getEndFreqs()[2] == 180);
+  ASSERT (vds.getEndFreqs()[3] == 240);
+  ASSERT (vds.getEndFreqs()[4] == 300);
 }
 
 void check (const VdsDesc& vfds)
 {
   checkVds (vfds.getDesc(), 1);
   checkVds (vfds.getParts()[0], 2);
-  ASSERT (vfds.getAntNames().size() == 4);
-  ASSERT (vfds.getAntNames()[0] == "RT0");
-  ASSERT (vfds.getAntNames()[1] == "RT1");
-  ASSERT (vfds.getAntNames()[2] == "RT2");
-  ASSERT (vfds.getAntNames()[3] == "RT3");
-}
-
-void tryAnt (const VdsDesc& vfds)
-{
-  ASSERT (vfds.antNr("RT0") == 0);
-  ASSERT (vfds.antNr("RT1") == 1);
-  ASSERT (vfds.antNr("RT2") == 2);
-  ASSERT (vfds.antNr("RT3") == 3);
-  ASSERT (vfds.antNr("RT4") == -1);
-  {
-    vector<int> antNrs = vfds.antNrs(Regex("RT.*"));
-    ASSERT (antNrs.size() == 4);
-    ASSERT (antNrs[0] == 0);
-    ASSERT (antNrs[1] == 1);
-    ASSERT (antNrs[2] == 2);
-    ASSERT (antNrs[3] == 3);
-  }
-  {
-    vector<int> antNrs = vfds.antNrs(Regex(".*0"));
-    ASSERT (antNrs.size() == 1);
-    ASSERT (antNrs[0] == 0);
-  }
-  {
-    vector<int> antNrs = vfds.antNrs(Regex("RT2"));
-    ASSERT (antNrs.size() == 1);
-    ASSERT (antNrs[0] == 2);
-  }
-  {
-    vector<int> antNrs = vfds.antNrs(Regex("RT*"));
-    ASSERT (antNrs.size() == 0);
-  }
 }
 
 void doIt()
 {
   VdsPartDesc vds;
   vds.setName ("/usr/local/xyx", "node1:/usr");
-  vds.setTimes (0, 1);
-  vds.addBand (64, 20, 100);
-  vds.addBand (128, 120, 300);
-  vector<int> ant1(3);
-  ant1[0] = 0;
-  ant1[1] = 1;
-  ant1[2] = 2;
-  vector<int> ant2(ant1);
-  ant2[2] = 3;
-  vds.setBaselines (ant1, ant2);
-  vector<string> antNames(4);
-  antNames[0] = "RT0";
-  antNames[1] = "RT1";
-  antNames[2] = "RT2";
-  antNames[3] = "RT3";
-  VdsDesc vfds(vds, antNames);
-  vds.setTimes(0,2);
+  vds.setTimes (0, 1, 0.5);
+  vds.addBand (2, 20, 100);
+  vds.addBand (3, 120, 300);
+  VdsDesc vfds(vds);
+  vds.setTimes(0, 2, 0.5);
   vfds.addPart (vds);
   check(vfds);
   // Write into parset file.
@@ -112,7 +63,6 @@ void doIt()
   check(vfds2);
   vfds = vfds2;
   check(vfds);
-  tryAnt (vfds);
 }
 
 int main()
diff --git a/CEP/BB/MWCommon/test/tVdsPartDesc.cc b/CEP/BB/MWCommon/test/tVdsPartDesc.cc
index 3e49b538b20bb6b47aafa5ea5750bccfee36ef35..285917c914218661ac02e2aa6cfd004cf9fb5b71 100644
--- a/CEP/BB/MWCommon/test/tVdsPartDesc.cc
+++ b/CEP/BB/MWCommon/test/tVdsPartDesc.cc
@@ -18,39 +18,31 @@ void check (const VdsPartDesc& vds)
   ASSERT (vds.getFileSys() == "node1:/usr");
   ASSERT (vds.getStartTime() == 0);
   ASSERT (vds.getEndTime() == 1);
+  ASSERT (vds.getStepTime() == 0.5);
   ASSERT (vds.getNChan().size() == 2);
-  ASSERT (vds.getNChan()[0] == 64);
-  ASSERT (vds.getNChan()[1] == 128);
-  ASSERT (vds.getStartFreqs().size() == 2);
+  ASSERT (vds.getNChan()[0] == 2);
+  ASSERT (vds.getNChan()[1] == 3);
+  ASSERT (vds.getStartFreqs().size() == 5);
   ASSERT (vds.getStartFreqs()[0] == 20);
-  ASSERT (vds.getStartFreqs()[1] == 120);
-  ASSERT (vds.getEndFreqs().size() == 2);
-  ASSERT (vds.getEndFreqs()[0] == 100);
-  ASSERT (vds.getEndFreqs()[1] == 300);
-  ASSERT (vds.getAnt1().size() == 3);
-  ASSERT (vds.getAnt1()[0] == 0);
-  ASSERT (vds.getAnt1()[1] == 1);
-  ASSERT (vds.getAnt1()[2] == 2);
-  ASSERT (vds.getAnt2().size() == 3);
-  ASSERT (vds.getAnt2()[0] == 0);
-  ASSERT (vds.getAnt2()[1] == 1);
-  ASSERT (vds.getAnt2()[2] == 3);
+  ASSERT (vds.getStartFreqs()[1] == 60);
+  ASSERT (vds.getStartFreqs()[2] == 120);
+  ASSERT (vds.getStartFreqs()[3] == 180);
+  ASSERT (vds.getStartFreqs()[4] == 240);
+  ASSERT (vds.getEndFreqs().size() == 5);
+  ASSERT (vds.getEndFreqs()[0] == 60);
+  ASSERT (vds.getEndFreqs()[1] == 100);
+  ASSERT (vds.getEndFreqs()[2] == 180);
+  ASSERT (vds.getEndFreqs()[3] == 240);
+  ASSERT (vds.getEndFreqs()[4] == 300);
 }
 
 void doIt()
 {
   VdsPartDesc vds;
   vds.setName ("/usr/local/xyx", "node1:/usr");
-  vds.setTimes (0, 1);
-  vds.addBand (64, 20, 100);
-  vds.addBand (128, 120, 300);
-  vector<int> ant1(3);
-  ant1[0] = 0;
-  ant1[1] = 1;
-  ant1[2] = 2;
-  vector<int> ant2(ant1);
-  ant2[2] = 3;
-  vds.setBaselines (ant1, ant2);
+  vds.setTimes (0, 1, 0.5);
+  vds.addBand (2, 20, 100);
+  vds.addBand (3, 120, 300);
   check(vds);
   // Write into parset file.
   ofstream fos("tVdsPartDesc_tmp.fil");
diff --git a/CEP/BB/MWCommon/test/tfinddproc.in_vd b/CEP/BB/MWCommon/test/tfinddproc.in_vd
index 1182808f4dd2bf1e23030bca2b2d704c7819bd70..b09ba3534807a5365d61a85657707798447ef53d 100644
--- a/CEP/BB/MWCommon/test/tfinddproc.in_vd
+++ b/CEP/BB/MWCommon/test/tfinddproc.in_vd
@@ -2,40 +2,35 @@ Name = /usr/local/xyx
 FileSys = 
 StartTime = 0
 EndTime = 2
+StepTime = 0.5
 NChan = [64,128]
 StartFreqs = [20,120]
 EndFreqs = [100,300]
-Ant1 = [0,1,2]
-Ant2 = [0,1,3]
-AntNames = [RT0,RT1,RT2,RT3]
 NParts = 3
 
 Part0.Name = /usr/local/xyx0
 Part0.FileSys = node1:/usr
 Part0.StartTime = 0
 Part0.EndTime = 2
+Part0.StepTime = 0.5
 Part0.NChan = [64,128]
 Part0.StartFreqs = [20,120]
 Part0.EndFreqs = [100,300]
-Part0.Ant1 = [0,1,2]
-Part0.Ant2 = [0,1,3]
 
 Part1.Name = /usr/local/xyx1
 Part1.FileSys = node1:/usr
 Part1.StartTime = 0
 Part1.EndTime = 2
+Part1.StepTime = 0.5
 Part1.NChan = [64,128]
 Part1.StartFreqs = [20,120]
 Part1.EndFreqs = [100,300]
-Part1.Ant1 = [0,1,2]
-Part1.Ant2 = [0,1,3]
 
 Part2.Name = /usr/local/xyx2
 Part2.FileSys = node1:/usr
 Part2.StartTime = 0
 Part2.EndTime = 2
+Part2.StepTime = 0.5
 Part2.NChan = [64,128]
 Part2.StartFreqs = [20,120]
 Part2.EndFreqs = [100,300]
-Part2.Ant1 = [0,1,2]
-Part2.Ant2 = [0,1,3]
diff --git a/CEP/BB/MWCommon/test/tfinddproc.stdout b/CEP/BB/MWCommon/test/tfinddproc.stdout
index c3fa761a404fd9bfe544d908d34983464b5792f4..e7b773b4cdd7a0fdc9bee284dd46cf993853cb4f 100644
--- a/CEP/BB/MWCommon/test/tfinddproc.stdout
+++ b/CEP/BB/MWCommon/test/tfinddproc.stdout
@@ -1,3 +1,3 @@
-node1
-node2
-node1
+node1#/usr/local/xyx0
+node2#/usr/local/xyx1
+node1#/usr/local/xyx2
diff --git a/CEP/BB/MWCommon/test/tstartdproc.in_vd b/CEP/BB/MWCommon/test/tstartdproc.in_vd
index 1182808f4dd2bf1e23030bca2b2d704c7819bd70..b09ba3534807a5365d61a85657707798447ef53d 100644
--- a/CEP/BB/MWCommon/test/tstartdproc.in_vd
+++ b/CEP/BB/MWCommon/test/tstartdproc.in_vd
@@ -2,40 +2,35 @@ Name = /usr/local/xyx
 FileSys = 
 StartTime = 0
 EndTime = 2
+StepTime = 0.5
 NChan = [64,128]
 StartFreqs = [20,120]
 EndFreqs = [100,300]
-Ant1 = [0,1,2]
-Ant2 = [0,1,3]
-AntNames = [RT0,RT1,RT2,RT3]
 NParts = 3
 
 Part0.Name = /usr/local/xyx0
 Part0.FileSys = node1:/usr
 Part0.StartTime = 0
 Part0.EndTime = 2
+Part0.StepTime = 0.5
 Part0.NChan = [64,128]
 Part0.StartFreqs = [20,120]
 Part0.EndFreqs = [100,300]
-Part0.Ant1 = [0,1,2]
-Part0.Ant2 = [0,1,3]
 
 Part1.Name = /usr/local/xyx1
 Part1.FileSys = node1:/usr
 Part1.StartTime = 0
 Part1.EndTime = 2
+Part1.StepTime = 0.5
 Part1.NChan = [64,128]
 Part1.StartFreqs = [20,120]
 Part1.EndFreqs = [100,300]
-Part1.Ant1 = [0,1,2]
-Part1.Ant2 = [0,1,3]
 
 Part2.Name = /usr/local/xyx2
 Part2.FileSys = node1:/usr
 Part2.StartTime = 0
 Part2.EndTime = 2
+Part2.StepTime = 0.5
 Part2.NChan = [64,128]
 Part2.StartFreqs = [20,120]
 Part2.EndFreqs = [100,300]
-Part2.Ant1 = [0,1,2]
-Part2.Ant2 = [0,1,3]
diff --git a/CEP/BB/MWCommon/test/tstartdproc.run b/CEP/BB/MWCommon/test/tstartdproc.run
index f4d575a07be8c8d7e8b48fb1a12af70250541abf..c667399c3e255b456e931aadf3782c414d8e59b5 100755
--- a/CEP/BB/MWCommon/test/tstartdproc.run
+++ b/CEP/BB/MWCommon/test/tstartdproc.run
@@ -6,16 +6,16 @@ fi
 
 echo ''
 $srcdir/../src/startdistproc -dsn tstartdproc.in_vd -cdn tstartdproc.in_cd \
--mode single -dry -hfn tstartdproc_tmp.out1 -fdp ../src prog1 -arg arg2
+-mode single -dry -hfn tstartdproc_tmp.out1 -fdp ../src prog1 -arg "a b"
 cat tstartdproc_tmp.out1
 
 echo ''
 $srcdir/../src/startdistproc -dsn tstartdproc.in_vd -cdn tstartdproc.in_cd \
--mode mpi -dry -hfn tstartdproc_tmp.out2 -fdp ../src prog1 -arg arg2
+-mode mpi -dry -hfn tstartdproc_tmp.out2 -fdp ../src prog1 -arg "a b"
 cat tstartdproc_tmp.out2
 
 echo ''
 $srcdir/../src/startdistproc -dsn tstartdproc.in_vd -cdn tstartdproc.in_cd \
--mode 3851 -dry -hfn tstartdproc_tmp.out3 -fdp ../src prog1 -arg arg2
+-mode 3851 -dry -hfn tstartdproc_tmp.out3 -fdp ../src prog1 -arg "a b"
 cat tstartdproc_tmp.out3
 
diff --git a/CEP/BB/MWCommon/test/tstartdproc.stdout b/CEP/BB/MWCommon/test/tstartdproc.stdout
index 51db9e42fd8aa654cf880d089f470ca9310db7c3..1b8e2d3a244dcd30d79b5f6e3713526a5c60b7ee 100644
--- a/CEP/BB/MWCommon/test/tstartdproc.stdout
+++ b/CEP/BB/MWCommon/test/tstartdproc.stdout
@@ -1,22 +1,22 @@
 
-prog1 -arg arg2
+prog1 -arg a b
 localhost
-node1
-node2
-node1
+node1#/usr/local/xyx0
+node2#/usr/local/xyx1
+node1#/usr/local/xyx2
 
-mpirun -np 4 -machinefile tstartdproc_tmp.out2 prog1 -arg arg2
+mpirun -np 4 -machinefile tstartdproc_tmp.out2 prog1 -arg a b
 localhost
 node1
 node2
 node1
 
-socketrun tstartdproc_tmp.out3 prog1 -arg arg2
-ssh localhost prog1 socket localhost 3851 4 0
-ssh node1 prog1 socket localhost 3851 4 1
-ssh node2 prog1 socket localhost 3851 4 2
-ssh node1 prog1 socket localhost 3851 4 3
+socketrun 1 tstartdproc_tmp.out3 3851  prog1 -arg a b
+ssh localhost prog1 socket localhost 3851 4 0 localhost -arg a b
+ssh node1 prog1 socket localhost 3851 4 1 /usr/local/xyx0 -arg a b
+ssh node2 prog1 socket localhost 3851 4 2 /usr/local/xyx1 -arg a b
+ssh node1 prog1 socket localhost 3851 4 3 /usr/local/xyx2 -arg a b
 localhost
-node1
-node2
-node1
+node1#/usr/local/xyx0
+node2#/usr/local/xyx1
+node1#/usr/local/xyx2