diff --git a/.gitattributes b/.gitattributes
index e7fd570f1cb013eb31d01623c990201d61768a22..08c851bd58f89ca7c05837bd0dfbbb9a31cc6419 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1055,6 +1055,7 @@ CEP/Pipeline/deploy/deprecated/ipcontroller.sh eol=lf
 CEP/Pipeline/deploy/deprecated/ipengine.sh eol=lf
 CEP/Pipeline/deploy/deprecated/start_cluster.py eol=lf
 CEP/Pipeline/deploy/deprecated/stop_cluster.py eol=lf
+CEP/Pipeline/docs/design[!!-~]documentation/Pipeline.eap -text
 CEP/Pipeline/docs/examples/definition/dummy/pipeline.cfg eol=lf
 CEP/Pipeline/docs/examples/definition/dummy/pipeline.py eol=lf
 CEP/Pipeline/docs/examples/definition/dummy/tasks.cfg eol=lf
@@ -1112,15 +1113,16 @@ CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/tests/ingredients.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/developer/todo.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/index.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/logo.jpg -text svneol=unset#image/jpeg
-CEP/Pipeline/docs/sphinx/source/overview/dependencies/index.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/overview/overview/index.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/overview/pipeline-flowchart.odg -text
 CEP/Pipeline/docs/sphinx/source/overview/pipeline-flowchart.png -text svneol=unset#image/png
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/index.rst eol=lf
+CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/calibration_pipeline.png -text
+CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/imaging_pipeline.png -text
+CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/index.rst -text
+CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/target_pipeline.png -text
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/quickstart/index.rst eol=lf
-CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/cimager.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/copier.rst -text
-CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/datamapper.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/dppp.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/gainoutliercorrection.rst -text
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/get_metadata.rst -text
@@ -1136,7 +1138,6 @@ CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/rficonsole.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/setupparmdb.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/setupsourcedb.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/sip.rst eol=lf
-CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/storagemapper.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/vdsmaker.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/vdsreader.rst eol=lf
 CEP/Pipeline/docs/sphinx/source/todo.rst eol=lf
@@ -3384,10 +3385,7 @@ MAC/Deployment/data/PVSS/License/shield.RS508C.txt -text
 MAC/Deployment/data/PVSS/License/shield.RS509C.txt -text
 MAC/Deployment/data/PVSS/License/shield.SE607C.txt -text
 MAC/Deployment/data/PVSS/License/shield.UK608C.txt -text
-MAC/Deployment/data/PVSS/License/shield_471_3031_1_Astron_Gen_I_2_311.txt -text
-MAC/Deployment/data/PVSS/License/shield_471_3031_2_Astron_Gen_II_2_311.txt -text
 MAC/Deployment/data/PVSS/License/shield_developdongles.txt -text
-MAC/Deployment/data/PVSS/License/test_shield.txt -text
 MAC/Deployment/data/PVSS/data/Adder.dpdef -text
 MAC/Deployment/data/PVSS/data/BGPAppl.dpdef -text
 MAC/Deployment/data/PVSS/data/BGPRack.dpdef -text
@@ -3983,7 +3981,6 @@ MAC/Test/TestHarness/THPVSSBridge/src/THPVSSBridge_Protocol.prot -text svneol=na
 MAC/Test/TestHarness/TSE/doc/OTSE-UserManual.doc -text
 MAC/Test/TestHarness/TSE/doc/OTSE-UserManual.pdf -text
 MAC/Test/TestHarness/TSE/scripts/demo.tar.bz2 -text
-MAC/Tools/Clock/plotclock -text
 MAC/Tools/Clock/ppsctl.c -text
 MAC/Tools/NTP/PPSkit-light-alpha-3932m-2.6.17.8.diff -text
 MAC/Tools/NTP/kernel-2.6.18-NANO.config -text
@@ -4004,7 +4001,6 @@ MAC/Tools/NTP/timer.c -text
 MAC/Tools/NTP/timer.c.patch -text
 MAC/Tools/NTP/timex.h -text
 MAC/Tools/Rubidium/filter.py -text
-MAC/Tools/Rubidium/plotrubidium -text
 MAC/Tools/Rubidium/rlp.py -text
 MAC/Tools/Rubidium/rr.py -text
 MAC/Tools/Rubidium/rubidium -text
@@ -4126,6 +4122,7 @@ RTCP/IONProc/test/tDelayCompensation.sh -text
 RTCP/IONProc/test/tSSH.cc -text
 RTCP/IONProc/test/tSSH.sh -text
 RTCP/IONProc/test/tSSH.stdout -text
+RTCP/Interface/include/Interface/BGPAsm.h -text
 RTCP/Interface/include/Interface/BeamCoordinates.h -text
 RTCP/Interface/include/Interface/BeamFormedData.h -text
 RTCP/Interface/include/Interface/DataFactory.h -text
@@ -4138,9 +4135,11 @@ RTCP/Interface/include/Interface/Stream.h -text
 RTCP/Interface/include/Interface/StreamableData.h -text
 RTCP/Interface/include/Interface/TransposedBeamFormedData.h -text
 RTCP/Interface/include/Interface/TriggerData.h -text
+RTCP/Interface/src/BGPAsm.S -text
 RTCP/Interface/src/BeamCoordinates.cc -text
 RTCP/Interface/src/DataFactory.cc -text
 RTCP/Interface/src/Stream.cc -text
+RTCP/Interface/test/tCorrelatedData.cc -text
 RTCP/LofarStMan/CMakeLists.txt -text
 RTCP/LofarStMan/include/LofarStMan/CMakeLists.txt -text
 RTCP/LofarStMan/src/CMakeLists.txt -text
diff --git a/CEP/Calibration/BBSControl/scripts/plotwindow.py b/CEP/Calibration/BBSControl/scripts/plotwindow.py
index 2d02427707f900e8700ed3564c24709306f56de5..e9185c946cf318d2c5f21806f4844a337a22b727 100755
--- a/CEP/Calibration/BBSControl/scripts/plotwindow.py
+++ b/CEP/Calibration/BBSControl/scripts/plotwindow.py
@@ -228,7 +228,7 @@ class PlotWindow(QFrame):
       self.show()           # show the plotWindow widget
       self.parent.setXLabel()
       self.parent.setYLabel()
-      s
+
       # Matplotlib event connections
       #if self.showMarker==True:
       #  cid = self.fig.canvas.mpl_connect('motion_notify_event', self.update_marker)
diff --git a/CEP/GSM/bremen/recreate_tables.py b/CEP/GSM/bremen/recreate_tables.py
index efd1c90591903ebf4c2d719a8d5b945f9b647036..7534f00cc2b6947e15ec3c4bfc6fd77d56ae6e4d 100755
--- a/CEP/GSM/bremen/recreate_tables.py
+++ b/CEP/GSM/bremen/recreate_tables.py
@@ -46,7 +46,7 @@ class Recreator(object):
     def __init__(self, database="test", use_monet=True):
         self.monet = use_monet
         if use_monet:
-            db_port = 50000
+            db_port = 52000
             db_autocommit = True
         db_host = "localhost"
         db_dbase = database
diff --git a/CEP/GSM/bremen/src/gsmconnectionmanager.py b/CEP/GSM/bremen/src/gsmconnectionmanager.py
index 99ec45f37acc7f8a7c62778020956125b511b0f0..7a03e24e8ff3e25da59665fe85c1820600b675e2 100644
--- a/CEP/GSM/bremen/src/gsmconnectionmanager.py
+++ b/CEP/GSM/bremen/src/gsmconnectionmanager.py
@@ -12,8 +12,8 @@ class GSMConnectionManager(object):
     """
     DEFAULTS = {
         'hostname': 'localhost',
-        'port': 50000,
-        'database': 'gsm',
+        'port': 52000,
+        'database': 'GSM',
         'username': 'monetdb',
         'password': 'monetdb',
         'autocommit': True
diff --git a/CEP/GSM/bremen/src/gsmlogger.py b/CEP/GSM/bremen/src/gsmlogger.py
index a735bd15c1afe8ee1719dd8613f46eaa2eb50912..22ab18e779ff995d2baf7ec07d6fb6065974830f 100644
--- a/CEP/GSM/bremen/src/gsmlogger.py
+++ b/CEP/GSM/bremen/src/gsmlogger.py
@@ -7,7 +7,11 @@ import os
 
 LOGGERS = {}
 
-BASE_LOG_DIR = os.path.join(os.getenv('HOME'), 'prog', 'GSM')
+import platform
+if platform.node() == 'ldb001':
+    BASE_LOG_DIR = os.path.join(os.getenv('HOME'), 'GSM')
+else:
+    BASE_LOG_DIR = os.path.join(os.getenv('HOME'), 'prog', 'GSM')
 
 USE_CONSOLE = False
 
diff --git a/CEP/GSM/bremen/src/spectra.py b/CEP/GSM/bremen/src/spectra.py
index f0216d444e91f9236244466b899f4f242594cc1a..b4d01b4fcdec12e21689ba2b1f0fc85e91901136 100644
--- a/CEP/GSM/bremen/src/spectra.py
+++ b/CEP/GSM/bremen/src/spectra.py
@@ -1,7 +1,29 @@
 #!/usr/bin/python
 import numpy
 from copy import copy
-from numpy.polynomial.polynomial import polyval
+
+
+def _verify_versions(a, b):
+    a = map(int, a.split('.'))
+    b = map(int, b.split('.'))
+    for i, val in enumerate(a):
+        if b[i] < val:
+            return False
+    return True
+
+if _verify_versions('1.4.0', numpy.__version__):
+    print 'Using 1.4 version'
+    from numpy.polynomial.polynomial import polyval
+else:
+    print 'Using substitute for 1.3 version'
+    from numpy import polyval as polyval_numpy
+    def polyval(x, args):
+        if not isinstance(args, list):
+            args = args.tolist()
+        pargs = copy(args)
+        pargs.reverse()
+        return polyval_numpy(pargs, x)
+
 #Unused:
 #from scipy.stats import chi2
 
diff --git a/CEP/GSM/bremen/src/unifiedConnection.py b/CEP/GSM/bremen/src/unifiedConnection.py
index 0ca5624ea5532faec9c9b86bca7bbd760fd87c1e..f490caee0b3bc1140213940799efb930988e3e57 100644
--- a/CEP/GSM/bremen/src/unifiedConnection.py
+++ b/CEP/GSM/bremen/src/unifiedConnection.py
@@ -82,6 +82,7 @@ class UnifiedConnection(object):
             query = query + ';'
         try:
             self.start()
+            self.log.debug(query.replace('\n', ' '))
             result = cursor.execute(query)
         except Exception as oerr:
             self.log.error(query.replace('\n', ' '))
diff --git a/CEP/GSM/bremen/tests/bbsfiletest.py b/CEP/GSM/bremen/tests/bbsfiletest.py
index da3303346a3ce08d42797ce73ff3aae453a937cd..6887051962845572a6a8980d910e65bd77d9e65b 100644
--- a/CEP/GSM/bremen/tests/bbsfiletest.py
+++ b/CEP/GSM/bremen/tests/bbsfiletest.py
@@ -33,15 +33,12 @@ class BBSFileTest(SwitchableTest):
         self.assertTrue(xfile.read_and_store_data(self.conn))
 
     def test_wrong_default(self):
-        with self.assertRaises(SourceException):
-            xfile = GSMBBSFileSource('test', 0, 'tests/data/bad_file.dat')
-            xfile.read_and_store_data(self.conn)
+        xfile = GSMBBSFileSource('test', 0, 'tests/data/bad_file.dat')
+        self.assertRaises(SourceException, xfile.read_and_store_data, self.conn)
 
     def test_wrong_test(self):
-        with self.assertRaises(SourceException):
-            xfile = GSMBBSFileSource('test', 0, 'tests/data/bbs_field.dat', 'test')
-            self.assertTrue(xfile.read_and_store_data(self.conn))
-
+        xfile = GSMBBSFileSource('test', 0, 'tests/data/bbs_field.dat', 'test')
+        self.assertRaises(SourceException, xfile.read_and_store_data, self.conn)
 
     def tearDown(self):
         self.conn.execute("delete from detections;")
diff --git a/CEP/GSM/bremen/tests/gsmconnection.py b/CEP/GSM/bremen/tests/gsmconnection.py
index fddd1c963b2f22b48b5257756551e61235834bdb..b1690a149ced483e08898500d4ba16e303f1d8bf 100644
--- a/CEP/GSM/bremen/tests/gsmconnection.py
+++ b/CEP/GSM/bremen/tests/gsmconnection.py
@@ -19,18 +19,16 @@ class ConnectionTest(SwitchableTest):
         self.assertTrue(conn.established())
 
     def test_fail_connection(self):
-        with self.assertRaises((MonetDatabaseError,
-                                psycopg2.OperationalError)):
-            self.cm.get_connection(database='test_nonexistent',
-                                   username='test1',
-                                   password='test1')
+        self.assertRaises((MonetDatabaseError, psycopg2.OperationalError),
+            self.cm.get_connection, database='test_nonexistent',
+                                    username='test1',
+                                    password='test1')
 
     def test_bad_sql(self):
         conn = self.cm.get_connection(database='test')
         self.assertTrue(conn.established())
-        with self.assertRaises((MonetDatabaseError,
-                               psycopg2.DatabaseError)):
-            conn.execute('select abracadabra from xxxtable;')
+        self.assertRaises((MonetDatabaseError, psycopg2.DatabaseError),
+                          conn.execute, 'select abracadabra from xxxtable;')
         conn.rollback()
         bad_sql = """update assocxtrsources
    set weight = weight*(select ta.flux_fraction
@@ -53,8 +51,7 @@ class ConnectionTest(SwitchableTest):
                     and ta.lr_method = 1
                     and ta.kind = 3);"""
         if self.is_monet:
-            with self.assertRaises(MonetDatabaseError):
-                conn.execute(bad_sql)
+            self.assertRaises(MonetDatabaseError, conn.execute, bad_sql)
             self.assertFalse(conn.established())
 
     def test_store_properties(self):
diff --git a/CEP/GSM/bremen/tests/parset.py b/CEP/GSM/bremen/tests/parset.py
index d730ebb53147cec632044a184a0d2373b6ff0dd4..be177ee82ad9d18389d010730612c792020cbed0 100644
--- a/CEP/GSM/bremen/tests/parset.py
+++ b/CEP/GSM/bremen/tests/parset.py
@@ -1,11 +1,11 @@
 #!/usr/bin/python
 import unittest
 from src.errors import ParsetContentError, SourceException, GSMException
-#from src.bbsfilesource import GSMBBSFileSource
 from src.gsmparset import GSMParset
 from src.gsmconnectionmanager import GSMConnectionManager
 from tests.switchable import SwitchableTest
 
+
 class ParsetTest(SwitchableTest):
     def test_sample_parset(self):
         parset = GSMParset('tests/sample.parset')
@@ -13,13 +13,12 @@ class ParsetTest(SwitchableTest):
         self.assertEquals(loaded, 22)
 
     def test_missing_parset(self):
-        with self.assertRaises(GSMException):
-            _ = GSMParset('tests/nonexists.parset')
+        self.assertRaises(GSMException, GSMParset, 'tests/nonexists.parset')
 
     def test_wrong_parset(self):
-        with self.assertRaises(ParsetContentError):
-            parset = GSMParset('tests/wrong1.parset')
-            loaded = parset.process(self.cm.get_connection(database='test'))
-        with self.assertRaises(SourceException):
-            parset = GSMParset('tests/wrong2.parset')
-            _ = parset.process(self.cm.get_connection(database='test'))
+        parset = GSMParset('tests/wrong1.parset')
+        self.assertRaises(ParsetContentError, parset.process,
+                                    self.cm.get_connection(database='test'))
+        parset = GSMParset('tests/wrong2.parset')
+        self.assertRaises(SourceException, parset.process,
+                                    self.cm.get_connection(database='test'))
diff --git a/CEP/GSM/bremen/tests/spectra.py b/CEP/GSM/bremen/tests/spectra.py
index edf9fd1f9a3f748fcf2c53b159c0fe319677f2bf..d8d07513f32ba8133c1286f3278b6bed4262153e 100644
--- a/CEP/GSM/bremen/tests/spectra.py
+++ b/CEP/GSM/bremen/tests/spectra.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 import unittest
 from math import log10, pow
-from numpy.polynomial.polynomial import polyval
+from src.spectra import polyval
 from numpy.testing import assert_array_almost_equal
 from stress.generator import FREQUENCY
 from src.gsmconnectionmanager import GSMConnectionManager
diff --git a/CEP/GSM/bremen/tests/utils.py b/CEP/GSM/bremen/tests/utils.py
index 3d1e9f3ca18c815f021de629eabe7ac8b437e0b1..7fcfe4320846f9412a8fc3374b124ee2b839e3b1 100644
--- a/CEP/GSM/bremen/tests/utils.py
+++ b/CEP/GSM/bremen/tests/utils.py
@@ -1,8 +1,13 @@
 #!/usr/bin/python
 import unittest
+import sys
 from src.queries import get_svn_version, makelistable
 
 class UtilsTest(unittest.TestCase):
+    if sys.version_info < (2, 7):
+        def assertIsInstance(self, par1, par2):
+            self.assertTrue(isinstance(par1, par2))
+
     def test_svn(self):
         self.assertIsInstance(get_svn_version(), int)
 
diff --git a/CEP/Pipeline/docs/design documentation/Pipeline.eap b/CEP/Pipeline/docs/design documentation/Pipeline.eap
new file mode 100644
index 0000000000000000000000000000000000000000..da08798e8c74a49476dcec23a3b55bbddea26912
Binary files /dev/null and b/CEP/Pipeline/docs/design documentation/Pipeline.eap differ
diff --git a/CEP/Pipeline/docs/sphinx/source/author/index.rst b/CEP/Pipeline/docs/sphinx/source/author/index.rst
index 24efb5d2337ecb2cff78cab53b3ee7ae177bd897..9254e045d07d2c6950b7a38bfb44a33768534a52 100644
--- a/CEP/Pipeline/docs/sphinx/source/author/index.rst
+++ b/CEP/Pipeline/docs/sphinx/source/author/index.rst
@@ -700,11 +700,7 @@ And our earlier code can then simply be modified to:
 
 In general, the recipe author must define the mapping between hostnames and
 job arguments themselves: this will depend on the details of the problem the
-recipe is addressing. Often, it is conventient to use one recipe to generate
-the mapping, then save it to disk for use by several recipes in the pipeline.
-This is the approach taken in LOFAR's standard imaging pipeline. Here, the
-:ref:`recipe-datamapper` recipe determines which filenames are accessible from
-which hosts, and stores them to disk in a :ref:`parset file <parset-handling>`
+recipe is addressing. Store them to disk in a :ref:`parset file <parset-handling>`
 formatted as follows:
 
 .. code-block:: none
diff --git a/CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/support/recipes.rst b/CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/support/recipes.rst
index 2db9a29a17c32bb5e804e1eed82c43600d2f85a9..58dc658fde98e166f4caafabf02650a8278e8099 100644
--- a/CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/support/recipes.rst
+++ b/CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/support/recipes.rst
@@ -26,8 +26,8 @@ track of the pipeline progress
 
 The relationship between all these classes is illustrated below.
 
-.. inheritance-diagram:: lofarpipe.support.control.control lofarpipe.support.lofarrecipe.LOFARrecipe
-   :parts: 3
+   (deprecated) lofarpipe.support.control.control lofarpipe.support.lofarrecipe.LOFARrecipe
+
 
 .. autoclass:: lofarpipe.support.baserecipe.BaseRecipe
    :members:
@@ -42,8 +42,7 @@ The relationship between all these classes is illustrated below.
 
    See the :ref:`distribution <lofarpipe-remotecommand>` section for details.
 
-.. autoclass:: lofarpipe.support.ipython.IPythonRecipeMixIn
+   lofarpipe.support.deprecated.ipython.IPythonRecipeMixIn
 
    The use of IPython within the pipeline framework is :ref:`deprecated
    <ipython-deprecated>`.
-
diff --git a/CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/tests/ingredients.rst b/CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/tests/ingredients.rst
index c0ed7e9127759710548fc42aa67938e01f4f1dbd..96fec74863b3c3c83b01e758f145d836061071db 100644
--- a/CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/tests/ingredients.rst
+++ b/CEP/Pipeline/docs/sphinx/source/developer/lofarpipe/tests/ingredients.rst
@@ -2,5 +2,4 @@
 The :mod:`lofarpipe.tests.lofaringredient` module
 *************************************************
 
-.. automodule :: lofarpipe.tests.lofaringredient
-   :members:
+TODO: The test cases need to be added to this documentation
diff --git a/CEP/Pipeline/docs/sphinx/source/overview/dependencies/index.rst b/CEP/Pipeline/docs/sphinx/source/overview/dependencies/index.rst
deleted file mode 100644
index 14336fc7bb77e733f1daced9c491209809943f38..0000000000000000000000000000000000000000
--- a/CEP/Pipeline/docs/sphinx/source/overview/dependencies/index.rst
+++ /dev/null
@@ -1,72 +0,0 @@
-.. _framework-dependencies:
-
-*******************
-External components
-*******************
-
-The LOFAR pipeline system is built using the `Python
-<http://www.python.org/>`_ programming language. Certain features build upon
-the following libraries and tools. The short descriptions given here should
-serve as background material for those who simply wish to use the framework:
-directly interacting with these components should rarely be necessary.
-Developers, of course, will wish to learn in detail about all of these
-libraries.
-
-.. _ipython-blurb:
-
-IPython
-=======
-`IPython <http://ipython.scipy.org>`_, billed as "an enhanced interactive
-Python", also provides a comprehensive and easy-to-use suite of tools for
-parallel processing across a cluster of compute nodes using Python. This
-capability is may be used for writing recipes in the pipeline system.
-
-The parallel computing capabilities are only available in recent (post-0.9)
-releases of IPython. The reader may wish to refer to the `IPython
-documentation <http://ipython.scipy.org/doc/>`_ for more information, or, for
-a summary of the capabilities of the system, to the `Notes on IPython
-<http://www.lofar.org/operations/lib/exe/fetch.php?media=software:tkp_notes_on_ipython.pdf>`_
-document on the `LOFAR wiki <http://www.lofar.org/operations/>`_.
-
-A slight enhancement to the standard 0.9 IPython release is included with the
-pipeline system. We subclass :class:`IPython.kernel.task.StringTask` to create
-:class:`pipeline.support.LOFARTask`. This adds the ``dependargs`` named
-argument to the standard :class:`~IPython.kernel.task.StringTask`, which, in
-turn, is fed to the tasks's :meth:`depend` method. This makes the dependency
-system significantly more useful. See, for example, the :ref:`dppp-recipe`
-recipe for an example of its use.
-
-
-.. _distproc-blurb:
-
-distproc
-========
-An alternative method of starting a distributed process across the cluster is
-to use the ``distproc`` system by Ger van Diepen. This system is used
-internally by various pipeline components, such as the MWImager; the intested
-reader is referred to the `MWImager Manual
-<http://www.lofar.org/operations/lib/exe/fetch.php?media=engineering:software:tools:mwimager_manual_v1.pdf>`_
-for an overview of the operation of this system.
-
-Infrastructure for supporting the ``distproc`` system is well embedded within
-various pipeline components, so the new framework has been designed to make
-use of that where possible. In particular, the reader's attention is drawn to
-two file tyes:
-
-``clusterdesc``
-    A clusterdesc file describes the cluster configuration. It defines a
-    control node, various processing nodes, and describes what disks and other
-    resources they have access to.
-
-``VDS``
-    A VDS file describes the contents of a particular dataset and where it may
-    be found on the cluster. For the standard imaging pipeline, data is
-    distributed across different nodes by subband; each subband is described
-    by a single VDS file (generated by the ``makevds`` command). The VDS files
-    describing the subbands of a given observation may be combined (using
-    ``combinevds``) to generated a description of all the available data
-    (often known as a GDS file).
-
-The information contained in this files is used by both the task distribution
-systems to schedule jobs on the appropriate compute nodes.
-
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/index.rst b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/index.rst
index d7457ebced15b5ddd078a6a7231ead7474cec3aa..282dbf99cbb488b278ab0b538d0a39220b328ea5 100644
--- a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/index.rst
+++ b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/index.rst
@@ -22,3 +22,4 @@ usage should be relatively simple.
 
    quickstart/index.rst
    recipes/index.rst
+   pipeline_designs/index.rst
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/calibration_pipeline.png b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/calibration_pipeline.png
new file mode 100644
index 0000000000000000000000000000000000000000..870c228cb1d9e79df5223ed6c7322c9e51d11d01
Binary files /dev/null and b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/calibration_pipeline.png differ
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/imaging_pipeline.png b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/imaging_pipeline.png
new file mode 100644
index 0000000000000000000000000000000000000000..206187913bb5e54187e0f4a345dbc0f09c715d1a
Binary files /dev/null and b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/imaging_pipeline.png differ
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/index.rst b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..dfcf9d1cf2dbc3679746be8b3ca273c671a39fa7
--- /dev/null
+++ b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/index.rst
@@ -0,0 +1,16 @@
+.. pipeline-designs:
+
+******************************************************************
+Highlevel flowcharts for individual pipelines
+******************************************************************
+
+These page contains highlevel designs for pipelines found in the framework.
+It wil start with two smaller designs for the target and calibrator pipeline.
+Followed by the imaging pipeline. 
+
+
+.. image:: calibration_pipeline.png
+
+.. image:: target_pipeline.png
+
+.. image:: imaging_pipeline.png
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/target_pipeline.png b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/target_pipeline.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2b5043ea9f458d54e1281d078167bd4e95893a5
Binary files /dev/null and b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/pipeline_designs/target_pipeline.png differ
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/cimager.rst b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/cimager.rst
deleted file mode 100644
index 3c1c3218b889e2e1892cb75efc9c1abeb6467456..0000000000000000000000000000000000000000
--- a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/cimager.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-.. _recipe-cimager:
-
-=======
-cimager
-=======
-
-.. autoclass:: lofarpipe.recipes.master.cimager.cimager
-   :show-inheritance:
-
-.. autoclass:: lofarpipe.recipes.master.cimager.ParsetTypeField
-   :show-inheritance:
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/datamapper.rst b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/datamapper.rst
deleted file mode 100644
index e077a91cb4948e38c0e433add24f729c427d7d8d..0000000000000000000000000000000000000000
--- a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/datamapper.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _recipe-datamapper:
-
-==========
-datamapper
-==========
-
-.. autoclass:: lofarpipe.recipes.master.datamapper.datamapper
-   :show-inheritance:
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/index.rst b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/index.rst
index 3444d6382db646967828e967a21f09a30b6542da..7185d98f3654ab064273d0b328af23a94be82cc6 100644
--- a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/index.rst
+++ b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/index.rst
@@ -74,11 +74,8 @@ Imager Pipeline
 
 .. toctree::
     sip
-    datamapper
-    storagemapper
     dppp
     rficonsole
-    cimager
     vdsmaker
     vdsreader
 
diff --git a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/storagemapper.rst b/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/storagemapper.rst
deleted file mode 100644
index b098e05696e824337ad0930123f2621b0c9497a9..0000000000000000000000000000000000000000
--- a/CEP/Pipeline/docs/sphinx/source/pipelines/sip/recipes/storagemapper.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _recipe-storagemapper:
-
-=============
-storagemapper
-=============
-
-.. autoclass:: lofarpipe.recipes.master.storagemapper.storagemapper
-   :show-inheritance:
diff --git a/CEP/Pipeline/docs/sphinx/source/user/installation/quickstart.rst b/CEP/Pipeline/docs/sphinx/source/user/installation/quickstart.rst
index 28fff1c1be71f9a18a16c9635a85898742afcba8..00dd2e004d2bd6d2e6489505ab49bd8e753b91cd 100644
--- a/CEP/Pipeline/docs/sphinx/source/user/installation/quickstart.rst
+++ b/CEP/Pipeline/docs/sphinx/source/user/installation/quickstart.rst
@@ -22,6 +22,7 @@ own data some configuration has to be done. Keep in mind most of these steps hav
 2. Load an environment: 
 
 	a. ``use LofIm`` for the latest development version
+	   ``use Pythonlibs`` for the external python packages
    
 3. Create directories:
 
@@ -34,11 +35,18 @@ own data some configuration has to be done. Keep in mind most of these steps hav
 
 4. Copy the configuration files to your own config dir:
 
-	a. Because you are using the use command to set your environment you need to find out the location of these files. They might be create new each day. ``which msss_calibrator_pipeline.py`` Results for instance in. 		``/opt/cep/LofIm/daily/Fri/lofar_build/install/gnu_opt/bin/msss_calibrator_pipeline.py`` The config files are located relative from the ``install`` directory in ``gnu_opt/share/pipeline``
+	a. The enviroment used has influence on the location of some files. LofIm for instance is renewed each day with the resulting file in a different directory.
+	   Locate the current directory for your invironment. 
+	   ``which msss_calibrator_pipeline.py`` 
+	   This could result in the folowing: 		``/opt/cep/LofIm/daily/Fri/lofar_build/install/gnu_opt/bin/msss_calibrator_pipeline.py``
+	   The config files are found relative to the path install: ``install/gnu_opt/share/pipeline``
 	b. Copy the ``pipeline.cfg`` and ``tasks.cfg`` files to your own configuration directory.
-		``cp /opt/cep/lofar/lofar_versions/LOFAR-Release-1_3-latest/lofar_build/install/gnu_opt/share/pipeline/*.cfg /home/USERNAME/pipeline/config_files``
-	c. ``cp /home/klijn/cep1.clusterdesc /home/USERNAME/pipeline/config_files/cep1.clusterdesc`` Copy the cluster description file to your config dir. It is currently located in a home directory
-	d. This copy action will change the dynamic nature of the files. If you want to be sure that you have the bleeding edge software perform this copy step and the next adaptation step again. 
+	   Take the first part of the found path and add gnu_opt/share/pipeline copy all cfg files to your own config location.
+	   ``cp /opt/cep/lofar/lofar_versions/LOFAR-Release-1_3-latest/lofar_build/install/gnu_opt/share/pipeline/*.cfg /home/USERNAME/pipeline/config_files``
+	c. ``cp /home/klijn/cep1.clusterdesc /home/USERNAME/pipeline/config_files/cep1.clusterdesc`` Copy the cluster description file to your config dir. 
+	   It is currentlylocated in a home directory
+	d. This copy action will change the dynamic nature of the files. If you want to be sure that you have the bleeding edge software perform this copy step and the next     
+	   adaptation step again. 
 	
 5. Adapt the configuration files so they point to your own directories:
 
@@ -48,8 +56,8 @@ own data some configuration has to be done. Keep in mind most of these steps hav
 		**THIS RUNTIME_DIRECTORY MUST BE ACCESSIBLE FROM ALL NODES**
 	d. Change the working_directory entry to ``/data/scratch/USERNAME``
 		**THIS WORKING_DIRECTORY CAN --NOT-- EVER, FOR ANY REASON, BE ON A GLOBAL SHARE. EVER**
-	e. Change the clusterdesc entry to ``/home/USERNAME/pipeline/config/cep1.clusterdesc``
-	f. Change to task_files entry to ``[/home/USERNAME/pipeline/config/tasks.cfg]``
+	e. Change the clusterdesc entry to ``/home/USERNAME/pipeline/config_files/cep1.clusterdesc``
+	f. Change the task_files entry to ``[/home/USERNAME/pipeline/config_files/tasks.cfg]``
 
 .. code-block::	none 
 
@@ -82,8 +90,8 @@ own data some configuration has to be done. Keep in mind most of these steps hav
 6. Run a short template run of the imaging pipeline:
 
 	1. use LofIm
-	2. ``cp /data/scratch/klijn/*.parset /home/USERNAME/pipeline/parset_files/out.parset`` copy the test parametersets file to your own parset directory.
-	3. `` msss_imager_pipeline.py /data/scratch/klijn/out.parset --config ~/pipeline/config_files/pipeline.cfg --job test1 -d`` details: 
+	2. ``cp /data/scratch/klijn/out.parset /home/USERNAME/pipeline/parset_files/out.parset`` copy the test parametersets file to your own parset directory.
+	3. `` msss_imager_pipeline.py /data/scratch/USERNAME/out.parset --config ~/pipeline/config_files/pipeline.cfg --job test1 -d`` details: 
 
 		a. ``msss_imager_pipeline.py`` the imaging pipeline executable
 		b. ``/home/USERNAME/pipeline/parset_files/out.parset`` the settings for the pipeline
diff --git a/CEP/Pipeline/framework/lofarpipe/cuisine/WSRTrecipe.py b/CEP/Pipeline/framework/lofarpipe/cuisine/WSRTrecipe.py
index ea9b27cad4f6ae3483a585fca42859d0a4fa919b..e03ad0a7749647547c2d666d3f1f152b0c8cf881 100644
--- a/CEP/Pipeline/framework/lofarpipe/cuisine/WSRTrecipe.py
+++ b/CEP/Pipeline/framework/lofarpipe/cuisine/WSRTrecipe.py
@@ -138,7 +138,10 @@ class WSRTrecipe(object):
                                 ## confidence in
             return 1
         else:
-            self.logger.info('recipe ' + name + ' completed')
+            if status == 0:
+                self.logger.info('recipe ' + name + ' completed')
+            else:
+                self.logger.warn('recipe ' + name + ' completed with errors')
             return status
 
     def get_run_info(self, filepath):
diff --git a/CEP/Pipeline/recipes/sip/CMakeLists.txt b/CEP/Pipeline/recipes/sip/CMakeLists.txt
index c855589c5e75657e3fd5ff2b100c4e1e27bdbe5b..14e457a24138b9138e53e202da1d4a3d849c60cb 100644
--- a/CEP/Pipeline/recipes/sip/CMakeLists.txt
+++ b/CEP/Pipeline/recipes/sip/CMakeLists.txt
@@ -46,6 +46,7 @@ python_install(
   DESTINATION lofarpipe/recipes)
 
 install(PROGRAMS
+  bin/calibration_pipeline.py
   bin/msss_calibrator_pipeline.py
   bin/msss_imager_pipeline.py
   bin/msss_target_pipeline.py
diff --git a/CEP/Pipeline/recipes/sip/bin/calibration_pipeline.py b/CEP/Pipeline/recipes/sip/bin/calibration_pipeline.py
new file mode 100644
index 0000000000000000000000000000000000000000..a469008c490315e3d56ea8982428fc11aa22b3b3
--- /dev/null
+++ b/CEP/Pipeline/recipes/sip/bin/calibration_pipeline.py
@@ -0,0 +1,236 @@
+#!/usr/bin/env python
+#                                                     LOFAR CALIBRATION PIPELINE
+#
+#                                                    Calibration Pipeline recipe
+#                                                             Marcel Loose, 2012
+#                                                                loose@astron.nl
+# ------------------------------------------------------------------------------
+
+import os
+import sys
+
+from lofarpipe.support.control import control
+from lofarpipe.support.group_data import validate_data_maps, tally_data_map
+from lofarpipe.support.lofarexceptions import PipelineException
+from lofarpipe.support.utilities import create_directory
+from lofar.parameterset import parameterset
+
+class calibration_pipeline(control):
+    """
+    The calibration pipeline can be used to pre-process raw UV-data (i.e.
+    average in time and frequency, flag RFI, and demix strong A-team sources),
+    and to calibrate these data using a user-supplied sky model.
+    
+    This pipeline will perform the following operations:
+    
+    1. Prepare phase, collect data from parset and input mapfiles.
+    2. Create VDS-file; it will contain important input-data for NDPPP
+    3. Average and flag data, and demix A-team sources using NDPPP.
+    4. Create a sourcedb from the user-supplied sky model, and an empty parmdb.
+    5. Run BBS to calibrate the data.
+    """
+    
+    def __init__(self):
+        super(calibration_pipeline, self).__init__()
+        self.parset = parameterset()
+        self.input_data = []
+        self.output_data = []
+        self.io_data_mask = []
+        self.parset_feedback_file = None
+
+
+    def usage(self):
+        """
+        Display usage
+        """
+        print >> sys.stderr, "Usage: %s [options] <parset-file>" % sys.argv[0]
+        return 1
+
+
+    def _get_io_product_specs(self):
+        """
+        Get input- and output-data product specifications from the
+        parset-file, and do some sanity checks.
+        """
+        dataproducts = self.parset.makeSubset(
+            self.parset.fullModuleName('DataProducts') + '.'
+        )
+        self.input_data = [
+            tuple(os.path.join(location, filename).split(':'))
+                for location, filename, skip in zip(
+                    dataproducts.getStringVector('Input_Correlated.locations'),
+                    dataproducts.getStringVector('Input_Correlated.filenames'),
+                    dataproducts.getBoolVector('Input_Correlated.skip'))
+                if not skip
+        ]
+        self.logger.debug("%d Input_Correlated data products specified" %
+                          len(self.input_data))
+        self.output_data = [
+            tuple(os.path.join(location, filename).split(':'))
+                for location, filename, skip in zip(
+                    dataproducts.getStringVector('Output_Correlated.locations'),
+                    dataproducts.getStringVector('Output_Correlated.filenames'),
+                    dataproducts.getBoolVector('Output_Correlated.skip'))
+                if not skip
+        ]
+        self.logger.debug("%d Output_Correlated data products specified" %
+                          len(self.output_data))
+        # Sanity checks on input- and output data product specifications
+        if not validate_data_maps(self.input_data, self.output_data):
+            raise PipelineException(
+                "Validation of input/output data product specification failed!"
+            )
+        # Validate input data, by searching the cluster for files
+        self._validate_input_data()
+        # Update input- and output-data product specifications if needed
+        if not all(self.io_data_mask):
+            self.logger.info("Updating input/output product specifications")
+            self.input_data = [
+                f for (f, m) in zip(self.input_data, self.io_data_mask) if m
+            ]
+            self.output_data = [
+                f for (f, m) in zip(self.output_data, self.io_data_mask) if m
+            ]
+
+
+    def _validate_input_data(self):
+        """
+        Search for the requested input files and mask the files in
+        `self.input_data[]` that could not be found on the system.
+        """
+        # Use filename glob-pattern as defined in LOFAR-USG-ICD-005.
+        self.io_data_mask = tally_data_map(
+            self.input_data, 'L*_SB???_uv.MS', self.logger
+        )
+        # Log a warning if not all input data files were found.
+        if not all(self.io_data_mask):
+            self.logger.warn(
+                "The following input data files were not found: %s" %
+                ', '.join(
+                    ':'.join(f) for (f, m) in zip(
+                        self.input_data, self.io_data_mask
+                    ) if not m
+                )
+            )
+
+
+    def go(self):
+        """
+        Read the parset-file that was given as input argument;
+        set jobname, and input/output data products before calling the
+        base-class's `go()` method.
+        """
+        try:
+            parset_file = os.path.abspath(self.inputs['args'][0])
+        except IndexError:
+            return self.usage()
+        self.parset.adoptFile(parset_file)
+        self.parset_feedback_file = parset_file + "_feedback"
+
+        # Set job-name to basename of parset-file w/o extension, if it's not
+        # set on the command-line with '-j' or '--job-name'
+        if not self.inputs.has_key('job_name'):
+            self.inputs['job_name'] = (
+                os.path.splitext(os.path.basename(parset_file))[0])
+
+        # Call the base-class's `go()` method.
+        return super(calibration_pipeline, self).go()
+
+
+    def pipeline_logic(self):
+        """
+        Define the individual tasks that comprise the current pipeline.
+        This method will be invoked by the base-class's `go()` method.
+        """
+        # *********************************************************************
+        # 1. Prepare phase, collect data from parset and input mapfiles.
+        py_parset = self.parset.makeSubset(
+            self.parset.fullModuleName('PythonControl') + '.')
+
+        # Get input/output-data products specifications.
+        self._get_io_product_specs()
+
+        job_dir = self.config.get("layout", "job_directory")
+        parset_dir = os.path.join(job_dir, "parsets")
+        mapfile_dir = os.path.join(job_dir, "mapfiles")
+
+        # Create directories for temporary parset- and map files
+        create_directory(parset_dir)
+        create_directory(mapfile_dir)
+
+        # Write input- and output data map-files
+        input_data_mapfile = os.path.join(mapfile_dir, "input_data.mapfile")
+        self._store_data_map(input_data_mapfile, self.input_data, "inputs")
+        output_data_mapfile = os.path.join(mapfile_dir, "output_data.mapfile")
+        self._store_data_map(output_data_mapfile, self.output_data, "output")
+
+        if len(self.input_data) == 0:
+            self.logger.warn("No input data files to process. Bailing out!")
+            return 0
+
+        self.logger.debug("Processing: %s" %
+            ', '.join(':'.join(f) for f in self.input_data))
+
+        # *********************************************************************
+        # 2. Create VDS-file; it will contain important input-data for NDPPP
+        gvds_file = self.run_task("vdsmaker", input_data_mapfile)['gvds']
+
+        # Read metadata (start, end times, pointing direction) from GVDS.
+        vdsinfo = self.run_task("vdsreader", gvds=gvds_file)
+
+        # *********************************************************************
+        # 3. Average and flag data, using NDPPP.
+        ndppp_parset = os.path.join(parset_dir, "NDPPP.parset")
+        py_parset.makeSubset('DPPP.').writeFile(ndppp_parset)
+
+        # Run the Default Pre-Processing Pipeline (DPPP);
+        dppp_mapfile = self.run_task("ndppp",
+            input_data_mapfile,
+            data_start_time=vdsinfo['start_time'],
+            data_end_time=vdsinfo['end_time'],
+            parset=ndppp_parset)['mapfile']
+
+        # *********************************************************************
+        # 4. Create a sourcedb from the user-supplied sky model, 
+        #    and an empty parmdb.
+        skymodel = py_parset.getString('Calibration.SkyModel')
+
+        # The user-supplied sky model can either be a name, in which case the
+        # pipeline will search for a file <name>.skymodel in the default search
+        # path $LOFARROOT/share/pipeline/skymodels; or a full path.
+        # It is an error if the file does not exist.
+        if not os.path.isabs(skymodel):
+            skymodel = os.path.join(
+                # This should really become os.environ['LOFARROOT']
+                self.config.get('DEFAULT', 'lofarroot'),
+                'share', 'pipeline', 'skymodels', skymodel + '.skymodel'
+            )
+        if not os.path.isfile(skymodel):
+            raise PipelineException("Skymodel %s does not exist" % skymodel)
+
+        sourcedb_mapfile = self.run_task(
+            "setupsourcedb", dppp_mapfile, 
+            skymodel=skymodel
+        )['mapfile']
+
+        parmdb_mapfile = self.run_task(
+            "setupparmdb", dppp_mapfile
+        )['mapfile']
+
+        # *********************************************************************
+        # 5. Run BBS to calibrate the data.
+
+        # Create a parameter subset for BBS
+        bbs_parset = os.path.join(parset_dir, "BBS.parset")
+        py_parset.makeSubset('BBS.').writeFile(bbs_parset)
+
+        self.run_task("bbs_reducer",
+            (dppp_mapfile, output_data_mapfile),
+            parset=bbs_parset,
+            instrument_mapfile=parmdb_mapfile,
+            sky_mapfile=sourcedb_mapfile
+        )
+
+
+if __name__ == '__main__':
+    sys.exit(calibration_pipeline().main())
diff --git a/CEP/Pipeline/recipes/sip/nodes/imager_source_finding.py b/CEP/Pipeline/recipes/sip/nodes/imager_source_finding.py
index 06d293f52cca47524c2bfac07320c927e2d5bbff..b8f41a9f7c1339217a749eee4bb421964f6ca12c 100644
--- a/CEP/Pipeline/recipes/sip/nodes/imager_source_finding.py
+++ b/CEP/Pipeline/recipes/sip/nodes/imager_source_finding.py
@@ -92,6 +92,7 @@ class imager_source_finding(LOFARnodeTCP):
                     pass  #do nothing
                 bdsm_parameters[key] = parameter_value
 
+
             # *****************************************************************
             # 3. Start pybdsm
             self.logger.debug(
@@ -119,7 +120,7 @@ class imager_source_finding(LOFARnodeTCP):
             img.write_catalog(
                 outfile=catalog_output_path + "_{0}".format(str(idx)),
                 catalog_type='gaul', clobber=True,
-                format="bbs")
+                format="bbs", force_output=True)
 
             self.logger.debug("Wrote list of sources to file at: {0})".format(
                                                         catalog_output_path))
diff --git a/CEP/Pipeline/recipes/sip/pipeline.cfg.in b/CEP/Pipeline/recipes/sip/pipeline.cfg.in
index 0ac8e373673366a5236dd3113798ba1d1eb09c5c..83de06dd17cf1d3f7749a5cf11064c105b4c1906 100644
--- a/CEP/Pipeline/recipes/sip/pipeline.cfg.in
+++ b/CEP/Pipeline/recipes/sip/pipeline.cfg.in
@@ -11,7 +11,7 @@ working_directory = /data/scratch/$ENV{USER}
 task_files = [%(lofarroot)s/share/pipeline/tasks.cfg]
 
 [layout]
-job_directory = %(runtime_directory)s/jobs/%(job_name)s
+job_directory = %(runtime_directory)s/%(job_name)s
 
 [cluster]
 clusterdesc = %(lofarroot)s/share/cep2.clusterdesc
@@ -21,5 +21,5 @@ engine_ppath = %(pythonpath)s:%(pyraproot)s/lib:/opt/cep/pythonlibs/lib/python/s
 engine_lpath = %(lofarroot)s/lib:%(casaroot)s/lib:%(pyraproot)s/lib:%(hdf5root)s/lib:%(wcsroot)s/lib
 
 [logging]
-log_file = %(runtime_directory)s/jobs/%(job_name)s/logs/%(start_time)s/pipeline.log
+log_file = %(runtime_directory)s/%(job_name)s/logs/%(start_time)s/pipeline.log
 
diff --git a/CEP/Pipeline/recipes/sip/tasks.cfg.in b/CEP/Pipeline/recipes/sip/tasks.cfg.in
index 7c64df2816e5ae842bcaad300420653392977267..bb8d2472f7c0c8342f5c3ee6c7a0910e7144ce84 100644
--- a/CEP/Pipeline/recipes/sip/tasks.cfg.in
+++ b/CEP/Pipeline/recipes/sip/tasks.cfg.in
@@ -2,8 +2,8 @@
 recipe = dppp
 executable = %(lofarroot)s/bin/NDPPP
 dry_run = False
-mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/dppp.mapfile
-parset = %(runtime_directory)s/jobs/%(job_name)s/parsets/NDPPP.parset
+mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/dppp.mapfile
+parset = %(runtime_directory)s/%(job_name)s/parsets/NDPPP.parset
 #demix_always =
 #demix_if_needed = CasA
 nproc = 1
@@ -12,22 +12,22 @@ clobber = False
 
 [vdsreader]
 recipe = vdsreader
-gvds = %(runtime_directory)s/jobs/%(job_name)s/vds/%(job_name)s.gvds
+gvds = %(runtime_directory)s/%(job_name)s/vds/%(job_name)s.gvds
 
 [setupparmdb]
 recipe = setupparmdb
 executable = %(lofarroot)s/bin/parmdbm
-mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/parmdb.mapfile
+mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/parmdb.mapfile
 
 [setupsourcedb]
 recipe = setupsourcedb
 executable = %(lofarroot)s/bin/makesourcedb
-mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/sky.mapfile
+mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/sky.mapfile
 
 [vdsmaker]
 recipe = vdsmaker
-directory = %(runtime_directory)s/jobs/%(job_name)s/vds
-gvds = %(runtime_directory)s/jobs/%(job_name)s/vds/%(job_name)s.gvds
+directory = %(runtime_directory)s/%(job_name)s/vds
+gvds = %(runtime_directory)s/%(job_name)s/vds/%(job_name)s.gvds
 makevds = %(lofarroot)s/bin/makevds
 combinevds = %(lofarroot)s/bin/combinevds
 
@@ -35,20 +35,20 @@ combinevds = %(lofarroot)s/bin/combinevds
 recipe = new_bbs
 control_exec = %(lofarroot)s/bin/GlobalControl
 kernel_exec = %(lofarroot)s/bin/KernelControl
-parset = %(runtime_directory)s/jobs/%(job_name)s/parsets/BBS.parset
-gvds = %(runtime_directory)s/jobs/%(job_name)s/vds/%(job_name)s.gvds
+parset = %(runtime_directory)s/%(job_name)s/parsets/BBS.parset
+gvds = %(runtime_directory)s/%(job_name)s/vds/%(job_name)s.gvds
 db_key = %(job_name)s
 db_host = ldb001
 db_user = postgres
 db_name = $ENV{USER}
-instrument_mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/instrument.mapfile
-sky_mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/sky.mapfile
-data_mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/bbs.mapfile
+instrument_mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/instrument.mapfile
+sky_mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/sky.mapfile
+data_mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/bbs.mapfile
 
 [gainoutliercorrection]
 recipe = gainoutliercorrection
 executable = '' # Comment out the executable, for now use the  editparmdb behaviour. #%(lofarroot)s/bin/parmexportcal
-mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/instrument.mapfile
+mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/instrument.mapfile
 
 [rficonsole]
 recipe = rficonsole
@@ -88,13 +88,13 @@ fillrootimagegroup_exec = %(lofarroot)s/bin/fillRootImageGroup
 
 [copier]
 recipe = copier
-mapfiles_dir = %(runtime_directory)s/jobs/%(job_name)s/mapfiles
+mapfiles_dir = %(runtime_directory)s/%(job_name)s/mapfiles
 
 [bbs_reducer]
 recipe = bbs_reducer
 executable = %(lofarroot)s/bin/bbs-reducer
-parset = %(runtime_directory)s/jobs/%(job_name)s/parsets/bbs.parset
-instrument_mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/instrument.mapfile
-sky_mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/sky.mapfile
-data_mapfile = %(runtime_directory)s/jobs/%(job_name)s/mapfiles/bbs.mapfile
+parset = %(runtime_directory)s/%(job_name)s/parsets/bbs.parset
+instrument_mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/instrument.mapfile
+sky_mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/sky.mapfile
+data_mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/bbs.mapfile
 
diff --git a/CEP/Pipeline/test/pipeline_test.run b/CEP/Pipeline/test/pipeline_test.run
index 7afad961b81abe0b40919b7641574134888235ff..935f0a1a00d0c2b01c0d1846bca4741306cb8076 100755
--- a/CEP/Pipeline/test/pipeline_test.run
+++ b/CEP/Pipeline/test/pipeline_test.run
@@ -12,3 +12,9 @@ PYTHONPATH=${srcdir}/test_framework/fixture:${PYTHONPATH}
 export PYTHONPATH
 
 python ${srcdir}/test_framework/unittest_runner.py -x results.xml -p ${srcdir}
+
+if [ $? -ne 0 ]; then
+  return 1
+else
+  return 0
+fi
diff --git a/CEP/PyBDSM/src/python/_version.py b/CEP/PyBDSM/src/python/_version.py
index 2535502bdd038165839baa1f496e681f0b7e40f5..0437d0183a6f9a26fe9e77907dc05907df10797e 100644
--- a/CEP/PyBDSM/src/python/_version.py
+++ b/CEP/PyBDSM/src/python/_version.py
@@ -36,6 +36,8 @@ def changelog():
 
     2012/10/09 - Version 1.4.5
 
+    2012/10/12 - Version 1.4.5
+
     2012/10/12 - Added option ("incl_empty") to include empty islands (that
         have no un-flagged Gaussians) in output catalogs. Any such empty
         islands are given negative source IDs and positions given by the
diff --git a/CEP/PyBDSM/src/python/functions.py b/CEP/PyBDSM/src/python/functions.py
index 9b707b2d9098cf120e85dba729921fe6ed4ec35a..8f33f234d9ef223b09ccc4a6a67008c39807b5f4 100755
--- a/CEP/PyBDSM/src/python/functions.py
+++ b/CEP/PyBDSM/src/python/functions.py
@@ -518,11 +518,12 @@ def imageshift(image, shift):
 def trans_gaul(q):
     " transposes a tuple "
     y=[]
-    for i in range(len(q[0])):
-        elem=[]
-        for j in range(len(q)):
-            elem.append(q[j][i])
-        y.append(elem)
+    if len(q) > 0:
+        for i in range(len(q[0])):
+            elem=[]
+            for j in range(len(q)):
+                elem.append(q[j][i])
+            y.append(elem)
     return y
 
 def momanalmask_gaus(subim, mask, isrc, bmar_p, allpara=True):
diff --git a/CEP/PyBDSM/src/python/interface.py b/CEP/PyBDSM/src/python/interface.py
index 861287cb351e6de3f24588fb777cdcdc780ac342..5bbd5763648b675db0a2cfc5d2bac1b5898631a5 100644
--- a/CEP/PyBDSM/src/python/interface.py
+++ b/CEP/PyBDSM/src/python/interface.py
@@ -677,7 +677,8 @@ def export_image(img, outfile=None, img_format='fits',
 
 
 def write_catalog(img, outfile=None, format='bbs', srcroot=None, catalog_type='gaul',
-               bbs_patches=None, incl_chan=False, incl_empty=False, clobber=False):
+               bbs_patches=None, incl_chan=False, incl_empty=False, clobber=False,
+               force_output=False):
     """Write the Gaussian, source, or shapelet list to a file. Returns True if
     successful, False if not.
 
@@ -708,6 +709,7 @@ def write_catalog(img, outfile=None, format='bbs', srcroot=None, catalog_type='g
     sort_by - Property to sort output list by:
         "flux" - sort by total integrated flux, largest first
         "indx" - sort by Gaussian and island or source index, smallest first
+    force_output - Force the creation of a catalog, even if it is empty
     clobber - Overwrite existing file?
     """
     import output
@@ -740,9 +742,10 @@ def write_catalog(img, outfile=None, format='bbs', srcroot=None, catalog_type='g
         print '\033[91mERROR\033[0m: catalog_type must be "gaul", '\
               '"srl", or "shap"'
         return False
-    if img.ngaus == 0:
-        print 'No Gaussians were fit to image. Output file not written.'
-        return False
+    if (len(img.sources) == 0 and not incl_empty) or (len(img.sources) == 0 and len(img.dsources) == 0 and incl_empty):
+        if not force_output:
+            print 'No sources were found in the image. Output file not written.'
+            return False
     if filename == '': filename = None
 
     # Now go format by format and call appropriate function
diff --git a/CEP/PyBDSM/src/python/output.py b/CEP/PyBDSM/src/python/output.py
index ffdc104793b74f58569d258879716e66a72565c6..b7290c3c1ed8bff35026e87d24d564f61bfea808 100644
--- a/CEP/PyBDSM/src/python/output.py
+++ b/CEP/PyBDSM/src/python/output.py
@@ -388,20 +388,23 @@ def write_fits_list(img, filename=None, sort_by='index', objtype='gaul',
         incl_aper = True
     else:
         incl_aper = False
-    cvals, cnames, cformats, cunits = make_output_columns(outl[0][0], fits=True,
-                                                          objtype=objtype,
-                                                          incl_spin=img.opts.spectralindex_do,
-                                                          incl_chan=img.opts.incl_chan,
-                                                          incl_pol=img.opts.polarisation_do,
-                                                          incl_aper=incl_aper,
-                                                          incl_empty=incl_empty,
-                                                          nmax=nmax, nchan=img.nchan)
+    if len(outl[0]) > 0:
+        cvals, cnames, cformats, cunits = make_output_columns(outl[0][0], fits=True,
+                                                              objtype=objtype,
+                                                              incl_spin=img.opts.spectralindex_do,
+                                                              incl_chan=img.opts.incl_chan,
+                                                              incl_pol=img.opts.polarisation_do,
+                                                              incl_aper=incl_aper,
+                                                              incl_empty=incl_empty,
+                                                              nmax=nmax, nchan=img.nchan)
     out_list = make_fits_list(img, outl, objtype=objtype, nmax=nmax)
     col_list = []
     for ind, col in enumerate(out_list):
       list1 = pyfits.Column(name=cnames[ind], format=cformats[ind],
                             unit=cunits[ind], array=N.array(out_list[ind]))
       col_list.append(list1)
+    if len(col_list) == 0:
+        col_list = [pyfits.Column(name='Blank', format='1J')]
     tbhdu = pyfits.new_table(col_list)
     if objtype == 'gaul':
         tbhdu.header.add_comment('Gaussian list for '+img.filename)
@@ -504,7 +507,14 @@ def make_bbs_str(img, glist, gnames, patchnames):
 
     outstr_list = []
     freq = "%.5e" % img.frequency
-    if patchnames[0] == None:
+
+    if len(patchnames) == 0:
+        # Handle empty list: just write default header
+        outstr_list.append("format = Name, Type, Ra, Dec, I, Q, U, V, "\
+                               "MajorAxis, MinorAxis, Orientation, "\
+                               "ReferenceFrequency='"+freq+"', "\
+                               "SpectralIndex='[]'\n\n")
+    elif patchnames[0] == None:
         outstr_list.append("format = Name, Type, Ra, Dec, I, Q, U, V, "\
                                "MajorAxis, MinorAxis, Orientation, "\
                                "ReferenceFrequency='"+freq+"', "\
diff --git a/CEP/PyBDSM/src/python/rmsimage.py b/CEP/PyBDSM/src/python/rmsimage.py
index dd100e891dc139177ecad74ecc227ba258924c44..9e67aec0f743009ebd9d26025a88f1b04d92d85f 100644
--- a/CEP/PyBDSM/src/python/rmsimage.py
+++ b/CEP/PyBDSM/src/python/rmsimage.py
@@ -409,6 +409,7 @@ class Op_rmsimage(Op):
         """Calls map_2d and checks for problems"""
         mylog = mylogger.logging.getLogger("PyBDSM."+img.log+"Rmsimage.Calcmaps ")
         rms_ok = False
+        mylog = mylogger.logging.getLogger("PyBDSM."+img.log+"Rmsimage.Calcmaps ")
         opts = img.opts
         while not rms_ok:
             self.map_2d(data, mean, rms, mask, *map_opts, do_adapt=do_adapt,
diff --git a/CMake/FindCFITSIO.cmake b/CMake/FindCFITSIO.cmake
index 85c26039240cb32123b871c5c35390098ee20fb3..108ab0c1e07751e2393e84cd913fe4a9cf656ca5 100644
--- a/CMake/FindCFITSIO.cmake
+++ b/CMake/FindCFITSIO.cmake
@@ -33,7 +33,7 @@
 if(NOT CFITSIO_FOUND)
 
   find_path(CFITSIO_INCLUDE_DIR fitsio.h
-    HINTS ${CFITSIO_ROOT_DIR} PATH_SUFFIXES include)
+    HINTS ${CFITSIO_ROOT_DIR} PATH_SUFFIXES include include/cfitsio include/libcfitsio0)
   find_library(CFITSIO_LIBRARY cfitsio
     HINTS ${CFITSIO_ROOT_DIR} PATH_SUFFIXES lib)
   find_library(M_LIBRARY m)
diff --git a/JAVA/GUI/Plotter/pom.xml b/JAVA/GUI/Plotter/pom.xml
index a43779f5aafa078cd7a822a1a42120425ca82dee..e64802db0d743b7fe5a942c340296fd18f2aac9d 100644
--- a/JAVA/GUI/Plotter/pom.xml
+++ b/JAVA/GUI/Plotter/pom.xml
@@ -1,48 +1,47 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar Utilities :: Plotter GUI</name>
-
-  <parent>
-    <groupId>nl.astron.lofar.lib</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>plotter</artifactId>
-  
-  
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA/GUI/Plotter</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA/GUI/Plotter</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-    <sourceDirectory>src</sourceDirectory>
-    <resources>
-      <resource>
-        <directory>src</directory>
-        <excludes>
-          <exclude>**/*.java</exclude>
-        </excludes>
-      </resource>
-
-      <resource>
-        <directory>PlotterConfig/src</directory>
-        <excludes>
-          <exclude>**/*.java</exclude>
-        </excludes>
-      </resource>
-    </resources>
-
-  </build>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar Utilities :: Plotter GUI</name>
+
+  <parent>
+    <groupId>nl.astron.lofar.lib</groupId>
+    <artifactId>lofar-lib-parent</artifactId>
+    <version>1.8.2-SNAPSHOT</version>
+    <relativePath>../../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>plotter</artifactId>
+  
+  
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA/GUI/Plotter</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA/GUI/Plotter</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+        </excludes>
+      </resource>
+
+      <resource>
+        <directory>PlotterConfig/src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+        </excludes>
+      </resource>
+    </resources>
+
+  </build>
+
+</project>
diff --git a/JAVA/LofarUtils/pom.xml b/JAVA/LofarUtils/pom.xml
index 4cad4c71dbe3c50a1aaa7f5cc558da7b9dda4447..f60c7c769cb184354b4d9c4bbaca52e0e19cf57f 100644
--- a/JAVA/LofarUtils/pom.xml
+++ b/JAVA/LofarUtils/pom.xml
@@ -1,52 +1,52 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar Utilities :: LofarUtils</name>
-
-  <parent>
-    <groupId>nl.astron.lofar.lib</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>lofarutils</artifactId>
-
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA/LofarUtils</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA/LofarUtils</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-    <sourceDirectory>src</sourceDirectory>
-    <resources>
-      <resource>
-        <directory>src</directory>
-        <excludes>
-          <exclude>**/*.java</exclude>
-        </excludes>
-      </resource>
-    </resources>
-  </build>
-
-
-  <!-- This element describes all of the dependencies associated with a project. 
-    These dependencies are used to construct a classpath for your project during 
-    the build process. They are automatically downloaded from the repositories 
-    defined in this project. See for more information: 
-    http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html -->
-  <dependencies>
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-  </dependencies>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar Utilities :: LofarUtils</name>
+
+  <parent>
+    <groupId>nl.astron.lofar.lib</groupId>
+    <artifactId>lofar-lib-parent</artifactId>
+    <version>1.8.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>lofarutils</artifactId>
+
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA/LofarUtils</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA/LofarUtils</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+        </excludes>
+      </resource>
+    </resources>
+  </build>
+
+
+  <!-- This element describes all of the dependencies associated with a project. 
+    These dependencies are used to construct a classpath for your project during 
+    the build process. They are automatically downloaded from the repositories 
+    defined in this project. See for more information: 
+    http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html -->
+  <dependencies>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>
+
diff --git a/JAVA/pom.xml b/JAVA/pom.xml
index 07cdabed8142d15a47d1f5ae7f66346bc6c82edc..da792280c5dac1a0bc5e0a427cab13372f147581 100644
--- a/JAVA/pom.xml
+++ b/JAVA/pom.xml
@@ -1,61 +1,61 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar Utilities :: Parent</name>
-
-  <parent>
-    <groupId>nl.astron</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <groupId>nl.astron.lofar.lib</groupId>
-  <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
-
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA</developerConnection>
-  </scm>
-
-
-  <!-- The modules (sometimes called subprojects) to build as a part of this 
-    project. Each module listed is a relative path to the directory containing 
-    the module. -->
-  <modules>
-    <module>LofarUtils</module>
-    <module>GUI/Plotter</module>
-  </modules>
-
-
-  <!-- Default dependency information for projects that inherit from this 
-    one. The dependencies in this section are not immediately resolved. Instead, 
-    when a POM derived from this one declares a dependency described by a matching 
-    groupId and artifactId, the version and other values from this section are 
-    used for that dependency if they were not already specified. -->
-  <dependencyManagement>
-    <dependencies>
-
-      <!-- Child dependencies, childs use the same group-ID and version by default. -->
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>lofarutils</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>plotter</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-    </dependencies>
-  </dependencyManagement>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar Utilities :: Parent</name>
+
+  <parent>
+    <groupId>nl.astron</groupId>
+    <artifactId>parent</artifactId>
+    <version>2.0.0</version>
+  </parent>
+
+  <groupId>nl.astron.lofar.lib</groupId>
+  <artifactId>lofar-lib-parent</artifactId>
+  <version>1.8.2-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/JAVA</developerConnection>
+  </scm>
+
+
+  <!-- The modules (sometimes called subprojects) to build as a part of this 
+    project. Each module listed is a relative path to the directory containing 
+    the module. -->
+  <modules>
+    <module>LofarUtils</module>
+    <module>GUI/Plotter</module>
+  </modules>
+
+
+  <!-- Default dependency information for projects that inherit from this 
+    one. The dependencies in this section are not immediately resolved. Instead, 
+    when a POM derived from this one declares a dependency described by a matching 
+    groupId and artifactId, the version and other values from this section are 
+    used for that dependency if they were not already specified. -->
+  <dependencyManagement>
+    <dependencies>
+
+      <!-- Child dependencies, childs use the same group-ID and version by default. -->
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>lofarutils</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>plotter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+    </dependencies>
+  </dependencyManagement>
+
+</project>
diff --git a/LCS/Common/include/Common/i4complex.h b/LCS/Common/include/Common/i4complex.h
index 6366f47946db06af149b27267f59c29940d13f0b..901da26ca6c2820d418455a1a71141c16dd130b6 100644
--- a/LCS/Common/include/Common/i4complex.h
+++ b/LCS/Common/include/Common/i4complex.h
@@ -33,15 +33,24 @@ namespace LOFAR {
         i4complex() {}
 
 	i4complex(double real, double imag) {
-	  value = ((int) rint(real - .5) & 0xF) | (((int) rint(imag - .5) & 0xF) << 4);
+          int r = (int) rint(real);
+          int i = (int) rint(imag);
+
+          // clip to [-7..7] to center dynamic range around 0
+          if (r <= -8) r = -7;
+          if (i <= -8) i = -7;
+          if (r >= 8)  r = 7;
+          if (i >= 8)  i = 7;
+
+	  value = (r & 0xF) | ((i & 0xF) << 4);
 	}
 
 	double real() const {
-	  return ((signed char) (value << 4) >> 4) + .5; // extend sign
+	  return ((signed char) (value << 4) >> 4); // extend sign
 	}
 
 	double imag() const {
-	  return (value >> 4) + .5;
+	  return (value >> 4);
 	}
 
 	i4complex conj() const {
diff --git a/LCS/Common/src/InputParSet.cc b/LCS/Common/src/InputParSet.cc
index 17750b720acbffc5f57c129c28df19f6947b4a6e..b4f721b8b29781a6434be148a7baeb14e5bc3d55 100644
--- a/LCS/Common/src/InputParSet.cc
+++ b/LCS/Common/src/InputParSet.cc
@@ -208,7 +208,7 @@ namespace LOFAR {
 
   void InputParSet::setVersion (const string& version)
   {
-    itsVersion == version;
+    itsVersion = version;
 #ifdef HAVE_AIPSPP
     itsInput->version (version);
 #endif
diff --git a/LCS/MSLofar/src/CMakeLists.txt b/LCS/MSLofar/src/CMakeLists.txt
index e01ed535fa3a317030a1adcbe363207f51fecd18..1d417871b56d1a165fa08ad85fc72285f82da027 100644
--- a/LCS/MSLofar/src/CMakeLists.txt
+++ b/LCS/MSLofar/src/CMakeLists.txt
@@ -25,4 +25,5 @@ lofar_add_library(mslofar
 
 lofar_add_bin_program(versionmslofar versionmslofar.cc)
 lofar_add_bin_program(makebeamtables makebeamtables.cc)
+lofar_add_bin_program(addfailedtileinfo addfailedtileinfo.cc)
 
diff --git a/LCS/MSLofar/src/addfailedtileinfo.cc b/LCS/MSLofar/src/addfailedtileinfo.cc
new file mode 100644
index 0000000000000000000000000000000000000000..935d6485b80b7e2fb76542bb8e8988679681242c
--- /dev/null
+++ b/LCS/MSLofar/src/addfailedtileinfo.cc
@@ -0,0 +1,66 @@
+//# addfailedtileinfo.cc: Program to add failed tile info to an MS
+//# Copyright (C) 2012
+//# ASTRON (Netherlands Institute for Radio Astronomy)
+//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+//#
+//# This file is part of the LOFAR software suite.
+//# The LOFAR software suite is free software: you can redistribute it and/or
+//# modify it under the terms of the GNU General Public License as published
+//# by the Free Software Foundation, either version 3 of the License, or
+//# (at your option) any later version.
+//#
+//# The LOFAR software suite is distributed in the hope that it will be useful,
+//# but WITHOUT ANY WARRANTY; without even the implied warranty of
+//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//# GNU General Public License for more details.
+//#
+//# You should have received a copy of the GNU General Public License along
+//# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+//#
+//# $Id$
+//#
+//# @author Ger van Diepen
+
+#include <lofar_config.h>
+#include <MSLofar/FailedTileInfo.h>
+#include <MSLofar/Package__Version.h>
+#include <Common/InputParSet.h>
+#include <Common/SystemUtil.h>
+#include <Common/LofarLogger.h>
+
+using namespace LOFAR;
+
+int main (int argc, char* argv[])
+{
+  TEST_SHOW_VERSION (argc, argv, MSLofar);
+  INIT_LOGGER(basename(string(argv[0])));
+  try {
+    InputParSet inputs;
+    // Define the input parameters.
+    inputs.setVersion("2012Oct29-GvD");
+    inputs.create ("ms", "",
+		   "Name of MeasurementSet",
+		   "string");
+    inputs.create ("BrokenTileFile", "brokenTiles.txt",
+		   "File containing tiles broken before the observation",
+		   "string");
+    inputs.create ("FailedTileFile", "failedTiles.txt",
+		   "File containing tiles failing during the observation",
+		   "string");
+    inputs.readArguments (argc, argv);
+    string msName      = inputs.getString("ms");
+    string brokenName  = inputs.getString("BrokenTileFile");
+    string failedName  = inputs.getString("FailedTileFile");
+    ASSERT (! msName.empty());
+    ASSERT (! brokenName.empty());
+    ASSERT (! failedName.empty());
+    FailedTileInfo::failedTiles2MS (msName, brokenName, failedName); 
+  } catch (Exception& x) {
+    cerr << "Unexpected LOFAR exception: " << x << endl;
+    return 1;
+  } catch (std::exception& x) {
+    cerr << "Unexpected exception: " << x.what() << endl;
+    return 1;
+  }
+  return 0;
+}
diff --git a/LCS/MSLofar/src/makebeamtables.cc b/LCS/MSLofar/src/makebeamtables.cc
index 1d4661a4521f20b6ae7e4ec74aa8432974aa1e4e..4f20a3dfca07164cc4008cc2b8abbf39fce6001c 100644
--- a/LCS/MSLofar/src/makebeamtables.cc
+++ b/LCS/MSLofar/src/makebeamtables.cc
@@ -23,7 +23,10 @@
 
 #include <lofar_config.h>
 #include <MSLofar/BeamTables.h>
-#include <casa/Inputs.h>
+#include <MSLofar/Package__Version.h>
+#include <Common/InputParSet.h>
+#include <Common/SystemUtil.h>
+#include <Common/LofarLogger.h>
 #include <tables/Tables/ScalarColumn.h>
 #include <ms/MeasurementSets/MeasurementSet.h>
 
@@ -32,10 +35,12 @@ using namespace casa;
 
 int main (int argc, char* argv[])
 {
+  TEST_SHOW_VERSION (argc, argv, MSLofar);
+  INIT_LOGGER(basename(string(argv[0])));
   try {
-    Input inputs(1);
+    InputParSet inputs;
     // define the input structure
-    inputs.version("2011Mar31-GvD");
+    inputs.setVersion("2012Oct29-GvD");
     inputs.create ("ms", "",
 		   "Name of MeasurementSet",
 		   "string");
@@ -52,7 +57,7 @@ int main (int argc, char* argv[])
 		   "Directory where the iHBADelta.conf files reside",
 		   "string");
     inputs.create ("overwrite", "false",
-                   "Overwriting existing beam subtables?"
+                   "Overwriting existing beam subtables?",
                    "bool");
     inputs.readArguments (argc, argv);
     String msName      = inputs.getString("ms");
diff --git a/LCS/Stream/include/Stream/FileStream.h b/LCS/Stream/include/Stream/FileStream.h
index 9af3c751064f3e14349c18806dbc8187c2bfdd5d..ee2cb7f3eebd57d7724cfba9a046467e5cdaf85c 100644
--- a/LCS/Stream/include/Stream/FileStream.h
+++ b/LCS/Stream/include/Stream/FileStream.h
@@ -39,6 +39,8 @@ class FileStream : public FileDescriptorBasedStream
     virtual ~FileStream();
 
     virtual void skip( size_t bytes ); // seek ahead
+
+    virtual size_t size(); // return file size
 };
 
 } // namespace LOFAR
diff --git a/LCS/Stream/src/FileStream.cc b/LCS/Stream/src/FileStream.cc
index 55951be3874a77c89cd57fa9ddfb2f7c794133c1..b28d0bf11e9af20c0a7475d30acb07975a898a25 100644
--- a/LCS/Stream/src/FileStream.cc
+++ b/LCS/Stream/src/FileStream.cc
@@ -68,4 +68,18 @@ void FileStream::skip(size_t bytes)
     throw SystemCallException("lseek", errno, THROW_ARGS);
 }
 
+size_t FileStream::size()
+{
+  // lseek returning -1 can be either an error, or theoretically,
+  // a valid new file position. To make sure, we need to
+  // clear and check errno.
+  errno = 0;
+  off_t pos = lseek(fd, 0, SEEK_END);
+
+  if (pos == (off_t)-1 && errno)
+    throw SystemCallException("lseek", errno, THROW_ARGS);
+
+  return pos;
+}
+
 } // namespace LOFAR
diff --git a/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.cc b/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.cc
index f84a7f980449a732ff9b6737bd789831f3b7022c..fcbadf571d369021fef61bc4cd48a3263431cdef 100644
--- a/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.cc
+++ b/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.cc
@@ -24,7 +24,6 @@
 #include <Common/LofarConstants.h>
 #include <Common/LofarLocators.h>
 #include <Common/StringUtil.h>
-#include <Common/ParameterSet.h>
 #include <ApplCommon/LofarDirs.h>
 #include <ApplCommon/Observation.h>
 #include <ApplCommon/StationInfo.h>
@@ -53,9 +52,62 @@ namespace LOFAR {
     
 // static pointer to this object for signal handler
 static CEPlogProcessor*     thisLogProcessor = 0;
-#define MPIProcs 16
 
 
+CEPFeedback::CEPFeedback()
+:
+  nrSubbands(0)
+{
+}
+
+
+void CEPFeedback::write(const std::string &filename)
+{
+  LOG_DEBUG_STR("Writing feedback file " << filename);
+
+  parset.replace(subbandSizeKey(), formatString("%u", nrSubbands));
+
+  parset.writeFile(filename);
+}
+
+
+void CEPFeedback::addSubband(unsigned index)
+{
+  setSubbandKey(index, "fileFormat",           "AIPS++/CASA");
+  setSubbandKey(index, "filename",             "");
+  setSubbandKey(index, "size",                 "0");
+  setSubbandKey(index, "location",             "");
+  setSubbandKey(index, "percentageWritten",    "0");
+  setSubbandKey(index, "startTime",            "");
+  setSubbandKey(index, "duration",             "");
+  setSubbandKey(index, "integrationInterval",  "");
+  setSubbandKey(index, "centralFrequency",     "");
+  setSubbandKey(index, "channelWidth",         "");
+  setSubbandKey(index, "channelsPerSubband",   "");
+  setSubbandKey(index, "subband",              "");
+  setSubbandKey(index, "stationSubband",       "");
+  setSubbandKey(index, "SAP",                  "");
+
+  ++nrSubbands;
+}
+
+void CEPFeedback::setSubbandKey(unsigned index, const std::string &key, const std::string &value)
+{
+  LOG_DEBUG_STR("setSubbandKey for index " << index << ": " << key << " = " << value);
+
+  parset.replace(subbandPrefix(index) + key, value);
+}
+
+std::string CEPFeedback::subbandSizeKey() const
+{
+  return "LOFAR.ObsSW.Observation.DataProducts.nrOfOutput_Correlated_";
+}
+
+std::string CEPFeedback::subbandPrefix(unsigned index) const
+{
+  return formatString("LOFAR.ObsSW.Observation.DataProducts.Output_Correlated_[%u].", index);
+}
+
 //
 // CEPlogProcessor()
 //
@@ -416,9 +468,13 @@ void CEPlogProcessor::processParset( const std::string &observationID )
     string filename(formatString("%s/Observation%s", 
                                  LOFAR_SHARE_LOCATION, observationID.c_str()));
 
-    ParameterSet parset(filename);
+    LOG_INFO_STR("Reading parset for observation " << observationID << " from " << filename);
 
+    ParameterSet parset(filename);
     Observation obs(&parset, false, itsNrPsets);
+    string observationPrefix = parset.locateModule("Observation") + "Observation.";
+
+    CEPFeedback &feedback = itsCEPFeedback[obsID];
 
     unsigned nrStreams = obs.streamsToStorage.size();
 
@@ -468,11 +524,40 @@ void CEPlogProcessor::processParset( const std::string &observationID )
 
     if (parset.isDefined("_DPname")) {
       // register the temporary obs name
-      itsTempObsMapping.set( obsID, parset.getString("_DPname") );
+      registerObservation( obsID, parset.getString("_DPname") );
+    }
+
+    // process feedback for correlated data
+    unsigned nrCorrelatedStreams = 0;
+
+    for (unsigned i = 0; i < nrStreams; i++ ) {
+      Observation::StreamToStorage &s = obs.streamsToStorage[i];
+
+      if (s.dataProduct != "Correlated")
+        continue;
+
+      unsigned index = nrCorrelatedStreams;
+
+      feedback.addSubband(index);
+      feedback.setSubbandKey(index, "filename",             s.filename);
+      feedback.setSubbandKey(index, "location",             s.destStorageNode + ":" + s.destDirectory);
+      feedback.setSubbandKey(index, "startTime",            parset.getString(observationPrefix + "startTime"));
+
+      nrCorrelatedStreams++; 
     }
 }
 
 
+void CEPlogProcessor::writeFeedback( int obsID )
+{
+    // feedback parsets are to be stored in in LOFAR_SHARE_LOCATION
+    string filename(formatString("%s/Observation%d_feedback", 
+                                 LOFAR_SHARE_LOCATION, obsID));
+
+    itsCEPFeedback[obsID].write(filename);
+}
+
+
 //
 // operational(event, port)
 //
@@ -601,8 +686,11 @@ time_t CEPlogProcessor::_parseDateTime(const char *datestr, const char *timestr)
       tm.tm_year -= 1900;
     } else {
       // YY -- we won't see loglines pre 2000.
-      tm.tm_year += 110;
+      tm.tm_year += 100;
     }
+
+    // tm_mon starts counting from 0
+    tm.tm_mon--;
    }
 
   if (sscanf(timestr, "%u:%u:%u",  // ignore milliseconds
@@ -625,6 +713,8 @@ time_t CEPlogProcessor::_parseDateTime(const char *datestr, const char *timestr)
     ts = time(0L);
   }
 
+  LOG_DEBUG_STR("Timestamp: " << datestr << " " << timestr << " converted to " << ts);
+
   return ts;
 }
 
@@ -734,22 +824,18 @@ string CEPlogProcessor::getTempObsName(int obsID, const char *msg)
 
   // register the tempObsName if this line announces it
   if (sscanf(msg,"PVSS name: %[^\n]", &tempObsName[0]) == 1) {
-    LOG_DEBUG_STR("obs " << obsID << " is mapped to " << &tempObsName[0]);
-
-    if (!itsTempObsMapping.exists(obsID))
-      processParset(formatString("%d",obsID));
+    LOG_INFO_STR("Observation " << obsID << " is mapped to " << &tempObsName[0]);
 
-    if (itsTempObsMapping.exists(obsID))
-      ASSERTSTR(itsTempObsMapping.lookup(obsID) == string(&tempObsName[0]), "Observation ID remapped from " << itsTempObsMapping.lookup(obsID) << " to " << string(&tempObsName[0]));
-    else  
-      itsTempObsMapping.set( obsID, string(&tempObsName[0]) );
+    registerObservation( obsID, string(&tempObsName[0]) );
   }
 
-  if (!strcmp(msg,"----- Job finished succesfully")
-   || !strcmp(msg,"----- Job cancelled succesfully")) {
-    LOG_DEBUG_STR("obs " << obsID << " ended");
+  if (!strcmp(msg,"----- Job finished successfully")
+   || !strcmp(msg,"----- Job cancelled successfully")) {
+    LOG_INFO_STR("Observation " << obsID << " ended");
 
-    itsTempObsMapping.erase(obsID);
+    unregisterObservation(obsID);
+
+    return "";
   }
 
   // lookup the obsID in our list
@@ -761,6 +847,34 @@ string CEPlogProcessor::getTempObsName(int obsID, const char *msg)
   return itsTempObsMapping.lookup(obsID);
 }
 
+void CEPlogProcessor::registerObservation(int obsID, const std::string &tempObsName)
+{
+  if (itsTempObsMapping.exists(obsID)) {
+    ASSERTSTR(itsTempObsMapping.lookup(obsID) == tempObsName, "Observation ID remapped from " << itsTempObsMapping.lookup(obsID) << " to " << tempObsName);
+    return;
+  }
+
+  itsTempObsMapping.set(obsID, tempObsName);
+
+  itsCEPFeedback[obsID] = CEPFeedback();
+
+  processParset(formatString("%d",obsID));
+}
+
+void CEPlogProcessor::unregisterObservation(int obsID)
+{
+  if (!itsTempObsMapping.exists(obsID)) {
+    LOG_ERROR_STR("Observation ID " << obsID << " not registered. Cannot unregister.");
+    return;
+  }
+
+  writeFeedback(obsID);
+
+  itsCEPFeedback.erase(obsID);
+
+  itsTempObsMapping.erase(obsID);
+}
+
 
 // returns true if the given logline should be recorded in process.logMsg
 bool CEPlogProcessor::_recordLogMsg(const struct logline &logline) const
@@ -1007,29 +1121,80 @@ void CEPlogProcessor::_processStorageLine(const struct logline &logline)
       RTDBPropertySet *writer = itsWriters[writerIndex];
 
       if (_recordLogMsg(logline)) {
-          writer->setValue("process.logMsg", GCFPVString(logline.fullmsg), logline.timestamp, true);
+        writer->setValue("process.logMsg", GCFPVString(logline.fullmsg), logline.timestamp, true);
+      }
+
+      CEPFeedback *feedback = 0;
+      int streamNr = -1;
+
+      if (logline.obsID >= 0 && observationRegistered(logline.obsID)) {
+        feedback = &itsCEPFeedback[logline.obsID];
+        streamNr = _getParam(logline.target, "stream ");
+      }
+
+      if ((result = strstr(logline.msg, "Characteristics: "))) {
+        int subband = 0, channels = 0, SAP = 0;
+        double centralfreq = 0.0, integration = 0.0, channelwidth = 0.0, duration = 0.0;
+        if (sscanf(result, "Characteristics: SAP %d, subband %d, centralfreq %lf MHz, duration %lf s, integration %lf s, channels %u, channelwidth %lf kHz", &SAP, &subband, &centralfreq, &duration, &integration, &channels, &channelwidth) == 7) {
+
+          if (feedback) {
+            feedback->setSubbandKey(streamNr, "subband",             formatString("%d", streamNr));
+
+            feedback->setSubbandKey(streamNr, "SAP",                 formatString("%d", SAP));
+            feedback->setSubbandKey(streamNr, "stationSubband",      formatString("%d", subband));
+            feedback->setSubbandKey(streamNr, "integrationInterval", formatString("%.4lf", integration));
+            feedback->setSubbandKey(streamNr, "centralFrequency",    formatString("%.4lf", centralfreq));
+            feedback->setSubbandKey(streamNr, "channelsPerSubband",  formatString("%d", channels));
+            feedback->setSubbandKey(streamNr, "channelWidth",        formatString("%.4lf", channelwidth));
+            feedback->setSubbandKey(streamNr, "duration",            formatString("%.4lf", duration));
+          }
+
+          LOG_DEBUG_STR("Observation " << logline.obsID << " stream " << streamNr << " is subband " << subband << " at " << centralfreq << " MHz, with " << duration << " s duration, " << integration << " s integration and " << channels << " channels of " << channelwidth << " kHz");
+        }
+      }
+
+      if ((result = strstr(logline.msg, "Final characteristics: "))) {
+        int bytes = 0;
+        double duration = 0.0;
+        if (sscanf(result, "Final characteristics: duration %lf s, size %d bytes", &duration, &bytes) == 2) {
+
+          if (feedback) {
+            feedback->setSubbandKey(streamNr, "size",                formatString("%d", bytes));
+            feedback->setSubbandKey(streamNr, "duration",            formatString("%.4lf", duration));
+          }
+
+          LOG_DEBUG_STR("Observation " << logline.obsID << " stream " << streamNr << " has " << duration << " s duration and is " << bytes << " bytes");
+        }
       }
 
       // Storage_main@locus088 10-02-12 13:20:01.056 INFO  [obs 45784 type 2 stream  12 writer   0] [OutputThread] Written block with seqno = 479, 480 blocks written, 0 blocks dropped
       if ((result = strstr(logline.msg, "Written block"))) {
-        int seqno = 0, written = 0, dropped = 0;
-        if (sscanf(result, "Written block with seqno = %d, %d blocks written, %d blocks dropped", &seqno, &written, &dropped) == 3) {
+        int seqno = 0, written = 0, dropped = 0, perc_written = 0;
+        if (sscanf(result, "Written block with seqno = %d, %d blocks written (%d%%), %d blocks dropped", &seqno, &written, &perc_written, &dropped) == 4) {
           LOG_DEBUG(formatString("[%d] Written %d, dropped %d", writerNr, written, dropped));
           writer->setValue("written", GCFPVInteger(written), logline.timestamp, false);
           writer->setValue("dropped", GCFPVInteger(dropped), logline.timestamp, false);
           writer->flush();
+
+          if (feedback) {
+            feedback->setSubbandKey(streamNr, "percentageWritten", formatString("%d", perc_written));
+          }
         }
         return;
       }
 
       // Storage_main@locus088 10-02-12 13:20:01.057 INFO  [obs 45784 type 2 stream  12 writer   0] [OutputThread] Finished writing: 480 blocks written, 0 blocks dropped: 0% lost
       if ((result = strstr(logline.msg, "Finished writing"))) {
-        int written = 0, dropped = 0;
-        if (sscanf(result, "Finished writing: %d blocks written, %d blocks dropped", &written, &dropped) == 2) {
+        int written = 0, dropped = 0, perc_written = 0;
+        if (sscanf(result, "Finished writing: %d blocks written (%d%%), %d blocks dropped", &written, &perc_written, &dropped) == 3) {
           LOG_DEBUG(formatString("[%d] Written %d, dropped %d", writerNr, written, dropped));
           writer->setValue("written", GCFPVInteger(written), logline.timestamp, false);
           writer->setValue("dropped", GCFPVInteger(dropped), logline.timestamp, false);
           writer->flush();
+
+          if (feedback) {
+            feedback->setSubbandKey(streamNr, "percentageWritten", formatString("%d", perc_written));
+          }
         }
         return;
       }
diff --git a/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.h b/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.h
index 84145dcba9fac04e8e1b2c63eeb586b061025ccd..cda6abb33a2d97920e7d61504302e584aca96b1f 100644
--- a/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.h
+++ b/MAC/APL/CEPCU/src/CEPlogProcessor/CEPlogProcessor.h
@@ -27,6 +27,7 @@
 
 //# Never #include <config.h> or #include <lofar_config.h> in a header file!
 //# Includes
+#include <Common/ParameterSet.h>
 #include <GCF/TM/GCF_Control.h>
 #include <GCF/RTDB/RTDB_PropertySet.h>
 
@@ -49,6 +50,24 @@ namespace LOFAR {
 // \addtogroup CEPCU
 // @{
 
+// Provides feedback for correlated data to MoM/LTA
+class CEPFeedback
+{
+public:
+  CEPFeedback();
+
+  void write(const std::string &filename);
+
+  void addSubband(unsigned index);
+  void setSubbandKey(unsigned index, const std::string &key, const std::string &value);
+
+private:
+  ParameterSet parset;
+  unsigned nrSubbands;
+
+  std::string subbandSizeKey() const;
+  std::string subbandPrefix(unsigned index) const;
+};
 
 // The CEPlogProcessor class implements a small daemon that ...
 class CEPlogProcessor : public GCFTask
@@ -85,7 +104,8 @@ private:
     void     _processLogLine    (const char *cString);
 
     void     processParset      (const std::string &observationID);
-
+    void     writeFeedback      (int obsID);
+    
     struct logline {
       // original log line
       const char *fullmsg;
@@ -196,6 +216,15 @@ private:
     // a BiMap is needed to automatically remove obsIDs that point to
     // reused tempObsNames.
     BiMap<int, std::string> itsTempObsMapping;
+
+    // feedback information to write to _feedback file
+    map<int, CEPFeedback> itsCEPFeedback;
+
+    // adds/removes known observations from the maps
+    void registerObservation(int obsID, const std::string &tempObsName);
+    void unregisterObservation(int obsID);
+
+    bool observationRegistered(int obsID) const { return itsTempObsMapping.exists(obsID); }
 };
 
 // @} addgroup
diff --git a/MAC/APL/CEPCU/src/OnlineControl/OnlineControl.cc b/MAC/APL/CEPCU/src/OnlineControl/OnlineControl.cc
index 81ef1a54b1ed2a40a80e647070d3583856ad3529..61e13a626d0d398ac93e2aef947eca31050eb38c 100644
--- a/MAC/APL/CEPCU/src/OnlineControl/OnlineControl.cc
+++ b/MAC/APL/CEPCU/src/OnlineControl/OnlineControl.cc
@@ -24,6 +24,7 @@
 #include <Common/LofarLogger.h>
 #include <Common/LofarLocators.h>
 #include <Common/StreamUtil.h>
+#include <Common/SystemUtil.h>
 #include <Common/ParameterSet.h>
 #include <Common/ParameterRecord.h>
 #include <Common/Exceptions.h>
@@ -34,14 +35,13 @@
 #include <MACIO/MACServiceInfo.h>
 #include <GCF/TM/GCF_Protocols.h>
 #include <GCF/PVSS/GCF_PVTypes.h>
+#include <GCF/RTDB/DP_Protocol.ph>
 #include <APL/APLCommon/APL_Defines.h>
 #include <APL/APLCommon/APLUtilities.h>
 #include <APL/APLCommon/ControllerDefines.h>
 #include <APL/APLCommon/Controller_Protocol.ph>
 #include <APL/APLCommon/CTState.h>
-#include <GCF/RTDB/DP_Protocol.ph>
 #include <PLC/PCCmd.h>
-
 #include "OnlineControl.h"
 #include <OTDB/TreeValue.h>			// << need to include this after OnlineControl! ???
 #include "PVSSDatapointDefs.h"
@@ -338,7 +338,7 @@ GCFEvent::TResult OnlineControl::initial_state(GCFEvent& event, GCFPortInterface
 		DPCreatedEvent  dpEvent(event);
 		LOG_DEBUG_STR("Result of creating " << dpEvent.DPname << " = " << dpEvent.result);
 		itsTimerPort->cancelAllTimers();
-		itsTimerPort->setTimer(0.5);
+		itsTimerPort->setTimer(0.1);
 		}
 		break;
 
@@ -399,7 +399,7 @@ GCFEvent::TResult OnlineControl::propset_state(GCFEvent& event, GCFPortInterface
 		DPCreatedEvent  dpEvent(event);
 		LOG_DEBUG_STR("Result of creating " << dpEvent.DPname << " = " << dpEvent.result);
 		itsTimerPort->cancelAllTimers();
-		itsTimerPort->setTimer(0.5);
+		itsTimerPort->setTimer(0.1);
 		}
 		break;
 
diff --git a/MAC/APL/CUDaemons/src/CTStartDaemon/startController.sh b/MAC/APL/CUDaemons/src/CTStartDaemon/startController.sh
index ec8a9ae0cd0a50a2a1a3c7ab387469159931e76e..adf013d325e97b761ab28b9cd40e3c87b34f4078 100755
--- a/MAC/APL/CUDaemons/src/CTStartDaemon/startController.sh
+++ b/MAC/APL/CUDaemons/src/CTStartDaemon/startController.sh
@@ -4,7 +4,7 @@
 #
 
 # start process
-($1 $2 $3 $4 1>/dev/null 2>&1 ) &
+($1 $2 $3 $4 1>>"/opt/lofar/var/log/$2.stdout" 2>&1 ) &
 
 # get its pid
 # echo $!
diff --git a/MAC/APL/PIC/RSP_Driver/src/BMRead.cc b/MAC/APL/PIC/RSP_Driver/src/BMRead.cc
index 41b2e14c1b111f5b2fcb9e23097add8103080099..1f562604615018912a1782eb73b4486a1752f8c5 100644
--- a/MAC/APL/PIC/RSP_Driver/src/BMRead.cc
+++ b/MAC/APL/PIC/RSP_Driver/src/BMRead.cc
@@ -52,7 +52,9 @@ void BMRead::sendrequest()
   if ((( Cache::getInstance().getBack().getVersions().bp()(getBoardId()).fpga_maj * 10) +
          Cache::getInstance().getBack().getVersions().bp()(getBoardId()).fpga_min) < 74) {
     LOG_DEBUG_STR(formatString("BMRead:: Firmware on board[%d], has NO bitmode support", getBoardId()));
+    Cache::getInstance().getState().bmState().unmodified(getBoardId());
     setContinue(true); // continue with next action
+    setFinished();
   }
   else {
       EPAReadEvent bmread;
@@ -87,6 +89,7 @@ GCFEvent::TResult BMRead::handleack(GCFEvent& event, GCFPortInterface& /*port*/)
 
   if (!bm.hdr.isValidAck(itsHdr))
   {
+    Cache::getInstance().getState().bmState().read_error(getBoardId());
     LOG_ERROR("BMRead::handleack: invalid ack");
     return GCFEvent::NOT_HANDLED;
   }
@@ -98,6 +101,8 @@ GCFEvent::TResult BMRead::handleack(GCFEvent& event, GCFPortInterface& /*port*/)
   Cache::getInstance().getBack().getBitModeInfo()()(getBoardId()).bm_select = bm.beammode.bm_select;
   Cache::getInstance().getBack().getBitModeInfo()()(getBoardId()).bm_max    = bm.beammode.bm_max;
   
+  Cache::getInstance().getState().bmState().read_ack(getBoardId());
+    
   LOG_DEBUG_STR("BMRead::handleack() done");
   return GCFEvent::HANDLED;
 }
diff --git a/MAC/APL/PIC/RSP_Driver/src/BMWrite.cc b/MAC/APL/PIC/RSP_Driver/src/BMWrite.cc
index 3997cf280fc23337d89c79f67908facf431acba1..e884df65895bbfd7128da452e81e87b63a18f7ad 100644
--- a/MAC/APL/PIC/RSP_Driver/src/BMWrite.cc
+++ b/MAC/APL/PIC/RSP_Driver/src/BMWrite.cc
@@ -55,7 +55,9 @@ void BMWrite::sendrequest()
   if ((( Cache::getInstance().getBack().getVersions().bp()(getBoardId()).fpga_maj * 10) +
          Cache::getInstance().getBack().getVersions().bp()(getBoardId()).fpga_min) < 74) {
     LOG_DEBUG_STR(formatString("BMWrite:: Firmware on board[%d], has NO bitmode support", getBoardId()));
+    Cache::getInstance().getState().bmState().read_ack(getBoardId());
     setContinue(true); // continue with next action
+    setFinished();
   }
   else {
       
@@ -67,7 +69,7 @@ void BMWrite::sendrequest()
       if (RTC::RegisterState::WRITE != Cache::getInstance().getState().bmState().get(getBoardId())) {
         Cache::getInstance().getState().bmState().unmodified(getBoardId());
         setContinue(true);
-    
+        setFinished();
         return;
       }
         
diff --git a/MAC/APL/PIC/RSP_Driver/src/BWWrite.cc b/MAC/APL/PIC/RSP_Driver/src/BWWrite.cc
index bc7e51ee7e3906d30376bfeddc465cd5fe8a2335..d04fd573c35be36fe1badc8b1fab65e59aa4bf84 100644
--- a/MAC/APL/PIC/RSP_Driver/src/BWWrite.cc
+++ b/MAC/APL/PIC/RSP_Driver/src/BWWrite.cc
@@ -46,8 +46,9 @@ using namespace EPA_Protocol;
 
 BWWrite::BWWrite(GCFPortInterface& board_port, int board_id, int blp, int regid)
 	: SyncAction(board_port, board_id, MEPHeader::BF_N_FRAGMENTS*MAX_NR_BM_BANKS),
-	  m_blp(blp), m_regid(regid), itsBank(0), m_remaining(0), m_offset(0)
+	  m_blp(blp), m_regid(regid), itsBank(0), itsActiveBanks(1), m_remaining(0), m_offset(0)
 {
+	
 	memset(&m_hdr, 0, sizeof(MEPHeader));
 }
 
@@ -57,13 +58,17 @@ BWWrite::~BWWrite()
 
 void BWWrite::sendrequest()
 {
-    int activeBanks = (MAX_BITS_PER_SAMPLE / Cache::getInstance().getBack().getBitsPerSample());
-    if (getCurrentIndex() >= (activeBanks*MEPHeader::BF_N_FRAGMENTS)) {
+    itsActiveBanks = (MAX_BITS_PER_SAMPLE / Cache::getInstance().getBack().getBitsPerSample());
+    uint8 global_blp = (getBoardId() * NR_BLPS_PER_RSPBOARD) + m_blp;
+    if (getCurrentIndex() >= (itsActiveBanks*MEPHeader::BF_N_FRAGMENTS)) {
+        if (getCurrentIndex() == (MEPHeader::BF_N_FRAGMENTS*MAX_NR_BM_BANKS - 1)) {
+            Cache::getInstance().getState().bf().write_ack(global_blp * MEPHeader::N_PHASEPOL + m_regid);
+        }
         setContinue(true);
         return;
     }
     
-    uint8 global_blp = (getBoardId() * NR_BLPS_PER_RSPBOARD) + m_blp;
+    
     itsBank = (getCurrentIndex() / MEPHeader::BF_N_FRAGMENTS) ;
         
 	// no conditional, update every second
@@ -122,11 +127,13 @@ void BWWrite::sendrequest()
                          m_offset);
 		break;
 	}
-	
+
+#if 0	
 	if (getBoardId() == 11) {
 		LOG_INFO_STR("BWWrite:board:" << getBoardId() << ",global_blp=" << (int)global_blp << ",bank=" << itsBank 
 			<< "," << bfcoefs.hdr);
 	}
+#endif
 
 	// create blitz view om the weights in the bfcoefs message to be sent to the RSP hardware
 	int nbeamlets_per_fragment = MEPHeader::N_BEAMLETS / MEPHeader::BF_N_FRAGMENTS;
@@ -154,13 +161,13 @@ void BWWrite::sendrequest()
 
 		Range hw_range(hw_offset, hw_offset + nbeamlets_per_fragment - MEPHeader::N_BLPS, MEPHeader::N_BLPS);
 		Range cache_range(cache_offset, cache_offset + (nbeamlets_per_fragment / MEPHeader::N_SERDES_LANES) - 1, 1);
-		
+#if 0		
 		if (getBoardId() == 11) {
 			LOG_INFO_STR("board=" << getBoardId() << ",bank=" << itsBank << ",lane=" << lane 
 					<< (m_regid / 2 ? ",Y" : ",X") << (m_regid % 2 ? "I" : "R")
 					<< ", hw_range=" << hw_range << ", cache_range=" << cache_range);
 		}
-
+#endif
 		// X = normal 0
 		weights(hw_range, 0) = Cache::getInstance().getBack().getBeamletWeights()()(0, global_blp * 2, itsBank, cache_range);
 
@@ -295,7 +302,7 @@ GCFEvent::TResult BWWrite::handleack(GCFEvent& event, GCFPortInterface& /*port*/
 		//
 		// Last fragment signals completion
 		//
-		if (MEPHeader::MEPHeader::BF_N_FRAGMENTS - 1 == getCurrentIndex()) {
+		if ((MEPHeader::BF_N_FRAGMENTS*itsActiveBanks-1) == getCurrentIndex()) {
 		  Cache::getInstance().getState().bf().write_ack(global_blp * MEPHeader::N_PHASEPOL + m_regid);
 		}
 	}
diff --git a/MAC/APL/PIC/RSP_Driver/src/BWWrite.h b/MAC/APL/PIC/RSP_Driver/src/BWWrite.h
index e8d45e17dbb0432e2f105a1615877d2197c47e77..bc8a9c8dc723cda79103daecdb81df59fcc8addf 100644
--- a/MAC/APL/PIC/RSP_Driver/src/BWWrite.h
+++ b/MAC/APL/PIC/RSP_Driver/src/BWWrite.h
@@ -63,6 +63,7 @@ private:
 	int    m_blp;
 	int    m_regid;
 	int    itsBank;
+	int    itsActiveBanks;
 
 	size_t m_remaining; // how much to write
 	size_t m_offset;    // where to write
diff --git a/MAC/APL/PIC/RSP_Driver/src/BstRead.cc b/MAC/APL/PIC/RSP_Driver/src/BstRead.cc
index 01139bdb3011a7dfa36613e32ebed5383468a10b..7f59eb6bb18c16f15fc91b993e9680a4541973c0 100644
--- a/MAC/APL/PIC/RSP_Driver/src/BstRead.cc
+++ b/MAC/APL/PIC/RSP_Driver/src/BstRead.cc
@@ -39,9 +39,10 @@ using namespace EPA_Protocol;
 using namespace RSP_Protocol;
 
 BstRead::BstRead(GCFPortInterface& board_port, int board_id, int lane_id)
-  : SyncAction(board_port, board_id, MEPHeader::N_SERDES_LANES)
+  : SyncAction(board_port, board_id, MEPHeader::N_SERDES_LANES)  // MEPHeader::MAX_N_BANKS in new firmware
 {
 	itsLaneId = lane_id;
+	itsRealLaneId = (lane_id < 10)?lane_id:(lane_id-10);
 	memset(&m_hdr, 0, sizeof(MEPHeader));
 }
 
@@ -59,17 +60,14 @@ void BstRead::sendrequest()
 	if ((( Cache::getInstance().getBack().getVersions().bp()(getBoardId()).fpga_maj * 10) +
 		Cache::getInstance().getBack().getVersions().bp()(getBoardId()).fpga_min     ) < 74) {
 		// if old firmware version do
-		int real_lane = (itsLaneId < 10)?itsLaneId:(itsLaneId-10);
-		if (getCurrentIndex() != real_lane) {
+		if (getCurrentIndex() != itsRealLaneId) {
 			setContinue(true);
+			return;
 		}
 	}
 	else {
 		// if new firmware version do
 		if (getCurrentIndex() >= (MAX_BITS_PER_SAMPLE / Cache::getInstance().getBack().getBitsPerSample())) {
-			if (getCurrentIndex() == MEPHeader::N_SERDES_LANES - 1) {
-				Cache::getInstance().getState().bst().read_ack(getBoardId());
-			}
 			setContinue(true);
 			return;
 		}
@@ -77,8 +75,6 @@ void BstRead::sendrequest()
 
 	EPAReadEvent bstread;
 
-	Cache::getInstance().getState().bst().read(getBoardId());
-
 	bstread.hdr.set(MEPHeader::READ, MEPHeader::DST_RSP, MEPHeader::BST, getCurrentIndex(), MEPHeader::BST_POWER_SIZE); 
 	m_hdr = bstread.hdr;
 	getBoardPort().send(bstread);
@@ -87,8 +83,12 @@ void BstRead::sendrequest()
 string s;
 hexdump(s, (void*)&bstread, sizeof(bstread));
 LOG_INFO_STR("BSTREADREQUEST=" << s);
-#endif
 LOG_INFO(formatString("BSTREAD:board=%d,dstid=%d,pid=%d,regid=%d,offset=%d,payload=%d,seqnr=%d", getBoardId(), bstread.hdr.m_fields.addr.dstid, bstread.hdr.m_fields.addr.pid, bstread.hdr.m_fields.addr.regid, bstread.hdr.m_fields.offset, bstread.hdr.m_fields.payload_length, bstread.hdr.m_fields.seqnr));
+
+if (getBoardId() == 11) {
+    LOG_INFO(formatString("BSTREAD:board=%d,dstid=%d,pid=%d,regid=%d,offset=%d,payload=%d,seqnr=%d", getBoardId(), bstread.hdr.m_fields.addr.dstid, bstread.hdr.m_fields.addr.pid, bstread.hdr.m_fields.addr.regid, bstread.hdr.m_fields.offset, bstread.hdr.m_fields.payload_length, bstread.hdr.m_fields.seqnr));
+}
+#endif
 }
 
 void BstRead::sendrequest_status()
@@ -138,7 +138,7 @@ GCFEvent::TResult BstRead::handleack(GCFEvent& event, GCFPortInterface& /*port*/
 	EPABstStatsEvent ack(event);
 
 	if (!ack.hdr.isValidAck(m_hdr)) {
-		Cache::getInstance().getState().bst().read_error(getBoardId());
+		Cache::getInstance().getState().bst().read_error(itsRealLaneId);
 		LOG_ERROR("BstRead::handleack: invalid ack");
 		return GCFEvent::NOT_HANDLED;
 	}
@@ -147,21 +147,20 @@ GCFEvent::TResult BstRead::handleack(GCFEvent& event, GCFPortInterface& /*port*/
 
 	int swstart;
 	// In new firmware versions BST registers are used in a different way
-	int real_lane = (itsLaneId < 10)?itsLaneId:(itsLaneId-10);
 	if ((( Cache::getInstance().getBack().getVersions().bp()(getBoardId()).fpga_maj * 10) +
 		Cache::getInstance().getBack().getVersions().bp()(getBoardId()).fpga_min     ) < 74) {
-		swstart = (real_lane * MEPHeader::N_BEAMLETS);
+		swstart = (itsRealLaneId * MEPHeader::N_BEAMLETS);
 	}
 	else {          
-		swstart = (real_lane * MEPHeader::N_BEAMLETS) + (getCurrentIndex() * MEPHeader::N_DATA_SLOTS);
+		swstart = (itsRealLaneId * MEPHeader::N_BEAMLETS) + (getCurrentIndex() * MEPHeader::N_DATA_SLOTS);
 	}
 
 	Range fragment_range(swstart, swstart+MEPHeader::N_DATA_SLOTS-1);
 
 	// normal set 0/1, if splitter active also 2/3
 	int beamletsSet = (itsLaneId < 10)?0:2;
-
-	LOG_INFO_STR("fragment_range[" << getBoardId() << "," << getCurrentIndex() << "]=" << fragment_range);
+  
+	LOG_DEBUG_STR("fragment_range[" << getBoardId() << "," << getCurrentIndex() << "]=" << fragment_range);
 
 	if (getCurrentIndex() != ack.hdr.m_fields.addr.regid) {
 		LOG_ERROR("invalid bst ack");
@@ -170,21 +169,19 @@ GCFEvent::TResult BstRead::handleack(GCFEvent& event, GCFPortInterface& /*port*/
 
 	Array<uint32, 2> stats((uint32*)&ack.stat,
 	shape((MEPHeader::BST_POWER_SIZE / sizeof(uint32)) / N_POL, N_POL), neverDeleteData);
-	LOG_INFO(formatString("real_lane=%d, beamletsSet=%d, swstart=%d", real_lane, beamletsSet, swstart));
-//	LOG_INFO_STR("stats:" << stats); 
+	LOG_DEBUG(formatString("real_lane=%d, beamletsSet=%d, swstart=%d", itsRealLaneId, beamletsSet, swstart));
+	LOG_DEBUG_STR("stats:" << stats); 
 	Array<double, 2>& cache(Cache::getInstance().getBack().getBeamletStats()());
 
 	// x-pol beamlet statistics: copy and convert to double
 	cache(beamletsSet,     fragment_range) =
-	convert_uint32_to_double(stats(Range::all(), 0));
+	    convert_uint32_to_double(stats(Range::all(), 0));
 
 	// y-pol beamlet statistics: copy and convert to double
 	cache(beamletsSet + 1, fragment_range) =
-	convert_uint32_to_double(stats(Range::all(), 1));
+	    convert_uint32_to_double(stats(Range::all(), 1));
 
-	if (getCurrentIndex() == MEPHeader::N_SERDES_LANES - 1) {
-		Cache::getInstance().getState().bst().read_ack(getBoardId());
-	}
+	Cache::getInstance().getState().bst().read_ack(itsRealLaneId);
 
 	return GCFEvent::HANDLED;
 }
diff --git a/MAC/APL/PIC/RSP_Driver/src/BstRead.h b/MAC/APL/PIC/RSP_Driver/src/BstRead.h
index fc512e17ff2fb35f4e4111590194c7d6e52e4bc9..efbeb5d320e2754a86e84b343238c4fee4f7d442 100644
--- a/MAC/APL/PIC/RSP_Driver/src/BstRead.h
+++ b/MAC/APL/PIC/RSP_Driver/src/BstRead.h
@@ -59,8 +59,10 @@ namespace LOFAR {
       virtual GCFEvent::TResult handleack(GCFEvent& event, GCFPortInterface& port);
 
     private:
-      EPA_Protocol::MEPHeader m_hdr;
       int itsLaneId;
+      int itsRealLaneId;
+      
+      EPA_Protocol::MEPHeader m_hdr;
     };
   };
 };
diff --git a/MAC/APL/PIC/RSP_Driver/src/SSRead.cc b/MAC/APL/PIC/RSP_Driver/src/SSRead.cc
index 60f824ce1e81c4bb037d3df2c3b9a0b3c5860c80..5ec208b33f03da165639ca7cb6e18c317e85dc91 100644
--- a/MAC/APL/PIC/RSP_Driver/src/SSRead.cc
+++ b/MAC/APL/PIC/RSP_Driver/src/SSRead.cc
@@ -54,6 +54,7 @@ void SSRead::sendrequest()
 	itsActivePlanes = (MAX_BITS_PER_SAMPLE / Cache::getInstance().getBack().getBitsPerSample());
 	if (getCurrentIndex() >= (itsActivePlanes*NR_BLPS_PER_RSPBOARD)) {
 		setContinue(true);
+		return;
 	}
 
 	int dstid = 1 << (getCurrentIndex() / itsActivePlanes);
diff --git a/MAC/APL/PIC/RSP_Driver/src/SSWrite.cc b/MAC/APL/PIC/RSP_Driver/src/SSWrite.cc
index 9ad8cb8bbf60b395338f377e05812b1b28e1eea3..e7c8aa3ca6a07798a1f8d8981916dd430f4f1fd1 100644
--- a/MAC/APL/PIC/RSP_Driver/src/SSWrite.cc
+++ b/MAC/APL/PIC/RSP_Driver/src/SSWrite.cc
@@ -40,7 +40,9 @@ using namespace RSP;
 using namespace RTC;
 
 SSWrite::SSWrite(GCFPortInterface& board_port, int board_id)
-  : SyncAction(board_port, board_id, NR_BLPS_PER_RSPBOARD * MAX_BITS_PER_SAMPLE / MIN_BITS_PER_SAMPLE)
+  : SyncAction(board_port, board_id, NR_BLPS_PER_RSPBOARD * (MAX_BITS_PER_SAMPLE / MIN_BITS_PER_SAMPLE)),
+    itsActiveBanks(1)
+    
 {
 	memset(&m_hdr, 0, sizeof(MEPHeader));
 }
@@ -57,6 +59,7 @@ void SSWrite::sendrequest()
 		setContinue(true);
 		return;
 	}
+	
 	uint8 global_blp = (getBoardId() * NR_BLPS_PER_RSPBOARD) + (getCurrentIndex()/itsActiveBanks);
 	LOG_DEBUG(formatString(">>>> SSWrite(%s) global_blp=%d", getBoardPort().getName().c_str(), global_blp));
 
@@ -69,7 +72,7 @@ void SSWrite::sendrequest()
 	int dstid = 1 << (getCurrentIndex() / itsActiveBanks);
 	// used bank 
 	int bank = getCurrentIndex() % itsActiveBanks;
-	LOG_INFO(formatString("SSWRITE:board=%d, index=%d, globalblp=%d, dstID=%d, bank=%d, regid=%d", 
+	LOG_DEBUG(formatString("SSWRITE:board=%d, index=%d, globalblp=%d, dstID=%d, bank=%d, regid=%d", 
 							getBoardId(), getCurrentIndex(), global_blp, dstid, bank, MEPHeader::SS_SELECT+bank));
 
 	ss.hdr.set( MEPHeader::WRITE, 
@@ -133,8 +136,10 @@ GCFEvent::TResult SSWrite::handleack(GCFEvent& event, GCFPortInterface& /*port*/
 		LOG_ERROR("SSWrite::handleack: invalid ack");
 		return GCFEvent::NOT_HANDLED;
 	}
-
-	Cache::getInstance().getState().ss().write_ack(global_blp);
+	
+    if ((getCurrentIndex() % itsActiveBanks) == 0) {
+	    Cache::getInstance().getState().ss().write_ack(global_blp);
+	}
 
 	return GCFEvent::HANDLED;
 }
diff --git a/MAC/APL/PIC/RSP_Driver/src/SSWrite.h b/MAC/APL/PIC/RSP_Driver/src/SSWrite.h
index 0f93c6b63c1ab498bd9e48236d0211b359793f02..4d14c3b14d730cf97ac13d539992124cc5b99364 100644
--- a/MAC/APL/PIC/RSP_Driver/src/SSWrite.h
+++ b/MAC/APL/PIC/RSP_Driver/src/SSWrite.h
@@ -60,8 +60,9 @@ namespace LOFAR {
       virtual GCFEvent::TResult handleack(GCFEvent& event, GCFPortInterface& port);
 
     private:
-      EPA_Protocol::MEPHeader m_hdr;
       int itsActiveBanks;
+      
+      EPA_Protocol::MEPHeader m_hdr;
     };
   };
 };
diff --git a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h
index 96712dd30bfb9069626a7b3afa7a234b1e84b67f..a3334af0aff49defe6c6ef375fd7f1e5cb03423e 100644
--- a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h
+++ b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h
@@ -67,7 +67,7 @@ public:
 		rsuclear_state.resize(nrRspBoards);
 		diagwgsettings_state.resize(nrRcus * EPA_Protocol::MEPHeader::N_DIAG_WG_REGISTERS);
 		sst_state.resize(nrBlps * EPA_Protocol::MEPHeader::SST_N_FRAGMENTS);
-		bst_state.resize(nrRspBoards);
+		bst_state.resize(EPA_Protocol::MEPHeader::N_SERDES_LANES);
 		xst_state.resize(nrRspBoards * EPA_Protocol::MEPHeader::XST_NR_STATS);
 		cdo_state.resize(nrRspBoards * EPA_Protocol::MEPHeader::N_CDO_REGISTERS);
 		bs_state.resize(nrBlps);
diff --git a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/MEPHeader.h b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/MEPHeader.h
index fe98a8314beb49dcfefb7e9a636dbc085a99f760..7f361bdcc790f02bba289c878baa5e47cf7164e5 100644
--- a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/MEPHeader.h
+++ b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/MEPHeader.h
@@ -247,6 +247,7 @@ public:
 	static const uint16 N_BEAMLETS       = N_SERDES_LANES * N_DATA_SLOTS;
 	static const uint16 XLET_SIZE        = N_POL * sizeof(std::complex<uint32>);
 	static const uint16 WEIGHT_SIZE      = N_POL * sizeof(std::complex<uint16>);
+	static const uint16 MAX_N_BANKS      = 4;
 
 	// TBB related constants
 	static const uint16 TBB_MAXPAYLOADSIZE     = 1948; // available TBB payload bytes
diff --git a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/Statistics.h b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/Statistics.h
index 493abb6ac296624fa3b70f2ba8c2965285d9213a..f4769f42beefd9c7e7e2e9cd4e4264a3ff8817d8 100644
--- a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/Statistics.h
+++ b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/Statistics.h
@@ -82,7 +82,7 @@ namespace LOFAR {
        * Statistics
        * Dimensions are: (N_DEVICES, N_SUBBANDS);
        *
-       * N_DEVICES == 2 * N_POL for beamlet statistics
+       * N_DEVICES == 2 * N_POL for beamlet statistics (2 *) for splitter
        * N_DEVICES == N_RSPBOARDS * N_BLPS * N_POL for subband statistics
        * 
        */
diff --git a/MAC/APL/StationCU/src/StationControl/StationControl.cc b/MAC/APL/StationCU/src/StationControl/StationControl.cc
index 253c9e06d70aa7ab1ea502a6f3845ee4ad46a6ef..26f69d44602708016157ffdf4039fff306a4d8b7 100644
--- a/MAC/APL/StationCU/src/StationControl/StationControl.cc
+++ b/MAC/APL/StationCU/src/StationControl/StationControl.cc
@@ -469,6 +469,10 @@ GCFEvent::TResult StationControl::subscribe2HWstates(GCFEvent& event, GCFPortInt
 			TRAN(StationControl::operational_state);		// go to next state.
 		}
 	break;
+	
+	case DP_CHANGED:
+		_databaseEventHandler(event);
+		break;
 
 	default:
 		status = GCFEvent::NOT_HANDLED;
@@ -525,6 +529,10 @@ GCFEvent::TResult StationControl::subscribe2Splitters(GCFEvent& event, GCFPortIn
 		LOG_INFO("Going to operational mode");
 		TRAN(StationControl::operational_state);		// go to next state.
 	break;
+	
+	case DP_CHANGED:
+		_databaseEventHandler(event);
+		break;
 
 	default:
 		status = GCFEvent::NOT_HANDLED;
@@ -987,28 +995,28 @@ void StationControl::_databaseEventHandler(GCFEvent& event)
 		DPChangedEvent		dpEvent(event);
 		if (strstr(dpEvent.DPname.c_str(), PN_CLC_REQUESTED_CLOCK) != 0) {
 			itsClock = ((GCFPVInteger*)(dpEvent.value._pValue))->getValue();
-			LOG_DEBUG_STR("Received (requested)clock change from PVSS, clock is now " << itsClock);
+			LOG_INFO_STR("Received (requested)clock change from PVSS, clock is now " << itsClock);
 			break;
 		}
 
 		// during startup we adopt the value set by the ClockController.
 		if (strstr(dpEvent.DPname.c_str(), PN_CLC_ACTUAL_CLOCK) != 0) {
 			itsClock = ((GCFPVInteger*)(dpEvent.value._pValue))->getValue();
-			LOG_DEBUG_STR("Received (actual)clock change from PVSS, bitmode is now " << itsClock);
+			LOG_INFO_STR("Received (actual)clock change from PVSS, bitmode is now " << itsClock);
 			_abortObsWithWrongClock();
 			break;
 		}
 
 		if (strstr(dpEvent.DPname.c_str(), PN_CLC_REQUESTED_BITMODE) != 0) {
 			itsBitmode = ((GCFPVInteger*)(dpEvent.value._pValue))->getValue();
-			LOG_DEBUG_STR("Received (requested)bitmode change from PVSS, bitmode is now " << itsBitmode);
+			LOG_INFO_STR("Received (requested)bitmode change from PVSS, bitmode is now " << itsBitmode);
 			break;
 		}
 
 		// during startup we adopt the value set by the ClockController.
 		if (strstr(dpEvent.DPname.c_str(), PN_CLC_ACTUAL_BITMODE) != 0) {
 			itsBitmode = ((GCFPVInteger*)(dpEvent.value._pValue))->getValue();
-			LOG_DEBUG_STR("Received (actual)bitmode change from PVSS, bitmode is now " << itsBitmode);
+			LOG_INFO_STR("Received (actual)bitmode change from PVSS, bitmode is now " << itsBitmode);
 			_abortObsWithWrongBitmode();
 			break;
 		}
@@ -1152,9 +1160,7 @@ void StationControl::_handleQueryEvent(GCFEvent& event)
 						if (newState != RTDB_OBJ_STATE_OPERATIONAL) {
 							itsRCUmask.reset(rcubase + i);
 						}
-						else {
-							itsRCUmask.set(rcubase + i);
-						}
+						// no else: never mark an RCU operational on the state of an RSPBoard.
 					}
 				}
 			}
@@ -1297,7 +1303,7 @@ LOG_DEBUG_STR("def&userReceivers=" << realReceivers);
 		AntennaMask_t	antBitSet   = onLBAField ? itsLBAmask     : itsHBAmask;
 		for (int rcu = 0; rcu < MAX_RCUS; rcu++) {
 			int		idx((*mappingPtr)[rcu]);
-			if (!realReceivers[rcu] || idx<0 || !antBitSet[idx]) {
+			if (!realReceivers[rcu] || idx<0 || !antBitSet[idx] || !itsRCUmask[rcu]) {
 				realReceivers.reset(rcu);
 				if (idx >= 0 && !antBitSet[idx]) {
 					LOG_INFO_STR("Rejecting RCU " << rcu << " because Antenna is out of order");
diff --git a/MAC/Deployment/data/OTDB/Calibration.comp b/MAC/Deployment/data/OTDB/Calibration.comp
index 34cf0b14c889d51f7fed5f8043e67780be788544..376a8ce1e4a9d793a95ab486158a8f7517982a07 100644
--- a/MAC/Deployment/data/OTDB/Calibration.comp
+++ b/MAC/Deployment/data/OTDB/Calibration.comp
@@ -8,5 +8,5 @@ node  Calibration  4.0.0  development 'node constraint'  "Calibration pipeline"
 
 #    name                    dir. type   unit   prun. vm   value                constr.  descr.
 #--------------------------------------------------------------------------------------------------------
-par  CalibratorSource        I    text   -	    100   0    ''                   -        "Calibrator source for generation of instrument model"
-
+par  CalibratorSource        I    text   -	100   0    ''                   -        "Calibrator source for generation of instrument model"
+par  SkyModel                I    text   -      100   0    ''                   -        "User-supplied sky model for generic calibration pipeline"
diff --git a/MAC/Deployment/data/OTDB/Observation.comp b/MAC/Deployment/data/OTDB/Observation.comp
index 81987121ab7ba351f638e2490abc795ed9525954..d6cfab5dc00bd91213f6bf2e53624c091452ff23 100644
--- a/MAC/Deployment/data/OTDB/Observation.comp
+++ b/MAC/Deployment/data/OTDB/Observation.comp
@@ -27,8 +27,8 @@ par  nrAnaBeams              I    int    -      10    100    0
 par  nrTBBSettings           I    int    -      10    100    0                                         - 'Number of TBBsettings'
 par  nrBeamformers           I    int    -      10    100    0                                         - 'Number of beamformers in this observation'
 par  nrPolarisations         I    pint   -      10    100    '1|2;2'                                   - 'Number of polarisations to use in this observation'
-par  nrSlotsInFrame	     	 I    int    -      10    100    61                                        - '???'
-par  nrBitsPerSample	     I    int    -		10		0	 '16|8|4;16'							   - 'sample size in bits'
+par  nrSlotsInFrame	     I    int    -      10    100    61                                        - '???'
+par  nrBitsPerSample	     I    pint   -	10    0	     '16|8|4;16'                               - 'sample size in bits'
 par  referencePhaseCenter    I    vdbl   -      10    100    '[3826577.110, 461022.900, 5064892.758]'  - 'Constant value: phase center of LOFAR'
 par  existingStations        I    vtext   -      10    100    '["CS001","CS002","CS003","CS004","CS005","CS006","CS007","CS011","CS013","CS017","CS021","CS024","CS026","CS028","CS030","CS031","CS101","CS103","CS201","CS301","CS302","CS401","CS501","RS106","RS205","RS208","RS306","RS307","RS406","RS503","DE601","DE602","DE603","DE604","DE605","FR606","UK608"]'  - 'Constant value: stations that can be used'
 par  existingAntennaFields   I    vtext   -      10    100    '["LBA","HBA","HBA0","HBA1"]'  - 'Constant value: names of all antennafields'
diff --git a/MAC/Deployment/data/OTDB/Output_Correlated_.comp b/MAC/Deployment/data/OTDB/Output_Correlated_.comp
index 85fc5b60176627c0e7237e168bf6d4f718821769..aec301592604df4d10f81fe1fd2deb6b1ae557fe 100644
--- a/MAC/Deployment/data/OTDB/Output_Correlated_.comp
+++ b/MAC/Deployment/data/OTDB/Output_Correlated_.comp
@@ -38,7 +38,7 @@ node  Output_Correlated_	4.0.0  development  	'node constraint'  "CorrelatedData
 #--------------------------------------------------------------------------------------------------------
 #    name               dir. type   unit   prun. vm   value	constr.	descr.
 #--------------------------------------------------------------------------------------------------------
-par  size		O    uint   -      10    0    0      	- 	''
+par  size		O    uint   -      10    0    0      	- 	'In bytes'
 par  fileFormat		O    ptext  -      10    0    'FITS|AIPS++/CASA|HDF5;AIPS++/CASA'	-  	''
 par  filename           O    text   -      10    0    ''      	-       ''
 par  location           O    text   -      10    0    ''      	-       ''
@@ -49,5 +49,6 @@ par  integrationInterval O   dbl   seconds      10    0    0		-  	''
 par  centralFrequency   O   dbl     MHz    10    0    0		-  	''
 par  channelWidth 	O   dbl     kHz    10    0    0		-  	''
 par  channelsPerSubband O   uint     -      10    0    0		-  	''
-par  subband		O    uint   -      10    0    0      	-       ''
-par  stationSubband     O    uint   -      10    0    0      	-       ''
+par  subband		O    uint   -      10    0    0      	-       'Index given by OLAP, purely administative'
+par  stationSubband     O    uint   -      10    0    0      	-       'Index of subband on the station, selects freq. range'
+par  SAP		O    uint   -      10    0    0      	-       'Index of SubArrayPointing'
\ No newline at end of file
diff --git a/MAC/Deployment/data/OTDB/create_OTDB_comps b/MAC/Deployment/data/OTDB/create_OTDB_comps
index 60af1571b0e1bb8b96b77f4cd9dc0da0516d7ee5..cf7b0d70fdfc3d03d3b126f94645bde8ecb3a6e2 100755
--- a/MAC/Deployment/data/OTDB/create_OTDB_comps
+++ b/MAC/Deployment/data/OTDB/create_OTDB_comps
@@ -246,7 +246,7 @@ echo "# Generated file !!!" >Stations.list
 if [ "${INDIR}" = "." ]; then 
   wdir="../StaticMetaData"
   otdbdir="."
-  pvssdir="../PVSS"
+  pvssdir="../PVSS/data"
 else
   wdir="/opt/lofar/etc"
   otdbdir="/opt/lofar/etc/otdb"
diff --git a/MAC/Deployment/data/PVSS/License/Astron_Central_1_shield.txt b/MAC/Deployment/data/PVSS/License/Astron_Central_1_shield.txt
index 0f5595ea711b6dcf5d01af0fcc9befb7f9d3facf..8beb1c99acbcbbe6e4101b445db3fd5f29ab8535 100644
--- a/MAC/Deployment/data/PVSS/License/Astron_Central_1_shield.txt
+++ b/MAC/Deployment/data/PVSS/License/Astron_Central_1_shield.txt
@@ -1,28 +1,29 @@
 [license]
-code        = "dongleHost 40316486309"
-version     = 30800002
-sn          = "471_3031_1_Astron_Gen_I_1_38"
-expire      = 0000.00.00;00:00:00,000 
-redundancy  = 1
-ui          = 15
-para        = 4
-dde         = 5
-event       = 1
-ios         = 100000
-ssi         = 0
-api         = 80
-excelreport = 5
-       http = 15
- infoserver = 5000
-  comcenter = 5
-maintenance = 0
-  scheduler = 0
-distributed = 255
-      uifix = 0
-    parafix = 0
- pararemote = 0
-    ctrlext = 1
-     update = 0
-licenseMax  = 8
-licenseLeft = 5
+#hw              = 00825320842
+code             = "dongleHost 50202878741"
+version          = 31100002
+sn               = "471_3031_1_Astron_Gen_I_2_311"
+expire           = 0000.00.00;00:00:00,000
+redundancy       = 1
+ui               = 15
+para             = 4
+dde              = 5
+event            = 1
+api              = 80
+excelreport      = 5
+http             = 15
+infoserver       = 5000
+ios              = 100000
+comcenter        = 5
+maintenance      = 0
+scheduler        = 0
+ssi              = 0
+distributed      = 255
+uifix            = 0
+parafix          = 0
+pararemote       = 0
+ctrlext          = 1
+update           = 0
+licenseMax       = 8
+licenseLeft      = 8
 
diff --git a/MAC/Deployment/data/PVSS/License/Astron_Station_1_shield.txt b/MAC/Deployment/data/PVSS/License/Astron_Station_1_shield.txt
index b7b3fbf49ece1730c6db966ccc99a2599db25067..d8932c70f5be4ec96d749fd14bd114ca1dca2fd7 100644
--- a/MAC/Deployment/data/PVSS/License/Astron_Station_1_shield.txt
+++ b/MAC/Deployment/data/PVSS/License/Astron_Station_1_shield.txt
@@ -1,7 +1,7 @@
 [license]
-code        = "dongleHost 30533373122"
-version     = 30800002
-sn          = "471_3031_2_Astron_Gen_II_1_38"
+code        = "dongleHost 60318387154"
+version     = 31100002
+sn          = "471_3031_2_Astron_Gen_II_2_311"
 expire      = 0000.00.00;00:00:00,000 
 redundancy  = 0
 ui          = 2
@@ -12,18 +12,18 @@ ios         = 4000
 ssi         = 0
 api         = 80
 excelreport = 5
-       http = 0
- infoserver = 1000
-  comcenter = 5
+http        = 0
+infoserver  = 1000
+comcenter   = 5
 maintenance = 1
-  scheduler = 1
-     recipe = 1
+scheduler   = 1
+recipe      = 1
 distributed = 255
-      uifix = 0
-    parafix = 0
- pararemote = 0
-    ctrlext = 1
-     update = 0
+uifix       = 0
+parafix     = 0
+pararemote  = 0
+ctrlext     = 1
+update      = 0
 licenseMax  = 100
-licenseLeft = 46
+licenseLeft = 96
 
diff --git a/MAC/Deployment/data/PVSS/License/PVSStoolLicense.exe b/MAC/Deployment/data/PVSS/License/PVSStoolLicense.exe
index dc235473152cd21d5af222f4ece828bd6c9d5f5d..2da1cf71dd55af267aac7f02cbee00f4a2a60a17 100755
Binary files a/MAC/Deployment/data/PVSS/License/PVSStoolLicense.exe and b/MAC/Deployment/data/PVSS/License/PVSStoolLicense.exe differ
diff --git a/MAC/Deployment/data/PVSS/License/RS305C_option.txt b/MAC/Deployment/data/PVSS/License/RS305C_option.txt
index 1daac7724a9bcafb2cdb9cac95653123c62ff952..964db037acf78de582615b05451878133e86948a 100644
--- a/MAC/Deployment/data/PVSS/License/RS305C_option.txt
+++ b/MAC/Deployment/data/PVSS/License/RS305C_option.txt
@@ -1,6 +1,6 @@
 [license]
 code          = "RS305C 61412543354"
-version       = 30800002
+version       = 31100002
 comment       = "Remote Station RS305"
 sn            = "471_3031_2_Astron_Gen_II_2_311"
 expire        = 0000.00.00;00:00:00,000
diff --git a/MAC/Deployment/data/PVSS/License/shield.RS305C.txt b/MAC/Deployment/data/PVSS/License/shield.RS305C.txt
index 5ace83a782bd139f5fabbb571c9db0b4ea14a941..adda3be8c1466c9e0620c5e5ef17181f7c3eb6bf 100644
--- a/MAC/Deployment/data/PVSS/License/shield.RS305C.txt
+++ b/MAC/Deployment/data/PVSS/License/shield.RS305C.txt
@@ -1,8 +1,8 @@
 [license]
-code        = "RS305C 70099091807"
-version     = 30800002
-sn          = "471_3031_2_Astron_Gen_II_2_311/1"
-date        = 2012.10.11;09:46:36,000 
+code        = "RS305C 20354947138"
+version     = 31100002
+sn          = "471_3031_2_Astron_Gen_II_2_311/4"
+date        = 2012.10.26;11:45:21,000 
 comment     = "Remote Station RS305"
 expire      = 0000.00.00;00:00:00,000 
 redundancy  = 0
@@ -14,16 +14,16 @@ ios         = 4000
 ssi         = 0
 api         = 80
 excelreport = 5
-       http = 0
- infoserver = 1000
-  comcenter = 5
+http        = 0
+infoserver  = 1000
+comcenter   = 5
 maintenance = 1
-  scheduler = 1
-     recipe = 1
+scheduler   = 1
+recipe      = 1
 distributed = 255
-      uifix = 0
-    parafix = 0
- pararemote = 0
-    ctrlext = 1
-     update = 0
+uifix       = 0
+parafix     = 0
+pararemote  = 0
+ctrlext     = 1
+update      = 0
 
diff --git a/MAC/Deployment/data/PVSS/License/shield_471_3031_1_Astron_Gen_I_2_311.txt b/MAC/Deployment/data/PVSS/License/shield_471_3031_1_Astron_Gen_I_2_311.txt
deleted file mode 100644
index 6bfaa53e2559fa91f0443f6e4448b9538da58be4..0000000000000000000000000000000000000000
--- a/MAC/Deployment/data/PVSS/License/shield_471_3031_1_Astron_Gen_I_2_311.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-[license]
-#hw              = 00825320842
-code             = "dongleHost 50202878741"
-version          = 31100002
-sn               = "471_3031_1_Astron_Gen_I_2_311"
-expire           = 0000.00.00;00:00:00,000
-redundancy       = 1
-ui               = 15
-para             = 4
-dde              = 5
-event            = 1
-api              = 80
-excelreport      = 5
-http             = 15
-infoserver       = 5000
-ios              = 100000
-comcenter        = 5
-maintenance      = 0
-scheduler        = 0
-ssi              = 0
-distributed      = 255
-uifix            = 0
-parafix          = 0
-pararemote       = 0
-ctrlext          = 1
-update           = 0
-licenseMax       = 8
-licenseLeft      = 8
-
diff --git a/MAC/Deployment/data/PVSS/License/shield_471_3031_2_Astron_Gen_II_2_311.txt b/MAC/Deployment/data/PVSS/License/shield_471_3031_2_Astron_Gen_II_2_311.txt
deleted file mode 100644
index 1f88b754d7848758f9a896ac54611ea9dd403b13..0000000000000000000000000000000000000000
--- a/MAC/Deployment/data/PVSS/License/shield_471_3031_2_Astron_Gen_II_2_311.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-[license]
-code        = "dongleHost 50035217836"
-version     = 31100002
-sn          = "471_3031_2_Astron_Gen_II_2_311"
-expire      = 0000.00.00;00:00:00,000 
-redundancy  = 0
-ui          = 2
-para        = 1
-dde         = 5
-event       = 1
-ios         = 4000
-ssi         = 0
-api         = 80
-excelreport = 5
-       http = 0
- infoserver = 1000
-  comcenter = 5
-maintenance = 1
-  scheduler = 1
-     recipe = 1
-distributed = 255
-      uifix = 0
-    parafix = 0
- pararemote = 0
-    ctrlext = 1
-     update = 0
-licenseMax  = 100
-licenseLeft = 99
-
diff --git a/MAC/Deployment/data/PVSS/License/test_shield.txt b/MAC/Deployment/data/PVSS/License/test_shield.txt
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/MAC/Deployment/data/PVSS/data/BGPAppl.dpdef b/MAC/Deployment/data/PVSS/data/BGPAppl.dpdef
index dedbd889e45696a764b11f176f153b3fc2989f4b..75c6e2843ddae629d7a8091225e3152683da93fa 100644
--- a/MAC/Deployment/data/PVSS/data/BGPAppl.dpdef
+++ b/MAC/Deployment/data/PVSS/data/BGPAppl.dpdef
@@ -1,2 +1,7 @@
 ioNodeList		intArr
 adderList		stringArr
+# the next lists will be in adder.dpdef as from release 1.8
+locusNodeList		stringArr
+writerList		stringArr
+dataProductList		stringArr
+dataProductTypeList	stringArr
\ No newline at end of file
diff --git a/MAC/Deployment/data/PVSS/data/MCUbase.dpdef b/MAC/Deployment/data/PVSS/data/MCUbase.dpdef
index 5f5d4de9cf4c0d6ddeed28409d456a318315586b..c7bb910c2f4e1a698db7bf21568cfa9063736dd6 100644
--- a/MAC/Deployment/data/PVSS/data/MCUbase.dpdef
+++ b/MAC/Deployment/data/PVSS/data/MCUbase.dpdef
@@ -204,7 +204,7 @@ root.CalServer_Processes	NavPanelConfig	"Processes/CalServer.pnl"
 root.BeamServer_Processes	NavPanelConfig	"Processes/BeamServer.pnl"
 root.SHMInfoServer_Processes	NavPanelConfig	"Processes/SHMInfoServer.pnl"
 root.Observation_Observations	NavPanelConfig	"Observations/Observation_overview.pnl"
-root.Ring_Hardware	NavPanelConfig	"Hardware/LOFAR_Europe.pnl:LOFAR_PIC_Europe", "Hardware/LOFAR_Remote.pnl:LOFAR_PIC_Remote", "Hardware/LOFAR_Core.pnl:LOFAR_PIC_Core"
+root.Ring_Hardware	NavPanelConfig	"main.pnl:LOFAR_PIC_Europe", "Hardware/LOFAR_Europe.pnl:LOFAR_PIC_Europe", "Hardware/LOFAR_Remote.pnl:LOFAR_PIC_Remote", "Hardware/LOFAR_Core.pnl:LOFAR_PIC_Core"
 root.LOFAR_Alerts	NavPanelConfig	"Alerts/lofar_alarms.pnl"
 root.LOFAR_Reports	NavPanelConfig	"Reports/LOFAR_Reports_main.pnl"
 root.CEPLOFAR_Processes	NavPanelConfig	"Processes/CEP_Processes.pnl"
diff --git a/MAC/Deployment/data/PVSS/data/StationInfo.dpdef b/MAC/Deployment/data/PVSS/data/StationInfo.dpdef
index 4c0bce9a49b157915ad4c597f2ecfdb23221a488..2549833daf4bafb7e41387fe52f9188a7819d105 100644
--- a/MAC/Deployment/data/PVSS/data/StationInfo.dpdef
+++ b/MAC/Deployment/data/PVSS/data/StationInfo.dpdef
@@ -7,6 +7,8 @@ HBA_Split		bool
 wide_LBAS		bool
 power48On		bool
 power220On		bool
+datastream0		bool
+datastream1		bool
 Cabinet.X		float
 Cabinet.Y		float
 Cabinet.Z		float
diff --git a/MAC/Deployment/data/PVSS/data/StnObservation.dpdef b/MAC/Deployment/data/PVSS/data/StnObservation.dpdef
index 9d213e2143e473ded3af648a62069cd91c767a48..a20fd24d3ba4aae11cf13540f62e284043aae86e 100644
--- a/MAC/Deployment/data/PVSS/data/StnObservation.dpdef
+++ b/MAC/Deployment/data/PVSS/data/StnObservation.dpdef
@@ -1,5 +1,5 @@
 name			string
 claim			:Claim
 receiverBitmap		string
-HBAbitmap		string
-LBAbitmap		string
+HBABitmap		string
+LBABitmap		string
diff --git a/MAC/Deployment/data/StaticMetaData/CableDelays/RS210-CableDelays.conf b/MAC/Deployment/data/StaticMetaData/CableDelays/RS210-CableDelays.conf
new file mode 100644
index 0000000000000000000000000000000000000000..e62d82268aab13b27b21a19030ca733f62769b06
--- /dev/null
+++ b/MAC/Deployment/data/StaticMetaData/CableDelays/RS210-CableDelays.conf
@@ -0,0 +1,114 @@
+#
+# CableDelays.conf RS210
+#
+# This file contains for each input of each RCU the delay the length of the cable
+# connected to it adds to the signal path.
+#
+# Lenghts are in meters, delays are in ns.
+#
+# Note: The first order values are:
+#   50m     199.2573
+#   80m     326.9640
+#   85m     342.5133
+#   115m    465.5254
+#   130m    530.6981
+#
+#		LBL           		LBH             	HBA
+#RCUnr  len 	delay       	len 	delay       	len 	delay
+#-----------------------------------------------------------------------
+0	80	326.9640	80	326.9640	115	465.5254
+1	80	326.9640	80	326.9640	115	465.5254
+2	80	326.9640	80	326.9640	115	465.5254
+3	80	326.9640	80	326.9640	115	465.5254
+4	80	326.9640	80	326.9640	115	465.5254
+5	80	326.9640	80	326.9640	115	465.5254
+6	115	465.5254	80	326.9640	115	465.5254
+7	115	465.5254	80	326.9640	115	465.5254
+8	115	465.5254	80	326.9640	115	465.5254
+9	115	465.5254	80	326.9640	115	465.5254
+10	115	465.5254	80	326.9640	115	465.5254
+11	115	465.5254	80	326.9640	115	465.5254
+12	80	326.9640	80	326.9640	115	465.5254
+13	80	326.9640	80	326.9640	115	465.5254
+14	80	326.9640	80	326.9640	115	465.5254
+15	80	326.9640	80	326.9640	115	465.5254
+16	80	326.9640	80	326.9640	85	342.5133
+17	80	326.9640	80	326.9640	85	342.5133
+18	80	326.9640	115	465.5254	85	342.5133
+19	80	326.9640	115	465.5254	85	342.5133
+20	80	326.9640	80	326.9640	115	465.5254
+21	80	326.9640	80	326.9640	115	465.5254
+22	80	326.9640	80	326.9640	115	465.5254
+23	80	326.9640	80	326.9640	115	465.5254
+24	80	326.9640	80	326.9640	115	465.5254
+25	80	326.9640	80	326.9640	115	465.5254
+26	80	326.9640	80	326.9640	115	465.5254
+27	80	326.9640	80	326.9640	115	465.5254
+28	80	326.9640	80	326.9640	115	465.5254
+29	80	326.9640	80	326.9640	115	465.5254
+30	80	326.9640	80	326.9640	115	465.5254
+31	80	326.9640	80	326.9640	115	465.5254
+32	115	465.5254	80	326.9640	85	342.5133
+33	115	465.5254	80	326.9640	85	342.5133
+34	115	465.5254	80	326.9640	85	342.5133
+35	115	465.5254	80	326.9640	85	342.5133
+36	115	465.5254	80	326.9640	85	342.5133
+37	115	465.5254	80	326.9640	85	342.5133
+38	115	465.5254	80	326.9640	85	342.5133
+39	115	465.5254	80	326.9640	85	342.5133
+40	80	326.9640	115	465.5254	115	465.5254
+41	80	326.9640	115	465.5254	115	465.5254
+42	80	326.9640	115	465.5254	115	465.5254
+43	80	326.9640	115	465.5254	115	465.5254
+44	80	326.9640	80	326.9640	115	465.5254
+45	80	326.9640	80	326.9640	115	465.5254
+46	80	326.9640	80	326.9640	115	465.5254
+47	80	326.9640	80	326.9640	115	465.5254
+48	80	326.9640	80	326.9640	85	342.5133
+49	80	326.9640	80	326.9640	85	342.5133
+50	80	326.9640	80	326.9640	85	342.5133
+51	80	326.9640	80	326.9640	85	342.5133
+52	80	326.9640	80	326.9640	85	342.5133
+53	80	326.9640	80	326.9640	85	342.5133
+54	80	326.9640	80	326.9640	85	342.5133
+55	80	326.9640	80	326.9640	85	342.5133
+56	115	465.5254	80	326.9640	85	342.5133
+57	115	465.5254	80	326.9640	85	342.5133
+58	115	465.5254	80	326.9640	115	465.5254
+59	115	465.5254	80	326.9640	115	465.5254
+60	115	465.5254	80	326.9640	115	465.5254
+61	115	465.5254	80	326.9640	115	465.5254
+62	115	465.5254	80	326.9640	115	465.5254
+63	115	465.5254	80	326.9640	115	465.5254
+64	115	465.5254	80	326.9640	85	342.5133
+65	115	465.5254	80	326.9640	85	342.5133
+66	115	465.5254	80	326.9640	85	342.5133
+67	115	465.5254	80	326.9640	85	342.5133
+68	115	465.5254	115	465.5254	85	342.5133
+69	115	465.5254	115	465.5254	85	342.5133
+70	80	326.9640	115	465.5254	85	342.5133
+71	80	326.9640	115	465.5254	85	342.5133
+72	80	326.9640	80	326.9640	85	342.5133
+73	80	326.9640	80	326.9640	85	342.5133
+74	80	326.9640	80	326.9640	85	342.5133
+75	80	326.9640	80	326.9640	85	342.5133
+76	80	326.9640	80	326.9640	85	342.5133
+77	80	326.9640	80	326.9640	85	342.5133
+78	80	326.9640	80	326.9640	115	465.5254
+79	80	326.9640	80	326.9640	115	465.5254
+80	80	326.9640	80	326.9640	85	342.5133
+81	80	326.9640	80	326.9640	85	342.5133
+82	80	326.9640	80	326.9640	85	342.5133
+83	80	326.9640	80	326.9640	85	342.5133
+84	115	465.5254	80	326.9640	85	342.5133
+85	115	465.5254	80	326.9640	85	342.5133
+86	115	465.5254	80	326.9640	85	342.5133
+87	115	465.5254	80	326.9640	85	342.5133
+88	115	465.5254	80	326.9640	85	342.5133
+89	115	465.5254	80	326.9640	85	342.5133
+90	115	465.5254	80	326.9640	85	342.5133
+91	115	465.5254	80	326.9640	85	342.5133
+92	115	465.5254	80	326.9640	85	342.5133
+93	115	465.5254	80	326.9640	85	342.5133
+94	80	326.9640	115	465.5254	85	342.5133
+95	80	326.9640	115	465.5254	85	342.5133
diff --git a/MAC/Deployment/data/StaticMetaData/ControlInfo.dat b/MAC/Deployment/data/StaticMetaData/ControlInfo.dat
index 0f8caeffff5517028170381dc817baaa19f4b06a..207dd24f166013e02ff256aafc6a98a854b47433 100644
--- a/MAC/Deployment/data/StaticMetaData/ControlInfo.dat
+++ b/MAC/Deployment/data/StaticMetaData/ControlInfo.dat
@@ -3,7 +3,7 @@
 #
 # $Id: $
 #
-# name	IPaddress	MACaddress
+# Name	IPaddress	MACaddress
 #------------------------------------------
 MCU001	10.144.0.2	00:30:48:2d:00:f6
 SAS001	10.144.0.3	00:30:48:79:1c:f4
diff --git a/MAC/Deployment/data/StaticMetaData/RSPConnections_local.dat b/MAC/Deployment/data/StaticMetaData/RSPConnections_local.dat
index 9995472bb426cc7710d6576059df6e9ceda63ed0..811e3d332284e5a7947efbb1eab8c9e7e5ffdae7 100644
--- a/MAC/Deployment/data/StaticMetaData/RSPConnections_local.dat
+++ b/MAC/Deployment/data/StaticMetaData/RSPConnections_local.dat
@@ -9,10 +9,10 @@
 
 # Station_lane   DestIP    DestMAC         alias
 #-------------------------------------------------
-DE601_00 10.211.1.3   00:26:6C:FB:79:69   lofar1a
-DE601_01 10.212.1.3   00:26:6C:FC:CC:31   lofar2a
-DE601_02 10.213.1.3   00:A0:D1:EC:75:69   lofar3a
-DE601_03 10.214.1.3   00:A0:D1:EC:76:85   lofar4a
+DE601_00 10.211.1.2   00:30:48:34:74:5F   lofar1
+DE601_01 10.212.1.2   00:30:48:34:74:73   lofar2
+DE601_02 10.213.1.2   00:30:48:34:74:69   lofar3
+DE601_03 10.214.1.2   00:30:48:BB:90:2F   lofar4
 
 DE602_00 10.170.0.182 00:12:F2:C6:C1:00   R00-BG1-DE602
 DE602_01 10.170.0.182 00:12:F2:C6:C1:00   R00-BG1-DE602
diff --git a/MAC/Navigator2/panels/Processes/MACScheduler.pnl b/MAC/Navigator2/panels/Processes/MACScheduler.pnl
index dd539c4f8d7be8e0ff6565e022f305a7b6be161c..700135b1626990037ca1df51e4c2e9b36b5917f6 100644
--- a/MAC/Navigator2/panels/Processes/MACScheduler.pnl
+++ b/MAC/Navigator2/panels/Processes/MACScheduler.pnl
@@ -1,4 +1,4 @@
-V 10
+V 11
 1
 LANG:1 0 
 PANEL,-1 -1 1013 750 N "_3DFace" 0
@@ -150,7 +150,7 @@ updateOTDB(string dp1, bool connected,
       setValue(\"txt_OTDBpollinterval\", \"backCol\", \"Lofar_invalid\");
     } else {
       setValue(\"txt_OTDBconnected\", \"backCol\", \"Lofar_dpOffline\");
-      setValue(\"txt_OTDBlastPoll\", \"backCol\", \"Lofar_idpOffline\");
+      setValue(\"txt_OTDBlastPoll\", \"backCol\", \"Lofar_dpOffline\");
       setValue(\"txt_OTDBpollinterval\", \"backCol\", \"Lofar_dpOffline\");
     }
   }
@@ -268,9 +268,8 @@ LANG:1 0
 "dashclr"N "_Transparent"
 E E 0 0 1 0 1 E 2.28571428571429 0 0.487179487179487 -38.5714285714286 172.384615384615 0 E 30 303 451 421
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0 1
 LANG:1 4 OTDB
 2 13
 "PRIMITIVE_TEXT7"
@@ -285,12 +284,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 40 344 105 358
+E E 0 1 1 2 1 E U  1 E 40 344 105 357
 0 2 2 "0s" 0 0 0 192 0 0  40 344 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 10 Connected:
 2 14
 "PRIMITIVE_TEXT8"
@@ -305,12 +303,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 349 344 421 358
+E E 0 1 1 2 1 E U  1 E 349 344 421 357
 0 2 2 "0s" 0 0 0 192 0 0  349 344 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 14 Poll Interval:
 2 15
 "PRIMITIVE_TEXT9"
@@ -325,12 +322,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 665 344 718 358
+E E 0 1 1 2 1 E U  1 E 665 344 718 357
 0 2 2 "0s" 0 0 0 192 0 0  665 344 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 10 Last Poll:
 14 16
 "txt_OTDBconnected"
@@ -345,9 +341,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 115 341 339 362
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  115 341 339 362
 2 "0s" 0 0 0 0 0 -1  E E E
 14 17
 "txt_OTDBpollinterval"
@@ -362,9 +357,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 428 338 652 359
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  428 338 652 359
 2 "0s" 0 0 0 0 0 -1  E E E
 14 18
 "txt_OTDBlastPoll"
@@ -379,9 +373,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 728 341 952 362
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  728 341 952 362
 2 "0s" 0 0 0 0 0 -1  E E E
 17 19
 "PlannedObservationList"
@@ -396,9 +389,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 28 418 322 722
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  28 418 322 722
 0
 
 E
@@ -419,12 +411,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 100 390 228 404
+E E 0 1 1 2 1 E U  1 E 100 390 228 403
 0 2 2 "0s" 0 0 0 192 0 0  100 390 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 21 Planned Observations:
 17 32
 "ActiveObservationList"
@@ -439,9 +430,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 358 418 652 722
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  358 418 652 722
 0
 
 E
@@ -462,12 +452,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 430 392 548 406
+E E 0 1 1 2 1 E U  1 E 430 392 548 405
 0 2 2 "0s" 0 0 0 192 0 0  430 392 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 20 Active Observations:
 17 34
 "FinishedObservationList"
@@ -482,9 +471,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 688 420 982 722
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  688 420 982 722
 0
 
 E
@@ -505,12 +493,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 760 392 889 406
+E E 0 1 1 2 1 E U  1 E 760 392 889 405
 0 2 2 "0s" 0 0 0 192 0 0  760 392 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 22 Finished Observations:
 0
 LAYER, 1 
@@ -541,8 +528,8 @@ LAYER, 7
 1
 LANG:1 0 
 0
-3 0 "PANEL_REF1"
+3 0 "PANEL_REF1" -1
 "objects\\Processes\\controller_top.pnl" 49 92 T 0 1 0 1 1.4432899320127e-014 -40
 1
 "$ctrlName""MACScheduler"
-0
\ No newline at end of file
+0
diff --git a/MAC/Navigator2/panels/main.pnl b/MAC/Navigator2/panels/main.pnl
index 894b4c84532bdd2e5af3c2e42dbe4d8a46da5113..6e3543608440157ace313004f7d6bef8edaeace4 100644
--- a/MAC/Navigator2/panels/main.pnl
+++ b/MAC/Navigator2/panels/main.pnl
@@ -1,44 +1,379 @@
-V 10
-1
-LANG:1 0 
-PANEL,1 1 1250 770 N "_3DFace" 0
-E E E E E 1 -1 -1 0  -1 -1
-""0  1
-E E 2
-"CBRef""1"
-"EClose"E
-""
-DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
-LAYER, 0 
-1
-LANG:1 0 
-0
-LAYER, 1 
-1
-LANG:1 0 
-0
-LAYER, 2 
-1
-LANG:1 0 
-0
-LAYER, 3 
-1
-LANG:1 0 
-0
-LAYER, 4 
-1
-LANG:1 0 
-0
-LAYER, 5 
-1
-LANG:1 0 
-0
-LAYER, 6 
-1
-LANG:1 0 
-0
-LAYER, 7 
-1
-LANG:1 0 
-0
-0
\ No newline at end of file
+V 11
+1
+LANG:1 0 
+PANEL,-1 -1 1010 745 N "_3DFace" 0
+"main()
+{
+  // Initialise the Panel
+  navPanel_initPanel(\"fw_viewBox\");
+  
+  baseDP=g_currentDatapoint;
+
+  strPanelName    = \"antennaField\";
+  strModuleName   = myModuleName();   
+
+  stationList = makeDynString(\"CS001\",\"CS002\",\"CS003\",\"CS004\",\"CS005\",\"CS006\",\"RS007\",
+                              \"CS011\",\"CS013\",\"CS017\",
+                              \"CS021\",\"CS024\",\"CS026\",\"CS028\",
+                              \"CS030\",\"CS031\",\"CS032\",
+                              \"RS101\",\"RS103\",\"RS201\",\"RS301\",\"RS302\",\"RS401\",\"RS501\",
+                              \"RS106\",
+                              \"RS205\",\"rs208\",\"RS210\",
+                              \"RS305\",\"RS306\",\"RS307\",\"RS310\",
+                              \"RS406\",\"RS407\",\"RS409\",
+                              \"RS503\",\"RS508\",\"RS509\",
+                              \"DE601\",\"DE602\",\"DE603\",\"DE604\",\"RS605\",\"FR606\",\"SE607\",\"UK608\",
+                              \"CCU001\",\"MCU001\");
+
+  redraw();
+
+}  
+
+//
+// Callback for dpConnect to action point.
+// If there is an action required this point will tell so
+//
+void doAction(string aDP, string anAction) {
+  LOG_DEBUG(\"swlevel.pnl:doAction| Action required. found: \" + anAction);
+  // split action into essentials
+  dyn_string actionString;
+  if (!navFunct_splitAction(anAction,actionString)) {
+    return;
+  }
+  
+  LOG_DEBUG(\"swlevel.pnl:doAction|found actionString: \" + actionString);
+  
+  // Reload
+  if (actionString[1] == \"Reload\") {
+    redraw(arrayList.text(arrayList.number()));
+    return;
+  } else if (actionString[1] == \"DistChanged\") {
+    // for dist system bound hardware only, if the distsystem went offline we need to replace 
+    // the screen with a broken connection screen.
+    if (!g_initializing) {
+    
+      // check if this syst is in the connectionlist and down
+      int iPos=dynContains(g_connections[\"NAME\"],sysName);
+      if (iPos > 0) {
+        if (!g_connections[\"UP\"][iPos]) {
+          navPanel_setEvent(\"invalid DP\",\"ChangePanel\");
+        }
+      }
+    }
+    return;
+  }
+}
+" 0
+ E E E E 1 -1 -1 0  20 30
+""0  1
+E "#uses \"navPanel.ctl\"
+
+dyn_string stationList;
+dyn_string SWLevelRefNames;
+dyn_string datastreamRefNames;
+string strPanelName;
+string strModuleName;
+string baseDP=\"\";
+
+void clearSWLevelRefNames() {
+  // remove all symbols because new ones will be added
+  for (int i=1; i <= dynlen(SWLevelRefNames); i++) {
+    removeSymbol(strModuleName,\"\",SWLevelRefNames[i]);
+  }
+  dynClear(SWLevelRefNames);
+}
+
+void clearDatastreamRefNames() {
+  // remove all symbols because new ones will be added
+  for (int i=1; i <= dynlen(datastreamRefNames); i++) {
+    removeSymbol(strModuleName,\"\",datastreamRefNames[i]);
+  }
+  dynClear(datastreamRefNames);
+}
+
+void redraw() {
+  
+  navFunct_clearGlobalLists();
+  
+  string addPanelName    = \"objects/swlevel.pnl\";
+        
+  if (dynlen(SWLevelRefNames) > 0) {
+    clearSWLevelRefNames();
+  }
+
+  if (dynlen(datastreamRefNames) > 0) {
+    clearDatastreamRefNames();
+  }
+
+  int xPos_AddSymbol = 0; 
+  int yPos_AddSymbol = 18; 
+  int ref = 1;
+  string addPanelName    = \"objects/swlevel.pnl\";
+  //loop over list and prepare panel with all stations and swlevel objects   
+  for (int i=1; i<= dynlen(stationList); i++) {
+
+    SWLevelRefNames[i]=\"stationSW\"+(i);
+      
+    if (  addSymbol(  strModuleName,                   // Stay in this modul
+                      \"\",                              // Name of this panel
+                      addPanelName,                    // Panel to add
+                      SWLevelRefNames[ref],            // Ref of the addedPanel
+                      makeDynString( \"$station:\" + stationList[i]) ,     // Define all $values
+                      xPos_AddSymbol,                  // Xpos of the AddedSymbol
+                      yPos_AddSymbol,                  // Ypos of the AddedSymbol
+                      0,                               // angle
+                      1    ,1                          // zoomX , zoomY
+        ) < 0 ) {
+	  LOG_ERROR(\"swlevel.pnl:redraw|Error Appending swlevel for: \" + stationList[i] + \" in this panel.\");
+          }
+    yPos_AddSymbol += 10;
+    ref++;
+  }
+ 
+  xPos_AddSymbol = 150; 
+  yPos_AddSymbol = 18; 
+  ref = 1;
+  addPanelName    = \"objects/datastreamLevel.pnl\";
+  //loop over list and prepare panel with all datastreamobjects   
+  for (int i=1; i<= dynlen(stationList); i++) {
+    //skip CCU and MCU machines
+    if (strpos(stationList[i],\"MCU\") >=0 ||strpos(stationList[i],\"CCU\") >=0) continue;
+
+    datastreamRefNames[i]=\"datastream\"+(i);
+      
+    if (  addSymbol(  strModuleName,                   // Stay in this modul
+                      \"\",                              // Name of this panel
+                      addPanelName,                    // Panel to add
+                      datastreamRefNames[ref],         // Ref of the addedPanel
+                      makeDynString( \"$station:\" + stationList[i]) ,     // Define all $values
+                      xPos_AddSymbol,                  // Xpos of the AddedSymbol
+                      yPos_AddSymbol,                  // Ypos of the AddedSymbol
+                      0,                               // angle
+                      1    ,1                          // zoomX , zoomY
+        ) < 0 ) {
+	  LOG_ERROR(\"swlevel.pnl:redraw|Error datastream for : \" + stationList[i] + \" in this panel.\");
+          }
+    yPos_AddSymbol += 10;
+    ref++;
+  }
+  // trigger that the panel values are calculated and ready
+  dynClear(highlight);
+  dynClear(strHighlight);
+  
+  // set panel to ready
+  g_objectReady=true;
+  
+  navPanel_setEvent(\"swlevel.pnl\",\"Update\");
+}" 0
+ 2
+"CBRef" "1"
+"EClose" E
+""
+DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
+LAYER, 0 
+1
+LANG:1 0 
+2 4
+"PRIMITIVE_TEXT4"
+""
+1 65 10 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
+ E E
+4 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E U  0 E 65 10 107 23
+0 2 2 "0s" 0 0 0 192 0 0  65 10 1
+1
+LANG:1 34 MS Shell Dlg 2,8,-1,5,75,0,0,0,0,0
+0 1
+LANG:1 7 swlevel
+6 21
+"RECTANGLE1"
+""
+1 140 140 E E E 1 E 1 E N {0,0,0} E N "green" E E
+ E E
+6 0 0 0 0 0
+E E E
+0
+1
+LANG:1 7 Level 6
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 0.7142857142857143 -10 60 1 E 140 140 150 210
+6 22
+"RECTANGLE2"
+""
+1 140 140 E E E 1 E 1 E N {0,0,0} E N "yellow" E E
+ E E
+7 0 0 0 0 0
+E E E
+0
+1
+LANG:1 9 Level 2-5
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 0.7142857142857143 -10 110 1 E 140 140 150 210
+6 23
+"RECTANGLE3"
+""
+1 140 140 E E E 1 E 1 E N {0,0,0} E N {255,170,0} E E
+ E E
+8 0 0 0 0 0
+E E E
+0
+1
+LANG:1 7 Level 1
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 0.7142857142857143 -10 160 1 E 140 140 150 210
+6 24
+"RECTANGLE4"
+""
+1 140 140 E E E 1 E 1 E N {0,0,0} E N "red" E E
+ E E
+9 0 0 0 0 0
+E E E
+0
+1
+LANG:1 7 Level 0
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 0.7142857142857143 -10 210 1 E 140 140 150 210
+2 25
+"PRIMITIVE_TEXT5"
+""
+1 155 2 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
+ E E
+10 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E U  0 E 155 2 196 15
+0 2 2 "0s" 0 0 0 192 0 0  155 2 1
+1
+LANG:1 34 MS Shell Dlg 2,8,-1,5,75,0,0,0,0,0
+0 1
+LANG:1 6 stream
+6 26
+"RECTANGLE5"
+""
+1 140 140 E E E 1 E 1 E N {0,0,0} E N "green" E E
+ E E
+11 0 0 0 0 0
+E E E
+0
+1
+LANG:1 13 datastream on
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1.428571428571429 75 -40 1 E 140 140 150 210
+6 27
+"RECTANGLE6"
+""
+1 140 140 E E E 1 E 1 E N {0,0,0} E N "red" E E
+ E E
+12 0 0 0 0 0
+E E E
+0
+1
+LANG:1 14 datastream off
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E 1 0 1.428571428571429 75 60 1 E 140 140 150 210
+4 28
+"LINE1"
+""
+1 230 0 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
+ E E
+13 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 2 1 2 1 E  230 0 230 540
+2 29
+"PRIMITIVE_TEXT6"
+""
+1 160 15 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
+ E E
+14 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E U  0 E 160 15 167 28
+0 2 2 "0s" 0 0 0 192 0 0  160 15 1
+1
+LANG:1 34 MS Shell Dlg 2,8,-1,5,75,0,0,0,0,0
+0 1
+LANG:1 1 0
+2 30
+"PRIMITIVE_TEXT7"
+""
+1 190 15 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
+ E E
+15 0 0 0 0 0
+E E E
+0
+1
+LANG:1 0 
+
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 2 1 E U  0 E 190 15 197 28
+0 2 2 "0s" 0 0 0 192 0 0  190 15 1
+1
+LANG:1 34 MS Shell Dlg 2,8,-1,5,75,0,0,0,0,0
+0 1
+LANG:1 1 1
+0
+LAYER, 1 
+1
+LANG:1 0 
+0
+LAYER, 2 
+1
+LANG:1 0 
+0
+LAYER, 3 
+1
+LANG:1 0 
+0
+LAYER, 4 
+1
+LANG:1 0 
+0
+LAYER, 5 
+1
+LANG:1 0 
+0
+LAYER, 6 
+1
+LANG:1 0 
+0
+LAYER, 7 
+1
+LANG:1 0 
+0
+0
diff --git a/MAC/Navigator2/panels/objects/Processes/station_interactive_controller_small.pnl b/MAC/Navigator2/panels/objects/Processes/station_interactive_controller_small.pnl
index 731168174963be207b0842b5ba2954ca7cef5567..23827d8ea01a8ae8b5b5cc047bf0be86418f05ca 100644
--- a/MAC/Navigator2/panels/objects/Processes/station_interactive_controller_small.pnl
+++ b/MAC/Navigator2/panels/objects/Processes/station_interactive_controller_small.pnl
@@ -30,9 +30,6 @@ void updateTrigger( string dp1, string objectName,
 
   if (objectName == panelName) {
     LOG_TRACE(\"station_interactive_controller_small.pnl:main|updateTrigger: \"+$name+\" objectName: \"+objectName+\" panelName: \"+panelName);
-    DebugN(\"station_interactive_controller_small.pnl:main|updateTrigger: \"+$name+\" objectName: \"+objectName+\" panelName: \"+panelName);
-    DebugN(\"databaselevel:\",$databaselevel);
-    DebugN(\"paramList:\",paramList);
     string observation=\"\";
     string station = \"\";
     if (dynlen(paramList) > 0) {
diff --git a/MAC/Navigator2/panels/objects/navigator_alerts.pnl b/MAC/Navigator2/panels/objects/navigator_alerts.pnl
index 8dc7a5bb415233bf9553d6b76cf8866abf77cc7e..2187a053dfecc8e64c23db05472cb1921be148a8 100644
--- a/MAC/Navigator2/panels/objects/navigator_alerts.pnl
+++ b/MAC/Navigator2/panels/objects/navigator_alerts.pnl
@@ -1,4 +1,4 @@
-V 10
+V 11
 1
 LANG:1 0 
 PANEL,-1 -1 1058 126 N "_3DFace" 1
@@ -169,12 +169,14 @@ void ackAllClicked() {
 
       // ok rest should be possible to acknowledge
       // find the entry in the table
-      iPos=dynContains(g_alarms[\"DPNAME\"],dp);  
+      if ( dynlen(g_alarms[\"DPNAME\"]) >= 1) {
+        iPos=dynContains(g_alarms[\"DPNAME\"],dp);  
   
-      if (iPos < 1) {
-        LOG_ERROR(\"navigator_alerts.pnl:ackAllClicked|Strange, couldn't find chosen entry in alarm global list: \" + dp);
-      } else {
-        acknowledgeAlarm(iPos,getCurrentTime(),dp,message,0);
+        if (iPos < 1) {
+          LOG_ERROR(\"navigator_alerts.pnl:ackAllClicked|Strange, couldn't find chosen entry in alarm global list: \" + dp);
+        } else {
+          acknowledgeAlarm(iPos,getCurrentTime(),dp,message,0);
+        }
       }
     }    
   } 
@@ -419,10 +421,9 @@ LANG:0 0
 E E 0 1 1 0 1 E U  0 E 990 30 1031.999999999996 46
 0 2 2 "4d" 4 0 0 64 0 0  990 30 1
 2
-LANG:1 87 -*-Arial-bold-r-normal-*-13-*-100-100-*-*-iso8859-1|-13,0,0,0,758,0,0,0,0,0,0,0,0,Arial
+LANG:1 26 Arial,-1,13,5,75,0,0,0,0,0
 LANG:0 107 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,3,2,1,34,Arial
-0 ""
-2
+0 2
 LANG:1 1 0
 LANG:0 1 0
 25 11
@@ -446,9 +447,8 @@ LANG:1 0
 
 0
 1
-LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black
-0 ""
- 8 8 962 92
+LANG:1 32 Arial Black,-1,11,5,50,0,0,0,0,0
+0  8 8 962 92
 E"main(int row, string column, string value)
 {
   click(row);
@@ -488,14 +488,13 @@ LANG:1 2 #3
 LANG:1 2 #4
 10 10
 1
-LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black
-0 ""
-0 1 0 1 7
+LANG:1 32 Arial Black,-1,11,5,50,0,0,0,0,0
+0 0 1 0 1 7
 1 0
 2 16
 "PRIMITIVE_TEXT1"
 ""
-1 970 10 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+1 968 -10 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
  E E
 28 0 0 0 0 0
 E E E
@@ -505,12 +504,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1.666666666666667 -2 -26.66666666666667 1 E 972 22 1025 36
+E E 0 1 1 2 1 E 1 0 1.666666666666667 -2 -26.66666666666667 1 E 972 22 1025 35
 0 2 2 "0s" 0 0 0 192 0 0  972 22 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 9 # Alarms:
 13 17
 "ack_all_button"
@@ -525,9 +523,8 @@ LANG:1 22 Acknowledge all alarms
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 968 58 1032 84
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  968 58 1032 84
 
 T 
 1
@@ -566,4 +563,4 @@ LAYER, 7
 1
 LANG:1 0 
 0
-0
\ No newline at end of file
+0
diff --git a/MAC/Tools/Clock/plotclock b/MAC/Tools/Clock/plotclock
index d48ca77870972fbd636b0f427807241dff14ab5f..f9c64a4debd8d47b32866a6925453bba7a4066a2 100755
--- a/MAC/Tools/Clock/plotclock
+++ b/MAC/Tools/Clock/plotclock
@@ -1,6 +1,6 @@
 #!/bin/bash
 #
-# V1.0, M.J.Norden, 18-09-2012
+# V1.1, M.J.Norden, 02-11-2012
 # Usage: plotclock yyyymmdd
 #
 
@@ -8,7 +8,8 @@ if [ "$1" != "" ]; then
    cp /var/log/ntpstats/loopstats.$1 /localhome/data/loopstats
    
 else 
-   cp /var/log/ntpstats/loopstats /localhome/data/loopstats
+   now="`date +%Y%m%d`"
+   cp /var/log/ntpstats/loopstats.$now /localhome/data/loopstats
    echo "Usage: plotclock yyyymmdd"
    sleep 1
    
diff --git a/MAC/Tools/Rubidium/plotrubidium b/MAC/Tools/Rubidium/plotrubidium
old mode 100644
new mode 100755
index 7f7807b379b46760a7b8329a08ecc31dfb91c725..aaf2532ae79d52d2c7d488a4f04a877c666d3f21
--- a/MAC/Tools/Rubidium/plotrubidium
+++ b/MAC/Tools/Rubidium/plotrubidium
@@ -1,6 +1,6 @@
 #!/bin/bash
 #
-# V1.0, M.J.Norden, 18-09-2012
+# V1.1, M.J.Norden, 02-11-2012
 # Usage: plotrubidium yyyymmdd
 #
 
@@ -8,7 +8,8 @@ if [ "$1" != "" ]; then
    cp /var/log/ntpstats/rubidium_log.$1 /localhome/data/rubidium_log
    
 else 
-   cp /var/log/ntpstats/rubidium_log /localhome/data/rubidium_log
+   now="`date +%Y%m%d`"
+   cp /var/log/ntpstats/rubidium_log.$now /localhome/data/rubidium_log
    echo "Usage: plotrubidium yyyymmdd"
    sleep 1
    
diff --git a/RTCP/CNProc/src/AsyncTransposeBeams.cc b/RTCP/CNProc/src/AsyncTransposeBeams.cc
index 9ff2e0d426b1b4abcffc08c2f67f8c61c9057a04..39b00d5a656774a9e56ad4987c2021d9852abe5f 100644
--- a/RTCP/CNProc/src/AsyncTransposeBeams.cc
+++ b/RTCP/CNProc/src/AsyncTransposeBeams.cc
@@ -20,11 +20,10 @@ namespace RTCP {
 
 union Tag {
   struct {
-    unsigned sourceRank :13; /* 0..8191, or two BG/P racks */
-    unsigned comm       :2;
-    unsigned _dummy     :1;
-    unsigned subband    :8;
-    unsigned beam       :8;
+    unsigned sign       : 1; /* must be 0 */
+    unsigned sourceRank :11; /* 0..4095, or one BG/P rack */
+    unsigned subband    :10;
+    unsigned beam       : 9;
   } info;
 
   uint32 nr;
@@ -48,6 +47,7 @@ AsyncTransposeBeams::AsyncTransposeBeams(
   itsCommHandles(itsNrCommunications,nrSubbands),
   itsLocalSubbands(nrSubbands)
 {
+  ASSERT(itsNrCommunications == 1); // no bits left to encode communication channel, so we can support only one
 }
 
   template <typename T,unsigned DIM, unsigned FLAGS_DIM> void AsyncTransposeBeams::postReceive(SampleData<T,DIM,FLAGS_DIM> *transposedData, unsigned localSubband, unsigned globalSubband, unsigned beam, unsigned psetIndex, unsigned coreIndex)
@@ -71,8 +71,9 @@ AsyncTransposeBeams::AsyncTransposeBeams(
   for (unsigned h = 0; h < itsNrCommunications; h ++) {
     Tag t;
 
+    t.info.sign       = 0;
     t.info.sourceRank = rank;
-    t.info.comm       = h;
+    //t.info.comm       = h;
     t.info.beam       = beam;
     t.info.subband    = globalSubband;
 
@@ -104,7 +105,8 @@ unsigned AsyncTransposeBeams::waitForAnyReceive()
     LOG_DEBUG_STR( "Received subband " << subband << " from pset ??, rank " << rank << ", tag " << tag );
 #endif
     // mark the right communication handle as received
-    itsCommHandles[t.info.comm][subband] = -1;
+    unsigned comm = 0; // = t.info.comm;
+    itsCommHandles[comm][subband] = -1;
 
     // check whether we have received all communications for this psetIndex.
     // This is the case when commHandles are -1.
@@ -141,8 +143,9 @@ unsigned AsyncTransposeBeams::waitForAnyReceive()
   for (unsigned h = 0; h < itsNrCommunications; h ++) {
     Tag t;
 
+    t.info.sign       = 0;
     t.info.sourceRank = itsLocationInfo.rank();
-    t.info.comm       = h;
+    //t.info.comm       = h;
     t.info.subband    = subband;
     t.info.beam       = globalBeam;
 
diff --git a/RTCP/CNProc/src/BeamFormerAsm.S b/RTCP/CNProc/src/BeamFormerAsm.S
index 9b4eadf8ecb79f34f7af25a8eed045a44506b9a6..680e37ebf8b0322aad7b79aa09df167f1b1236b3 100644
--- a/RTCP/CNProc/src/BeamFormerAsm.S
+++ b/RTCP/CNProc/src/BeamFormerAsm.S
@@ -1,765 +1,5 @@
 #if defined HAVE_BGP
 
-.global	_add_2_single_precision_vectors
-_add_2_single_precision_vectors:
-
-	li	 0,-16
-	stfpdux  14,1,0
-	stfpdux  15,1,0
-
-	srwi	 6,6,4
-	li	 11,8
-	subi	 6,6,1
-	mtctr	 6
-
-	cmpwi	 0,6,0
-	lfpsx	 0,0,4
-	lfpsx	 1,0,5
-	lfpsux	 2,4,11
-	lfpsux	 3,5,11
-	lfpsux	 4,4,11
-	lfpsux	 5,5,11
-	lfpsux	 6,4,11
-	lfpsux	 7,5,11
-	lfpsux	 8,4,11
-	lfpsux	 9,5,11
-	lfpsux	 10,4,11
-	lfpsux	 11,5,11
-	fpadd	 0,0,1
-	lfpsux	 12,4,11
-	lfpsux	 13,5,11
-	fpadd	 2,2,3
-	lfpsux	 14,4,11
-	lfpsux	 15,5,11
-	stfpsx	 0,0,3
-	fpadd	 4,4,5
-	beq-	 0,1f
-
-0:	lfpsux	 0,4,11
-	lfpsux	 1,5,11
-	stfpsux	 2,3,11
-	fpadd	 6,6,7
-	lfpsux	 2,4,11
-	lfpsux	 3,5,11
-	stfpsux	 4,3,11
-	fpadd	 8,8,9
-	lfpsux	 4,4,11
-	lfpsux	 5,5,11
-	stfpsux	 6,3,11
-	fpadd	 10,10,11
-	lfpsux	 6,4,11
-	lfpsux	 7,5,11
-	stfpsux	 8,3,11
-	fpadd	 12,12,13
-	lfpsux	 8,4,11
-	lfpsux	 9,5,11
-	stfpsux	 10,3,11
-	fpadd	 14,14,15
-	lfpsux	 10,4,11
-	lfpsux	 11,5,11
-	stfpsux	 12,3,11
-	fpadd	 0,0,1
-	lfpsux	 12,4,11
-	lfpsux	 13,5,11
-	stfpsux	 14,3,11
-	fpadd	 2,2,3
-	lfpsux	 14,4,11
-	lfpsux	 15,5,11
-	stfpsux	 0,3,11
-	fpadd	 4,4,5
-	bdnz	 0b
-
-1:	stfpsux	 2,3,11
-	fpadd	 6,6,7
-	stfpsux	 4,3,11
-	fpadd	 8,8,9
-	stfpsux	 6,3,11
-	fpadd	 10,10,11
-	stfpsux	 8,3,11
-	fpadd	 12,12,13
-	stfpsux	 10,3,11
-	fpadd	 14,14,15
-	stfpsux	 12,3,11
-	stfpsux	 14,3,11
-
-	li	 0,16		# restore call-saved registers
-	lfpdx	 15,0,1
-	lfpdux	 14,1,0
-	addi	 1,1,16
-
-	blr
-
-
-.global	_add_3_single_precision_vectors
-_add_3_single_precision_vectors:
-
-	li	 0,-16
-	stfpdux  14,1,0
-	stfpdux  15,1,0
-	stfpdux  16,1,0
-	stfpdux  17,1,0
-	stfpdux  18,1,0
-	stfpdux  19,1,0
-	stfpdux  20,1,0
-	stfpdux  21,1,0
-	stfpdux  22,1,0
-	stfpdux  23,1,0
-
-	srwi	 7,7,4
-	li	 11,8
-	subi	 7,7,1
-	mtctr	 7
-
-	cmpwi	 0,7,0
-	lfpsx	 0,0,4
-	lfpsx	 1,0,5
-	lfpsx	 2,0,6
-	lfpsux	 3,4,11
-	lfpsux	 4,5,11
-	lfpsux	 5,6,11
-	lfpsux	 6,4,11
-	lfpsux	 7,5,11
-	lfpsux	 8,6,11
-	lfpsux	 9,4,11
-	lfpsux	 10,5,11
-	lfpsux	 11,6,11
-	lfpsux	 12,4,11
-	lfpsux	 13,5,11
-	lfpsux	 14,6,11
-	lfpsux	 15,4,11
-	lfpsux	 16,5,11
-	fpadd	 0,0,1
-	lfpsux	 17,6,11
-	lfpsux	 18,4,11
-	lfpsux	 19,5,11
-	fpadd	 3,3,4
-	lfpsux	 20,6,11
-	fpadd	 0,0,2
-	lfpsux	 21,4,11
-	lfpsux	 22,5,11
-	fpadd	 6,6,7
-	lfpsux	 23,6,11
-	fpadd	 3,3,5
-	stfpsx	 0,0,3
-	beq-	 0,1f
-	li	 10,32
-
-0:	lfpsux	 0,4,11
-	lfpsux	 1,5,11
-	dcbt	 4,10
-	fpadd	 9,9,10
-	lfpsux	 2,6,11
-	fpadd	 6,6,8
-	stfpsux	 3,3,11
-	lfpsux	 3,4,11
-	lfpsux	 4,5,11
-	fpadd	 12,12,13
-	lfpsux	 5,6,11
-	fpadd	 9,9,11
-	stfpsux	 6,3,11
-	lfpsux	 6,4,11
-	lfpsux	 7,5,11
-	fpadd	 15,15,16
-	lfpsux	 8,6,11
-	fpadd	 12,12,14
-	stfpsux	 9,3,11
-	lfpsux	 9,4,11
-	lfpsux	 10,5,11
-	fpadd	 18,18,19
-	lfpsux	 11,6,11
-	fpadd	 15,15,17
-	stfpsux	 12,3,11
-	lfpsux	 12,4,11
-	lfpsux	 13,5,11
-	fpadd	 21,21,22
-	lfpsux	 14,6,11
-	fpadd	 18,18,20
-	stfpsux	 15,3,11
-	lfpsux	 15,4,11
-	lfpsux	 16,5,11
-	fpadd	 0,0,1
-	lfpsux	 17,6,11
-	fpadd	 21,21,23
-	stfpsux	 18,3,11
-	lfpsux	 18,4,11
-	lfpsux	 19,5,11
-	fpadd	 3,3,4
-	lfpsux	 20,6,11
-	fpadd	 0,0,2
-	stfpsux	 21,3,11
-	lfpsux	 21,4,11
-	lfpsux	 22,5,11
-	fpadd	 6,6,7
-	lfpsux	 23,6,11
-	fpadd	 3,3,5
-	stfpsux	 0,3,11
-	bdnz	 0b
-
-1:	fpadd	 9,9,10
-	fpadd	 6,6,8
-	stfpsux	 3,3,11
-	fpadd	 12,12,13
-	fpadd	 9,9,11
-	stfpsux	 6,3,11
-	fpadd	 15,15,16
-	fpadd	 12,12,14
-	stfpsux	 9,3,11
-	fpadd	 18,18,19
-	fpadd	 15,15,17
-	stfpsux	 12,3,11
-	fpadd	 21,21,22
-	fpadd	 18,18,20
-	stfpsux	 15,3,11
-	fpadd	 21,21,23
-	stfpsux	 18,3,11
-	stfpsux	 21,3,11
-
-	li	 0,16		# restore call-saved registers
-	lfpdx	 23,0,1
-	lfpdux	 22,1,0
-	lfpdux	 21,1,0
-	lfpdux	 20,1,0
-	lfpdux	 19,1,0
-	lfpdux	 18,1,0
-	lfpdux	 17,1,0
-	lfpdux	 16,1,0
-	lfpdux	 15,1,0
-	lfpdux	 14,1,0
-	addi	 1,1,16
-
-	blr
-
-
-.global	_add_4_single_precision_vectors
-_add_4_single_precision_vectors:
-
-	li	 0,-16
-	stfpdux  14,1,0
-	stfpdux  15,1,0
-	stfpdux  16,1,0
-	stfpdux  17,1,0
-	stfpdux  18,1,0
-	stfpdux  19,1,0
-	stfpdux  20,1,0
-	stfpdux  21,1,0
-	stfpdux  22,1,0
-	stfpdux  23,1,0
-	stfpdux  24,1,0
-	stfpdux  25,1,0
-	stfpdux  26,1,0
-	stfpdux  27,1,0
-	stfpdux  28,1,0
-	stfpdux  29,1,0
-	stfpdux  30,1,0
-	stfpdux  31,1,0
-
-	srwi	 8,8,4
-	li	 11,8
-	subi	 8,8,1
-	mtctr	 8
-
-	cmpwi	 0,8,0
-	lfpsx	 0,0,4
-	lfpsx	 1,0,5
-	lfpsx	 2,0,6
-	lfpsx	 3,0,7
-	lfpsux	 4,4,11
-	lfpsux	 5,5,11
-	lfpsux	 6,6,11
-	lfpsux	 7,7,11
-	lfpsux	 8,4,11
-	lfpsux	 9,5,11
-	lfpsux	 10,6,11
-	lfpsux	 11,7,11
-	lfpsux	 12,4,11
-	lfpsux	 13,5,11
-	lfpsux	 14,6,11
-	lfpsux	 15,7,11
-	lfpsux	 16,4,11
-	lfpsux	 17,5,11
-	lfpsux	 18,6,11
-	lfpsux	 19,7,11
-	lfpsux	 20,4,11
-	lfpsux	 21,5,11
-	fpadd	 0,0,1
-	fpadd	 2,2,3
-	lfpsux	 22,6,11
-	lfpsux	 23,7,11
-	lfpsux	 24,4,11
-	lfpsux	 25,5,11
-	fpadd	 4,4,5
-	fpadd	 6,6,7
-	lfpsux	 26,6,11
-	lfpsux	 27,7,11
-	fpadd	 0,0,2
-	lfpsux	 28,4,11
-	lfpsux	 29,5,11
-	fpadd	 8,8,9
-	fpadd	 10,10,11
-	lfpsux	 30,6,11
-	lfpsux	 31,7,11
-
-	stfpsx	 0,0,3
-	fpadd	 4,4,6
-	beq-	 0,1f
-
-0:	lfpsux	 0,4,11
-	lfpsux	 1,5,11
-	fpadd	 12,12,13
-	fpadd	 14,14,15
-	lfpsux	 2,6,11
-	lfpsux	 3,7,11
-
-	stfpsux	 4,3,11
-	fpadd	 8,8,10
-
-	lfpsux	 4,4,11
-	lfpsux	 5,5,11
-	fpadd	 16,16,17
-	fpadd	 18,18,19
-	lfpsux	 6,6,11
-	lfpsux	 7,7,11
-
-	stfpsux	 8,3,11
-	fpadd	 12,12,14
-
-	lfpsux	 8,4,11
-	lfpsux	 9,5,11
-	fpadd	 20,20,21
-	fpadd	 22,22,23
-	lfpsux	 10,6,11
-	lfpsux	 11,7,11
-
-	stfpsux	 12,3,11
-	fpadd	 16,16,18
-
-	lfpsux	 12,4,11
-	lfpsux	 13,5,11
-	fpadd	 24,24,25
-	fpadd	 26,26,27
-	lfpsux	 14,6,11
-	lfpsux	 15,7,11
-
-	stfpsux	 16,3,11
-	fpadd	 20,20,22
-
-	lfpsux	 16,4,11
-	lfpsux	 17,5,11
-	fpadd	 28,28,29
-	fpadd	 30,30,31
-	lfpsux	 18,6,11
-	lfpsux	 19,7,11
-
-	stfpsux	 20,3,11
-	fpadd	 24,24,26
-
-	lfpsux	 20,4,11
-	lfpsux	 21,5,11
-	fpadd	 0,0,1
-	fpadd	 2,2,3
-	lfpsux	 22,6,11
-	lfpsux	 23,7,11
-
-	stfpsux	 24,3,11
-	fpadd	 28,28,30
-
-	lfpsux	 24,4,11
-	lfpsux	 25,5,11
-	fpadd	 4,4,5
-	fpadd	 6,6,7
-	lfpsux	 26,6,11
-	lfpsux	 27,7,11
-
-	stfpsux	 28,3,11
-	fpadd	 0,0,2
-
-	lfpsux	 28,4,11
-	lfpsux	 29,5,11
-	fpadd	 8,8,9
-	fpadd	 10,10,11
-	lfpsux	 30,6,11
-	lfpsux	 31,7,11
-
-	stfpsux	 0,3,11
-	fpadd	 4,4,6
-
-	bdnz	 0b
-
-1:	fpadd	 12,12,13
-	fpadd	 14,14,15
-
-	stfpsux	 4,3,11
-	fpadd	 8,8,10
-
-	fpadd	 16,16,17
-	fpadd	 18,18,19
-
-	stfpsux	 8,3,11
-	fpadd	 12,12,14
-
-	fpadd	 20,20,21
-	fpadd	 22,22,23
-
-	stfpsux	 12,3,11
-	fpadd	 16,16,18
-
-	fpadd	 24,24,25
-	fpadd	 26,26,27
-
-	stfpsux	 16,3,11
-	fpadd	 20,20,22
-
-	lfpsux	 16,4,11
-	lfpsux	 17,5,11
-	fpadd	 28,28,29
-	fpadd	 30,30,31
-	stfpsux	 20,3,11
-	fpadd	 24,24,26
-	stfpsux	 24,3,11
-	fpadd	 28,28,30
-	stfpsux	 28,3,11
-
-	li	 0,16		# restore call-saved registers
-	lfpdx	 31,0,1
-	lfpdux	 30,1,0
-	lfpdux	 29,1,0
-	lfpdux	 28,1,0
-	lfpdux	 27,1,0
-	lfpdux	 26,1,0
-	lfpdux	 25,1,0
-	lfpdux	 24,1,0
-	lfpdux	 23,1,0
-	lfpdux	 22,1,0
-	lfpdux	 21,1,0
-	lfpdux	 20,1,0
-	lfpdux	 19,1,0
-	lfpdux	 18,1,0
-	lfpdux	 17,1,0
-	lfpdux	 16,1,0
-	lfpdux	 15,1,0
-	lfpdux	 14,1,0
-	addi	 1,1,16
-
-	blr
-
-
-.global	_add_5_single_precision_vectors
-_add_5_single_precision_vectors:
-
-	li	 0,-16
-	stfpdux  14,1,0
-	stfpdux  15,1,0
-	stfpdux  16,1,0
-	stfpdux  17,1,0
-	stfpdux  18,1,0
-	stfpdux  19,1,0
-	stfpdux  24,1,0
-	stfpdux  25,1,0
-	stfpdux  26,1,0
-	stfpdux  27,1,0
-	stfpdux  28,1,0
-	stfpdux  29,1,0
-
-	srwi	 9,9,3
-	li	 11,8
-	subi	 9,9,1
-	mtctr	 9
-	subi	 3,3,8
-
-	cmpwi	 0,9,0
-
-	lfpsx	 0,0,4
-	lfpsx	 1,0,5
-	lfpsx	 2,0,6
-	lfpsx	 3,0,7
-	lfpsx	 4,0,8
-
-	lfpsux	 5,4,11
-	lfpsux	 6,5,11
-	lfpsux	 7,6,11
-	lfpsux	 8,7,11
-	lfpsux	 9,8,11
-
-	lfpsux	 10,4,11
-	lfpsux	 11,5,11
-	lfpsux	 12,6,11
-	lfpsux	 13,7,11
-	lfpsux	 14,8,11
-	fpadd	 24,0,1
-	fpadd	 25,2,3
-
-	lfpsux	 15,4,11
-	lfpsux	 16,5,11
-	lfpsux	 17,6,11
-	fpadd	 24,24,25
-	lfpsux	 18,7,11
-	lfpsux	 19,8,11
-	fpadd	 27,5,6
-	fpadd	 28,7,8
-
-	beq-	 0,1f
-	li	 10,48
-
-0:
-	dcbt	 4,10
-	lfpsux	 0,4,11
-	fpadd	 24,24,4
-	lfpsux	 1,5,11
-	lfpsux	 2,6,11
-	fpadd	 27,27,28
-	lfpsux	 3,7,11
-	lfpsux	 4,8,11
-	stfpsux	 24,3,11
-	fpadd	 24,10,11
-	dcbt	 5,10
-	fpadd	 25,12,13
-
-	lfpsux	 5,4,11
-	fpadd	 27,27,9
-	lfpsux	 6,5,11
-	lfpsux	 7,6,11
-	fpadd	 24,24,25
-	lfpsux	 8,7,11
-	lfpsux	 9,8,11
-	stfpsux	 27,3,11
-	fpadd	 27,15,16
-	dcbt	 6,10
-	fpadd	 28,17,18
-
-	lfpsux	 10,4,11
-	fpadd	 24,24,14
-	lfpsux	 11,5,11
-	lfpsux	 12,6,11
-	fpadd	 27,27,28
-	lfpsux	 13,7,11
-	lfpsux	 14,8,11
-	stfpsux	 24,3,11
-	fpadd	 24,0,1
-	dcbt	 7,10
-	fpadd	 25,2,3
-
-	lfpsux	 15,4,11
-	fpadd	 27,27,19
-	lfpsux	 16,5,11
-	lfpsux	 17,6,11
-	fpadd	 24,24,25
-	dcbt	 8,10
-	lfpsux	 18,7,11
-	lfpsux	 19,8,11
-	stfpsux	 27,3,11
-	fpadd	 27,5,6
-	fpadd	 28,7,8
-
-	bdnz	 0b
-
-1:
-	fpadd	 24,24,4
-	fpadd	 27,27,28
-	stfpsux	 24,3,11
-	fpadd	 24,10,11
-	fpadd	 25,12,13
-
-	fpadd	 27,27,9
-	fpadd	 24,24,25
-	stfpsux	 27,3,11
-	fpadd	 27,15,16
-	fpadd	 28,17,18
-
-	fpadd	 24,24,14
-	fpadd	 27,27,28
-	stfpsux	 24,3,11
-
-	fpadd	 27,27,19
-	stfpsux	 27,3,11
-
-	li	 0,16		# restore call-saved registers
-	lfpdx	 29,0,1
-	lfpdux	 28,1,0
-	lfpdux	 27,1,0
-	lfpdux	 26,1,0
-	lfpdux	 25,1,0
-	lfpdux	 24,1,0
-	lfpdux	 19,1,0
-	lfpdux	 18,1,0
-	lfpdux	 17,1,0
-	lfpdux	 16,1,0
-	lfpdux	 15,1,0
-	lfpdux	 14,1,0
-	addi	 1,1,16
-	blr
-
-
-.global	_add_6_single_precision_vectors
-_add_6_single_precision_vectors:
-
-	li	 0,-16
-	stfpdux  14,1,0
-	stfpdux  15,1,0
-	stfpdux  16,1,0
-	stfpdux  17,1,0
-	stfpdux  18,1,0
-	stfpdux  19,1,0
-	stfpdux  20,1,0
-	stfpdux  21,1,0
-	stfpdux  22,1,0
-	stfpdux  23,1,0
-	stfpdux  24,1,0
-	stfpdux  25,1,0
-	stfpdux  26,1,0
-	stfpdux  27,1,0
-	stfpdux  28,1,0
-	stfpdux  29,1,0
-
-	srwi	 10,10,3
-	li	 11,8
-	subi	 10,10,1
-	mtctr	 10
-	subi	 3,3,8
-
-	cmpwi	 0,10,0
-
-	lfpsx	 0,0,4
-	lfpsx	 1,0,5
-	lfpsx	 2,0,6
-	lfpsx	 3,0,7
-	lfpsx	 4,0,8
-	lfpsx	 5,0,9
-
-	lfpsux	 6,4,11
-	lfpsux	 7,5,11
-	lfpsux	 8,6,11
-	lfpsux	 9,7,11
-	lfpsux	 10,8,11
-	lfpsux	 11,9,11
-
-	lfpsux	 12,4,11
-	lfpsux	 13,5,11
-	lfpsux	 14,6,11
-	lfpsux	 15,7,11
-	lfpsux	 16,8,11
-	lfpsux	 17,9,11
-	fpadd	 24,0,1
-	fpadd	 25,2,3
-
-	lfpsux	 18,4,11
-	lfpsux	 19,5,11
-	lfpsux	 20,6,11
-	fpadd	 26,4,5
-	fpadd	 24,24,25
-	lfpsux	 21,7,11
-	lfpsux	 22,8,11
-	lfpsux	 23,9,11
-	fpadd	 27,6,7
-	fpadd	 28,8,9
-
-	beq-	 0,1f
-	li	 10,48
-
-0:
-	dcbt	 4,10
-	lfpsux	 0,4,11
-	fpadd	 24,24,26
-	lfpsux	 1,5,11
-	lfpsux	 2,6,11
-	fpadd	 29,10,11
-	fpadd	 27,27,28
-	lfpsux	 3,7,11
-	lfpsux	 4,8,11
-	lfpsux	 5,9,11
-	dcbt	 5,10
-	stfpsux	 24,3,11
-	fpadd	 24,12,13
-	fpadd	 25,14,15
-
-	lfpsux	 6,4,11
-	fpadd	 27,27,29
-	lfpsux	 7,5,11
-	lfpsux	 8,6,11
-	dcbt	 6,10
-	fpadd	 26,16,17
-	fpadd	 24,24,25
-	lfpsux	 9,7,11
-	lfpsux	 10,8,11
-	lfpsux	 11,9,11
-	stfpsux	 27,3,11
-	fpadd	 27,18,19
-	fpadd	 28,20,21
-
-	dcbt	 7,10
-	lfpsux	 12,4,11
-	fpadd	 24,24,26
-	lfpsux	 13,5,11
-	lfpsux	 14,6,11
-	fpadd	 29,22,23
-	fpadd	 27,27,28
-	lfpsux	 15,7,11
-	lfpsux	 16,8,11
-	lfpsux	 17,9,11
-	dcbt	 8,10
-	stfpsux	 24,3,11
-	fpadd	 24,0,1
-	fpadd	 25,2,3
-
-	lfpsux	 18,4,11
-	fpadd	 27,27,29
-	lfpsux	 19,5,11
-	lfpsux	 20,6,11
-	dcbt	 9,10
-	fpadd	 26,4,5
-	fpadd	 24,24,25
-	lfpsux	 21,7,11
-	lfpsux	 22,8,11
-	lfpsux	 23,9,11
-	stfpsux	 27,3,11
-	fpadd	 27,6,7
-	fpadd	 28,8,9
-
-	bdnz	 0b
-
-1:
-	fpadd	 24,24,26
-	fpadd	 29,10,11
-	fpadd	 27,27,28
-	stfpsux	 24,3,11
-	fpadd	 24,12,13
-	fpadd	 25,14,15
-
-	fpadd	 27,27,29
-	fpadd	 26,16,17
-	fpadd	 24,24,25
-	stfpsux	 27,3,11
-	fpadd	 27,18,19
-	fpadd	 28,20,21
-
-	fpadd	 24,24,26
-	fpadd	 29,22,23
-	fpadd	 27,27,28
-	stfpsux	 24,3,11
-
-	fpadd	 27,27,29
-	stfpsux	 27,3,11
-
-	li	 0,16		# restore call-saved registers
-	lfpdx	 29,0,1
-	lfpdux	 28,1,0
-	lfpdux	 27,1,0
-	lfpdux	 26,1,0
-	lfpdux	 25,1,0
-	lfpdux	 24,1,0
-	lfpdux	 23,1,0
-	lfpdux	 22,1,0
-	lfpdux	 21,1,0
-	lfpdux	 20,1,0
-	lfpdux	 19,1,0
-	lfpdux	 18,1,0
-	lfpdux	 17,1,0
-	lfpdux	 16,1,0
-	lfpdux	 15,1,0
-	lfpdux	 14,1,0
-	addi	 1,1,16
-	blr
-
-
 .align	5
 
 .global	_beamform_3stations_6beams
diff --git a/RTCP/CNProc/src/BeamFormerAsm.h b/RTCP/CNProc/src/BeamFormerAsm.h
index 88f8c136c0dfe0fff1ff3095125128e9cf4e9bde..2a8399e10dcd7e39d0f33354be9b8c19dd8afc44 100644
--- a/RTCP/CNProc/src/BeamFormerAsm.h
+++ b/RTCP/CNProc/src/BeamFormerAsm.h
@@ -3,6 +3,7 @@
 
 #if defined HAVE_BGP
 
+#include <Interface/BGPAsm.h>
 #include <cstring>
 
 namespace LOFAR {
@@ -10,53 +11,6 @@ namespace RTCP {
 
 extern "C" {
 
-// all float * must be aligned to 8 bytes
-
-void _add_2_single_precision_vectors(
-  /* r3 */ float *dst,
-  /* r4 */ const float *src1,
-  /* r5 */ const float *src2,
-  /* r6 */ unsigned count /* non-zero; multiple of 16 */
-);  
-
-void _add_3_single_precision_vectors(
-  /* r3 */ float *dst,
-  /* r4 */ const float *src1,
-  /* r5 */ const float *src2,
-  /* r6 */ const float *src3,
-  /* r7 */ unsigned count /* non-zero; multiple of 16 */
-);  
-
-void _add_4_single_precision_vectors(
-  /* r3 */ float *dst,
-  /* r4 */ const float *src1,
-  /* r5 */ const float *src2,
-  /* r6 */ const float *src3,
-  /* r7 */ const float *src4,
-  /* r8 */ unsigned count /* non-zero; multiple of 16 */
-);  
-
-void _add_5_single_precision_vectors(
-  /* r3 */ float *dst,
-  /* r4 */ const float *src1,
-  /* r5 */ const float *src2,
-  /* r6 */ const float *src3,
-  /* r7 */ const float *src4,
-  /* r8 */ const float *src5,
-  /* r9 */ unsigned count /* non-zero; multiple of 16 */
-);  
-
-void _add_6_single_precision_vectors(
-  /* r3 */ float *dst,
-  /* r4 */ const float *src1,
-  /* r5 */ const float *src2,
-  /* r6 */ const float *src3,
-  /* r7 */ const float *src4,
-  /* r8 */ const float *src5,
-  /* r9 */ const float *src6,
-  /* r10 */ unsigned count /* non-zero; multiple of 16 */
-);  
-
 #if 0
 void _beamform_3beams(
   /* r3 */ fcomplex *dst,
@@ -134,33 +88,6 @@ void _beamform_6beams_2times(
 
 } // extern "C"
 
-// Similar functions that do not need or have an ASM version
-
-// defined just to aid the use of macros
-static inline void _add_1_single_precision_vectors(
-  float *dst,
-  const float *src1,
-  unsigned count /* non-zero; multiple of 16 */
-) {
-  // nothing to add, so just copy the values
-  memcpy( dst, src1, count * sizeof(float) );
-}
-
-static inline void _add_7_single_precision_vectors(
-  float *dst,
-  const float *src1,
-  const float *src2,
-  const float *src3,
-  const float *src4,
-  const float *src5,
-  const float *src6,
-  const float *src7,
-  unsigned count /* non-zero; multiple of 16 */
-) {
-  _add_4_single_precision_vectors( dst, src1, src2, src3, src4, count );
-  _add_4_single_precision_vectors( dst, dst,  src5, src6, src7, count );
-}
-
 } // namespace LOFAR::RTCP
 } // namespace LOFAR
 
diff --git a/RTCP/CNProc/src/PPF.cc b/RTCP/CNProc/src/PPF.cc
index 60054befef8f8711b8a99b303e09edc55e2f93b5..278c69dc1741ab7e6942b4901392e4578fdd5c97 100644
--- a/RTCP/CNProc/src/PPF.cc
+++ b/RTCP/CNProc/src/PPF.cc
@@ -88,8 +88,14 @@ template <> void PPF<i4complex>::initConstantTable()
   extern fcomplex _FIR_fp_table[16][16];
 
   static const float map[] = {
+/*
+ * TODO: Test whether this is better:
+ *
      0.5,  1.5,  2.5,  3.5,  4.5,  5.5,  6.5,  7.5, 
-    -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
+    -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5
+ */
+     0.0,  1.0,  2.0,  3.0,  4.0,  5.0,  6.0,  7.0, 
+    -7.0, -7.0, -6.0,  5.0, -4.0, -3.0, -2.0, -1.0
   };
 
   for (unsigned i = 0; i < 16; i ++)
diff --git a/RTCP/IONProc/src/Job.cc b/RTCP/IONProc/src/Job.cc
index ed34bf76b91e8fb02016a865caa20bb1c4d81aa4..f38d8888f0b7b746993821a69b01a3475eb335dd 100644
--- a/RTCP/IONProc/src/Job.cc
+++ b/RTCP/IONProc/src/Job.cc
@@ -244,7 +244,7 @@ void Job::StorageProcess::start()
 #endif
   );
 
-  itsSSHconnection = new SSHconnection(itsLogPrefix, itsHostname, commandLine, userName, sshKey, itsParset.stopTime());
+  itsSSHconnection = new SSHconnection(itsLogPrefix, itsHostname, commandLine, userName, sshKey, 0);
   itsSSHconnection->start();
 #else
 
@@ -302,7 +302,7 @@ void Job::StorageProcess::controlThread()
 {
   LOG_DEBUG_STR(itsLogPrefix << "[ControlThread] connecting...");
   std::string resource = getStorageControlDescription(itsParset.observationID(), itsRank);
-  PortBroker::ClientStream stream(itsHostname, storageBrokerPort(itsParset.observationID()), resource, itsParset.stopTime());
+  PortBroker::ClientStream stream(itsHostname, storageBrokerPort(itsParset.observationID()), resource, 0);
 
   // for now, we just send the parset and call it a day
   LOG_DEBUG_STR(itsLogPrefix << "[ControlThread] connected -- sending parset");
@@ -423,7 +423,7 @@ void Job::jobThread()
         canStart = false;
       }
 
-      // obey the stop time in the parset -- the first anotherRun() will broadcast it
+      // obey the stop time in the parset -- the first startBlock() will broadcast it
       if (!pause(itsParset.stopTime())) {
         LOG_ERROR_STR(itsLogPrefix << "Could not set observation stop time");
         canStart = false;
@@ -477,7 +477,7 @@ void Job::jobThread()
 
       // each node is expected to:
       // 1. agree() on starting, to allow the compute nodes to complain in preprocess()
-      // 2. call anotherRun() until the end of the observation to synchronise the
+      // 2. call startBlock() until the end of the observation to synchronise the
       //    stop time.
 
       if (itsHasPhaseOne || itsHasPhaseTwo || itsHasPhaseThree) {
@@ -494,8 +494,8 @@ void Job::jobThread()
       } else {
         if (agree(true)) { // we always agree on the fact that we can start
           // force pset 0 to broadcast itsIsRunning periodically
-	  while (anotherRun())
-	    ;
+	  while (startBlock())
+	    endBlock();
         }    
       }    
 
@@ -621,7 +621,7 @@ void Job::unconfigureCNs()
 }
 
 
-bool Job::anotherRun()
+bool Job::startBlock()
 {
   if (-- itsNrBlockTokens == 0) {
     itsNrBlockTokens = itsNrBlockTokensPerBroadcast;
@@ -637,21 +637,23 @@ bool Job::anotherRun()
     broadcast(itsStopTime);
   }
 
-  // move on to the next block
-  itsBlockNumber ++;
-
   bool done = !itsIsRunning;
 
   if (itsStopTime > 0.0) {
     // the end time of this block must still be within the observation
     double currentTime = itsParset.startTime() + (itsBlockNumber + 1) * itsParset.CNintegrationTime();
 
-    done = done || currentTime >= itsStopTime;
+    done = done || currentTime > itsStopTime;
   }
 
   return !done;
 }
 
+void Job::endBlock()
+{
+  itsBlockNumber++;
+}
+
 
 template <typename SAMPLE_TYPE> void Job::doObservation()
 {
@@ -700,13 +702,15 @@ template <typename SAMPLE_TYPE> void Job::doObservation()
     ControlPhase3Cores controlPhase3Cores(itsParset, itsPhaseThreeCNstreams, itsBlockNumber);
     controlPhase3Cores.start(); // start the thread
 
-    while (anotherRun()) {
+    while (startBlock()) {
       for (unsigned i = 0; i < outputSections.size(); i ++)
 	outputSections[i]->addIterations(1);
 
       controlPhase3Cores.addIterations(1);
 
       beamletBufferToComputeNode.process();
+
+      endBlock();
     }
 
     LOG_DEBUG_STR(itsLogPrefix << "doObservation processing input done");
diff --git a/RTCP/IONProc/src/Job.h b/RTCP/IONProc/src/Job.h
index d209e161d7da23f8af8c837442156b6631195f29..c72f291955c91ac7edc8fb0693908354de56a35c 100644
--- a/RTCP/IONProc/src/Job.h
+++ b/RTCP/IONProc/src/Job.h
@@ -80,7 +80,8 @@ class Job : public PLCRunnable
 
     void				 claimResources();
 
-    bool				 anotherRun();
+    bool				 startBlock(); // returns true if another block is to be processed
+    void				 endBlock();
 
     void				 jobThread();
     template <typename SAMPLE_TYPE> void doObservation();
diff --git a/RTCP/IONProc/src/OutputSection.cc b/RTCP/IONProc/src/OutputSection.cc
index ac157218ddb01db274a00fa6fbb3ba65c1380221..a5fc54bcda15eebf5d0e2faa72b47d383488c8d6 100644
--- a/RTCP/IONProc/src/OutputSection.cc
+++ b/RTCP/IONProc/src/OutputSection.cc
@@ -233,8 +233,8 @@ void OutputSection::notDroppingData(unsigned stream)
 void OutputSection::mainLoop()
 {
 #if defined HAVE_BGP_ION
-  //doNotRunOnCore0();
-  runOnCore0();
+  doNotRunOnCore0();
+  //runOnCore0();
   setPriority(2);
 #endif
 
diff --git a/RTCP/Interface/CMakeLists.txt b/RTCP/Interface/CMakeLists.txt
index 93c6b119ba8eb0ea13d3d27763f959b20293f5f9..2b21d242021b5022ae698ce1ad7c4ce81ddc1d38 100644
--- a/RTCP/Interface/CMakeLists.txt
+++ b/RTCP/Interface/CMakeLists.txt
@@ -10,6 +10,20 @@ if(USE_VALGRIND)
   add_definitions(-DUSE_VALGRIND)
 endif(USE_VALGRIND)  
 
+## ---------------------------------------------------------------------------
+## Enable BGP specific assembler.
+## Use the BGP assembler also for linking C/C++ programs.
+##
+## NOTE: Maybe this should be moved to the variants file. That requires that
+## CN and ION are no longer variants; we then need two compiler definitions:
+## BGPCN and BGPION, which is a cleaner solution anyway.
+## ---------------------------------------------------------------------------
+enable_language(ASM-BGP)
+if(LOFAR_COMPILER_SUITE STREQUAL "BGPCN")
+  set(CMAKE_C_LINK_EXECUTABLE ${CMAKE_ASM-BGP_LINK_EXECUTABLE})
+  set(CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_ASM-BGP_LINK_EXECUTABLE})
+endif(LOFAR_COMPILER_SUITE STREQUAL "BGPCN")
+
 add_subdirectory(include/Interface)
 add_subdirectory(src)
 add_subdirectory(test)
diff --git a/RTCP/Interface/include/Interface/BGPAsm.h b/RTCP/Interface/include/Interface/BGPAsm.h
new file mode 100644
index 0000000000000000000000000000000000000000..8a1c9a2faae1cd9fc318ae5aa670d8680cc26094
--- /dev/null
+++ b/RTCP/Interface/include/Interface/BGPAsm.h
@@ -0,0 +1,94 @@
+#ifndef LOFAR_INTERFACE_BGPASM_H
+#define LOFAR_INTERFACE_BGPASM_H
+
+#if defined HAVE_BGP
+
+#include <cstring>
+
+namespace LOFAR {
+namespace RTCP {
+
+extern "C" {
+
+// all float * must be aligned to 8 bytes
+
+void _add_2_single_precision_vectors(
+  /* r3 */ float *dst,
+  /* r4 */ const float *src1,
+  /* r5 */ const float *src2,
+  /* r6 */ unsigned count /* non-zero; multiple of 16 */
+);  
+
+void _add_3_single_precision_vectors(
+  /* r3 */ float *dst,
+  /* r4 */ const float *src1,
+  /* r5 */ const float *src2,
+  /* r6 */ const float *src3,
+  /* r7 */ unsigned count /* non-zero; multiple of 16 */
+);  
+
+void _add_4_single_precision_vectors(
+  /* r3 */ float *dst,
+  /* r4 */ const float *src1,
+  /* r5 */ const float *src2,
+  /* r6 */ const float *src3,
+  /* r7 */ const float *src4,
+  /* r8 */ unsigned count /* non-zero; multiple of 16 */
+);  
+
+void _add_5_single_precision_vectors(
+  /* r3 */ float *dst,
+  /* r4 */ const float *src1,
+  /* r5 */ const float *src2,
+  /* r6 */ const float *src3,
+  /* r7 */ const float *src4,
+  /* r8 */ const float *src5,
+  /* r9 */ unsigned count /* non-zero; multiple of 16 */
+);  
+
+void _add_6_single_precision_vectors(
+  /* r3 */ float *dst,
+  /* r4 */ const float *src1,
+  /* r5 */ const float *src2,
+  /* r6 */ const float *src3,
+  /* r7 */ const float *src4,
+  /* r8 */ const float *src5,
+  /* r9 */ const float *src6,
+  /* r10 */ unsigned count /* non-zero; multiple of 16 */
+);  
+
+} // extern "C"
+
+// Similar functions that do not need or have an ASM version
+
+// defined just to aid the use of macros
+static inline void _add_1_single_precision_vectors(
+  float *dst,
+  const float *src1,
+  unsigned count /* non-zero; multiple of 16 */
+) {
+  // nothing to add, so just copy the values
+  memcpy( dst, src1, count * sizeof(float) );
+}
+
+static inline void _add_7_single_precision_vectors(
+  float *dst,
+  const float *src1,
+  const float *src2,
+  const float *src3,
+  const float *src4,
+  const float *src5,
+  const float *src6,
+  const float *src7,
+  unsigned count /* non-zero; multiple of 16 */
+) {
+  _add_4_single_precision_vectors( dst, src1, src2, src3, src4, count );
+  _add_4_single_precision_vectors( dst, dst,  src5, src6, src7, count );
+}
+
+} // namespace LOFAR::RTCP
+} // namespace LOFAR
+
+#endif
+
+#endif
diff --git a/RTCP/Interface/include/Interface/CMakeLists.txt b/RTCP/Interface/include/Interface/CMakeLists.txt
index 655c0f5711b431f1af8ed204f7789392f93fdbe0..abec53f584b7e2d5d3159c0f5f945a672ce47b74 100644
--- a/RTCP/Interface/include/Interface/CMakeLists.txt
+++ b/RTCP/Interface/include/Interface/CMakeLists.txt
@@ -5,6 +5,7 @@ set(inst_HEADERS
   Allocator.h
   BeamCoordinates.h
   BeamFormedData.h
+  BGPAsm.h
   CN_Command.h
   CN_Mapping.h
   Stream.h
diff --git a/RTCP/Interface/include/Interface/CorrelatedData.h b/RTCP/Interface/include/Interface/CorrelatedData.h
index 381b629927ee9c8504de79b32bb637eb66839055..2c7df06ba211e11c776da6ec6bd04ddf190c2edb 100644
--- a/RTCP/Interface/include/Interface/CorrelatedData.h
+++ b/RTCP/Interface/include/Interface/CorrelatedData.h
@@ -7,6 +7,7 @@
 #include <Interface/Allocator.h>
 #include <Interface/Config.h>
 #include <Interface/StreamableData.h>
+#include <Interface/BGPAsm.h>
 #include <Interface/MultiDimArray.h>
 #include <Stream/Stream.h>
 
@@ -122,13 +123,31 @@ inline void CorrelatedData::writeData(Stream *str)
 }
 
 
-template <typename T> inline void addNrValidSamples(T *dst, const T *src, unsigned count)
+template <typename T> inline void addNrValidSamples(T * __restrict__ dst, const T * __restrict__ src, unsigned count)
 {
   for (unsigned i = 0; i < count; i ++)
     dst[i] += src[i];
 }
 
 
+template<> inline void addNrValidSamples<uint16_t>(uint16_t * __restrict__ dst, const uint16_t * __restrict__ src, unsigned count)
+{
+  addNrValidSamples<uint32_t>(reinterpret_cast<uint32_t*>(dst), reinterpret_cast<const uint32_t*>(src), count / 2);
+
+  if (count & 1)
+    dst[count - 1] += src[count - 1];
+}
+
+
+template<> inline void addNrValidSamples<uint8_t>(uint8_t * __restrict__ dst, const uint8_t * __restrict__ src, unsigned count)
+{
+  addNrValidSamples<uint16_t>(reinterpret_cast<uint16_t*>(dst), reinterpret_cast<const uint16_t*>(src), count / 2);
+
+  if (count & 1)
+    dst[count - 1] += src[count - 1];
+}
+
+
 inline IntegratableData &CorrelatedData::operator += (const IntegratableData &other_)
 {
   const CorrelatedData &other = static_cast<const CorrelatedData &>(other_);
@@ -138,9 +157,19 @@ inline IntegratableData &CorrelatedData::operator += (const IntegratableData &ot
     fcomplex	   *dst	 = visibilities.origin();
     const fcomplex *src	 = other.visibilities.origin();
     unsigned	   count = visibilities.num_elements();
+#ifdef HAVE_BGP
+    unsigned fastcopyfloats = (count * 2) & ~0xF;
+    unsigned remainder = count % 8;
 
+    for (unsigned i = 0; i < remainder; i ++)
+      dst[i] += src[i];
+
+    if (fastcopyfloats > 0)
+      _add_2_single_precision_vectors( reinterpret_cast<float*>(dst + remainder), reinterpret_cast<float*>(dst + remainder), reinterpret_cast<const float*>(src + remainder), fastcopyfloats );
+#else
     for (unsigned i = 0; i < count; i ++)
       dst[i] += src[i];
+#endif
   }
 
   // add nr. valid samples
diff --git a/RTCP/Interface/include/Interface/Parset.h b/RTCP/Interface/include/Interface/Parset.h
index 8d66e9f1cd4624124112a8c332405263d27ee900..682f091091f0b02f0b6fa10109586924f0425ab4 100644
--- a/RTCP/Interface/include/Interface/Parset.h
+++ b/RTCP/Interface/include/Interface/Parset.h
@@ -92,6 +92,10 @@ class Parset: public ParameterSet
     unsigned			observationID() const;
     double			startTime() const;
     double			stopTime() const;
+
+    unsigned    nrCorrelatedBlocks() const;
+    unsigned    nrBeamFormedBlocks() const;
+
     unsigned			nrStations() const;
     unsigned			nrTabStations() const;
     unsigned			nrMergedStations() const;
@@ -595,6 +599,16 @@ inline double Parset::stopTime() const
   return getTime("Observation.stopTime");
 }
 
+inline unsigned Parset::nrCorrelatedBlocks() const
+{
+  return static_cast<unsigned>(floor( (stopTime() - startTime()) / IONintegrationTime()));
+}
+
+inline unsigned Parset::nrBeamFormedBlocks() const
+{
+  return static_cast<unsigned>(floor( (stopTime() - startTime()) / CNintegrationTime()));
+}
+
 inline string Parset::stationName(int index) const
 {
   return allStationNames()[index];
diff --git a/RTCP/Interface/src/BGPAsm.S b/RTCP/Interface/src/BGPAsm.S
new file mode 100644
index 0000000000000000000000000000000000000000..db7a73cbd830a19320174eabf1b63954fc07cdfe
--- /dev/null
+++ b/RTCP/Interface/src/BGPAsm.S
@@ -0,0 +1,762 @@
+#if defined HAVE_BGP
+
+.global	_add_2_single_precision_vectors
+_add_2_single_precision_vectors:
+
+	li	 0,-16
+	stfpdux  14,1,0
+	stfpdux  15,1,0
+
+	srwi	 6,6,4
+	li	 11,8
+	subi	 6,6,1
+	mtctr	 6
+
+	cmpwi	 0,6,0
+	lfpsx	 0,0,4
+	lfpsx	 1,0,5
+	lfpsux	 2,4,11
+	lfpsux	 3,5,11
+	lfpsux	 4,4,11
+	lfpsux	 5,5,11
+	lfpsux	 6,4,11
+	lfpsux	 7,5,11
+	lfpsux	 8,4,11
+	lfpsux	 9,5,11
+	lfpsux	 10,4,11
+	lfpsux	 11,5,11
+	fpadd	 0,0,1
+	lfpsux	 12,4,11
+	lfpsux	 13,5,11
+	fpadd	 2,2,3
+	lfpsux	 14,4,11
+	lfpsux	 15,5,11
+	stfpsx	 0,0,3
+	fpadd	 4,4,5
+	beq-	 0,1f
+
+0:	lfpsux	 0,4,11
+	lfpsux	 1,5,11
+	stfpsux	 2,3,11
+	fpadd	 6,6,7
+	lfpsux	 2,4,11
+	lfpsux	 3,5,11
+	stfpsux	 4,3,11
+	fpadd	 8,8,9
+	lfpsux	 4,4,11
+	lfpsux	 5,5,11
+	stfpsux	 6,3,11
+	fpadd	 10,10,11
+	lfpsux	 6,4,11
+	lfpsux	 7,5,11
+	stfpsux	 8,3,11
+	fpadd	 12,12,13
+	lfpsux	 8,4,11
+	lfpsux	 9,5,11
+	stfpsux	 10,3,11
+	fpadd	 14,14,15
+	lfpsux	 10,4,11
+	lfpsux	 11,5,11
+	stfpsux	 12,3,11
+	fpadd	 0,0,1
+	lfpsux	 12,4,11
+	lfpsux	 13,5,11
+	stfpsux	 14,3,11
+	fpadd	 2,2,3
+	lfpsux	 14,4,11
+	lfpsux	 15,5,11
+	stfpsux	 0,3,11
+	fpadd	 4,4,5
+	bdnz	 0b
+
+1:	stfpsux	 2,3,11
+	fpadd	 6,6,7
+	stfpsux	 4,3,11
+	fpadd	 8,8,9
+	stfpsux	 6,3,11
+	fpadd	 10,10,11
+	stfpsux	 8,3,11
+	fpadd	 12,12,13
+	stfpsux	 10,3,11
+	fpadd	 14,14,15
+	stfpsux	 12,3,11
+	stfpsux	 14,3,11
+
+	li	 0,16		# restore call-saved registers
+	lfpdx	 15,0,1
+	lfpdux	 14,1,0
+	addi	 1,1,16
+
+	blr
+
+
+.global	_add_3_single_precision_vectors
+_add_3_single_precision_vectors:
+
+	li	 0,-16
+	stfpdux  14,1,0
+	stfpdux  15,1,0
+	stfpdux  16,1,0
+	stfpdux  17,1,0
+	stfpdux  18,1,0
+	stfpdux  19,1,0
+	stfpdux  20,1,0
+	stfpdux  21,1,0
+	stfpdux  22,1,0
+	stfpdux  23,1,0
+
+	srwi	 7,7,4
+	li	 11,8
+	subi	 7,7,1
+	mtctr	 7
+
+	cmpwi	 0,7,0
+	lfpsx	 0,0,4
+	lfpsx	 1,0,5
+	lfpsx	 2,0,6
+	lfpsux	 3,4,11
+	lfpsux	 4,5,11
+	lfpsux	 5,6,11
+	lfpsux	 6,4,11
+	lfpsux	 7,5,11
+	lfpsux	 8,6,11
+	lfpsux	 9,4,11
+	lfpsux	 10,5,11
+	lfpsux	 11,6,11
+	lfpsux	 12,4,11
+	lfpsux	 13,5,11
+	lfpsux	 14,6,11
+	lfpsux	 15,4,11
+	lfpsux	 16,5,11
+	fpadd	 0,0,1
+	lfpsux	 17,6,11
+	lfpsux	 18,4,11
+	lfpsux	 19,5,11
+	fpadd	 3,3,4
+	lfpsux	 20,6,11
+	fpadd	 0,0,2
+	lfpsux	 21,4,11
+	lfpsux	 22,5,11
+	fpadd	 6,6,7
+	lfpsux	 23,6,11
+	fpadd	 3,3,5
+	stfpsx	 0,0,3
+	beq-	 0,1f
+	li	 10,32
+
+0:	lfpsux	 0,4,11
+	lfpsux	 1,5,11
+	dcbt	 4,10
+	fpadd	 9,9,10
+	lfpsux	 2,6,11
+	fpadd	 6,6,8
+	stfpsux	 3,3,11
+	lfpsux	 3,4,11
+	lfpsux	 4,5,11
+	fpadd	 12,12,13
+	lfpsux	 5,6,11
+	fpadd	 9,9,11
+	stfpsux	 6,3,11
+	lfpsux	 6,4,11
+	lfpsux	 7,5,11
+	fpadd	 15,15,16
+	lfpsux	 8,6,11
+	fpadd	 12,12,14
+	stfpsux	 9,3,11
+	lfpsux	 9,4,11
+	lfpsux	 10,5,11
+	fpadd	 18,18,19
+	lfpsux	 11,6,11
+	fpadd	 15,15,17
+	stfpsux	 12,3,11
+	lfpsux	 12,4,11
+	lfpsux	 13,5,11
+	fpadd	 21,21,22
+	lfpsux	 14,6,11
+	fpadd	 18,18,20
+	stfpsux	 15,3,11
+	lfpsux	 15,4,11
+	lfpsux	 16,5,11
+	fpadd	 0,0,1
+	lfpsux	 17,6,11
+	fpadd	 21,21,23
+	stfpsux	 18,3,11
+	lfpsux	 18,4,11
+	lfpsux	 19,5,11
+	fpadd	 3,3,4
+	lfpsux	 20,6,11
+	fpadd	 0,0,2
+	stfpsux	 21,3,11
+	lfpsux	 21,4,11
+	lfpsux	 22,5,11
+	fpadd	 6,6,7
+	lfpsux	 23,6,11
+	fpadd	 3,3,5
+	stfpsux	 0,3,11
+	bdnz	 0b
+
+1:	fpadd	 9,9,10
+	fpadd	 6,6,8
+	stfpsux	 3,3,11
+	fpadd	 12,12,13
+	fpadd	 9,9,11
+	stfpsux	 6,3,11
+	fpadd	 15,15,16
+	fpadd	 12,12,14
+	stfpsux	 9,3,11
+	fpadd	 18,18,19
+	fpadd	 15,15,17
+	stfpsux	 12,3,11
+	fpadd	 21,21,22
+	fpadd	 18,18,20
+	stfpsux	 15,3,11
+	fpadd	 21,21,23
+	stfpsux	 18,3,11
+	stfpsux	 21,3,11
+
+	li	 0,16		# restore call-saved registers
+	lfpdx	 23,0,1
+	lfpdux	 22,1,0
+	lfpdux	 21,1,0
+	lfpdux	 20,1,0
+	lfpdux	 19,1,0
+	lfpdux	 18,1,0
+	lfpdux	 17,1,0
+	lfpdux	 16,1,0
+	lfpdux	 15,1,0
+	lfpdux	 14,1,0
+	addi	 1,1,16
+
+	blr
+
+
+.global	_add_4_single_precision_vectors
+_add_4_single_precision_vectors:
+
+	li	 0,-16
+	stfpdux  14,1,0
+	stfpdux  15,1,0
+	stfpdux  16,1,0
+	stfpdux  17,1,0
+	stfpdux  18,1,0
+	stfpdux  19,1,0
+	stfpdux  20,1,0
+	stfpdux  21,1,0
+	stfpdux  22,1,0
+	stfpdux  23,1,0
+	stfpdux  24,1,0
+	stfpdux  25,1,0
+	stfpdux  26,1,0
+	stfpdux  27,1,0
+	stfpdux  28,1,0
+	stfpdux  29,1,0
+	stfpdux  30,1,0
+	stfpdux  31,1,0
+
+	srwi	 8,8,4
+	li	 11,8
+	subi	 8,8,1
+	mtctr	 8
+
+	cmpwi	 0,8,0
+	lfpsx	 0,0,4
+	lfpsx	 1,0,5
+	lfpsx	 2,0,6
+	lfpsx	 3,0,7
+	lfpsux	 4,4,11
+	lfpsux	 5,5,11
+	lfpsux	 6,6,11
+	lfpsux	 7,7,11
+	lfpsux	 8,4,11
+	lfpsux	 9,5,11
+	lfpsux	 10,6,11
+	lfpsux	 11,7,11
+	lfpsux	 12,4,11
+	lfpsux	 13,5,11
+	lfpsux	 14,6,11
+	lfpsux	 15,7,11
+	lfpsux	 16,4,11
+	lfpsux	 17,5,11
+	lfpsux	 18,6,11
+	lfpsux	 19,7,11
+	lfpsux	 20,4,11
+	lfpsux	 21,5,11
+	fpadd	 0,0,1
+	fpadd	 2,2,3
+	lfpsux	 22,6,11
+	lfpsux	 23,7,11
+	lfpsux	 24,4,11
+	lfpsux	 25,5,11
+	fpadd	 4,4,5
+	fpadd	 6,6,7
+	lfpsux	 26,6,11
+	lfpsux	 27,7,11
+	fpadd	 0,0,2
+	lfpsux	 28,4,11
+	lfpsux	 29,5,11
+	fpadd	 8,8,9
+	fpadd	 10,10,11
+	lfpsux	 30,6,11
+	lfpsux	 31,7,11
+
+	stfpsx	 0,0,3
+	fpadd	 4,4,6
+	beq-	 0,1f
+
+0:	lfpsux	 0,4,11
+	lfpsux	 1,5,11
+	fpadd	 12,12,13
+	fpadd	 14,14,15
+	lfpsux	 2,6,11
+	lfpsux	 3,7,11
+
+	stfpsux	 4,3,11
+	fpadd	 8,8,10
+
+	lfpsux	 4,4,11
+	lfpsux	 5,5,11
+	fpadd	 16,16,17
+	fpadd	 18,18,19
+	lfpsux	 6,6,11
+	lfpsux	 7,7,11
+
+	stfpsux	 8,3,11
+	fpadd	 12,12,14
+
+	lfpsux	 8,4,11
+	lfpsux	 9,5,11
+	fpadd	 20,20,21
+	fpadd	 22,22,23
+	lfpsux	 10,6,11
+	lfpsux	 11,7,11
+
+	stfpsux	 12,3,11
+	fpadd	 16,16,18
+
+	lfpsux	 12,4,11
+	lfpsux	 13,5,11
+	fpadd	 24,24,25
+	fpadd	 26,26,27
+	lfpsux	 14,6,11
+	lfpsux	 15,7,11
+
+	stfpsux	 16,3,11
+	fpadd	 20,20,22
+
+	lfpsux	 16,4,11
+	lfpsux	 17,5,11
+	fpadd	 28,28,29
+	fpadd	 30,30,31
+	lfpsux	 18,6,11
+	lfpsux	 19,7,11
+
+	stfpsux	 20,3,11
+	fpadd	 24,24,26
+
+	lfpsux	 20,4,11
+	lfpsux	 21,5,11
+	fpadd	 0,0,1
+	fpadd	 2,2,3
+	lfpsux	 22,6,11
+	lfpsux	 23,7,11
+
+	stfpsux	 24,3,11
+	fpadd	 28,28,30
+
+	lfpsux	 24,4,11
+	lfpsux	 25,5,11
+	fpadd	 4,4,5
+	fpadd	 6,6,7
+	lfpsux	 26,6,11
+	lfpsux	 27,7,11
+
+	stfpsux	 28,3,11
+	fpadd	 0,0,2
+
+	lfpsux	 28,4,11
+	lfpsux	 29,5,11
+	fpadd	 8,8,9
+	fpadd	 10,10,11
+	lfpsux	 30,6,11
+	lfpsux	 31,7,11
+
+	stfpsux	 0,3,11
+	fpadd	 4,4,6
+
+	bdnz	 0b
+
+1:	fpadd	 12,12,13
+	fpadd	 14,14,15
+
+	stfpsux	 4,3,11
+	fpadd	 8,8,10
+
+	fpadd	 16,16,17
+	fpadd	 18,18,19
+
+	stfpsux	 8,3,11
+	fpadd	 12,12,14
+
+	fpadd	 20,20,21
+	fpadd	 22,22,23
+
+	stfpsux	 12,3,11
+	fpadd	 16,16,18
+
+	fpadd	 24,24,25
+	fpadd	 26,26,27
+
+	stfpsux	 16,3,11
+	fpadd	 20,20,22
+
+	lfpsux	 16,4,11
+	lfpsux	 17,5,11
+	fpadd	 28,28,29
+	fpadd	 30,30,31
+	stfpsux	 20,3,11
+	fpadd	 24,24,26
+	stfpsux	 24,3,11
+	fpadd	 28,28,30
+	stfpsux	 28,3,11
+
+	li	 0,16		# restore call-saved registers
+	lfpdx	 31,0,1
+	lfpdux	 30,1,0
+	lfpdux	 29,1,0
+	lfpdux	 28,1,0
+	lfpdux	 27,1,0
+	lfpdux	 26,1,0
+	lfpdux	 25,1,0
+	lfpdux	 24,1,0
+	lfpdux	 23,1,0
+	lfpdux	 22,1,0
+	lfpdux	 21,1,0
+	lfpdux	 20,1,0
+	lfpdux	 19,1,0
+	lfpdux	 18,1,0
+	lfpdux	 17,1,0
+	lfpdux	 16,1,0
+	lfpdux	 15,1,0
+	lfpdux	 14,1,0
+	addi	 1,1,16
+
+	blr
+
+
+.global	_add_5_single_precision_vectors
+_add_5_single_precision_vectors:
+
+	li	 0,-16
+	stfpdux  14,1,0
+	stfpdux  15,1,0
+	stfpdux  16,1,0
+	stfpdux  17,1,0
+	stfpdux  18,1,0
+	stfpdux  19,1,0
+	stfpdux  24,1,0
+	stfpdux  25,1,0
+	stfpdux  26,1,0
+	stfpdux  27,1,0
+	stfpdux  28,1,0
+	stfpdux  29,1,0
+
+	srwi	 9,9,3
+	li	 11,8
+	subi	 9,9,1
+	mtctr	 9
+	subi	 3,3,8
+
+	cmpwi	 0,9,0
+
+	lfpsx	 0,0,4
+	lfpsx	 1,0,5
+	lfpsx	 2,0,6
+	lfpsx	 3,0,7
+	lfpsx	 4,0,8
+
+	lfpsux	 5,4,11
+	lfpsux	 6,5,11
+	lfpsux	 7,6,11
+	lfpsux	 8,7,11
+	lfpsux	 9,8,11
+
+	lfpsux	 10,4,11
+	lfpsux	 11,5,11
+	lfpsux	 12,6,11
+	lfpsux	 13,7,11
+	lfpsux	 14,8,11
+	fpadd	 24,0,1
+	fpadd	 25,2,3
+
+	lfpsux	 15,4,11
+	lfpsux	 16,5,11
+	lfpsux	 17,6,11
+	fpadd	 24,24,25
+	lfpsux	 18,7,11
+	lfpsux	 19,8,11
+	fpadd	 27,5,6
+	fpadd	 28,7,8
+
+	beq-	 0,1f
+	li	 10,48
+
+0:
+	dcbt	 4,10
+	lfpsux	 0,4,11
+	fpadd	 24,24,4
+	lfpsux	 1,5,11
+	lfpsux	 2,6,11
+	fpadd	 27,27,28
+	lfpsux	 3,7,11
+	lfpsux	 4,8,11
+	stfpsux	 24,3,11
+	fpadd	 24,10,11
+	dcbt	 5,10
+	fpadd	 25,12,13
+
+	lfpsux	 5,4,11
+	fpadd	 27,27,9
+	lfpsux	 6,5,11
+	lfpsux	 7,6,11
+	fpadd	 24,24,25
+	lfpsux	 8,7,11
+	lfpsux	 9,8,11
+	stfpsux	 27,3,11
+	fpadd	 27,15,16
+	dcbt	 6,10
+	fpadd	 28,17,18
+
+	lfpsux	 10,4,11
+	fpadd	 24,24,14
+	lfpsux	 11,5,11
+	lfpsux	 12,6,11
+	fpadd	 27,27,28
+	lfpsux	 13,7,11
+	lfpsux	 14,8,11
+	stfpsux	 24,3,11
+	fpadd	 24,0,1
+	dcbt	 7,10
+	fpadd	 25,2,3
+
+	lfpsux	 15,4,11
+	fpadd	 27,27,19
+	lfpsux	 16,5,11
+	lfpsux	 17,6,11
+	fpadd	 24,24,25
+	dcbt	 8,10
+	lfpsux	 18,7,11
+	lfpsux	 19,8,11
+	stfpsux	 27,3,11
+	fpadd	 27,5,6
+	fpadd	 28,7,8
+
+	bdnz	 0b
+
+1:
+	fpadd	 24,24,4
+	fpadd	 27,27,28
+	stfpsux	 24,3,11
+	fpadd	 24,10,11
+	fpadd	 25,12,13
+
+	fpadd	 27,27,9
+	fpadd	 24,24,25
+	stfpsux	 27,3,11
+	fpadd	 27,15,16
+	fpadd	 28,17,18
+
+	fpadd	 24,24,14
+	fpadd	 27,27,28
+	stfpsux	 24,3,11
+
+	fpadd	 27,27,19
+	stfpsux	 27,3,11
+
+	li	 0,16		# restore call-saved registers
+	lfpdx	 29,0,1
+	lfpdux	 28,1,0
+	lfpdux	 27,1,0
+	lfpdux	 26,1,0
+	lfpdux	 25,1,0
+	lfpdux	 24,1,0
+	lfpdux	 19,1,0
+	lfpdux	 18,1,0
+	lfpdux	 17,1,0
+	lfpdux	 16,1,0
+	lfpdux	 15,1,0
+	lfpdux	 14,1,0
+	addi	 1,1,16
+	blr
+
+
+.global	_add_6_single_precision_vectors
+_add_6_single_precision_vectors:
+
+	li	 0,-16
+	stfpdux  14,1,0
+	stfpdux  15,1,0
+	stfpdux  16,1,0
+	stfpdux  17,1,0
+	stfpdux  18,1,0
+	stfpdux  19,1,0
+	stfpdux  20,1,0
+	stfpdux  21,1,0
+	stfpdux  22,1,0
+	stfpdux  23,1,0
+	stfpdux  24,1,0
+	stfpdux  25,1,0
+	stfpdux  26,1,0
+	stfpdux  27,1,0
+	stfpdux  28,1,0
+	stfpdux  29,1,0
+
+	srwi	 10,10,3
+	li	 11,8
+	subi	 10,10,1
+	mtctr	 10
+	subi	 3,3,8
+
+	cmpwi	 0,10,0
+
+	lfpsx	 0,0,4
+	lfpsx	 1,0,5
+	lfpsx	 2,0,6
+	lfpsx	 3,0,7
+	lfpsx	 4,0,8
+	lfpsx	 5,0,9
+
+	lfpsux	 6,4,11
+	lfpsux	 7,5,11
+	lfpsux	 8,6,11
+	lfpsux	 9,7,11
+	lfpsux	 10,8,11
+	lfpsux	 11,9,11
+
+	lfpsux	 12,4,11
+	lfpsux	 13,5,11
+	lfpsux	 14,6,11
+	lfpsux	 15,7,11
+	lfpsux	 16,8,11
+	lfpsux	 17,9,11
+	fpadd	 24,0,1
+	fpadd	 25,2,3
+
+	lfpsux	 18,4,11
+	lfpsux	 19,5,11
+	lfpsux	 20,6,11
+	fpadd	 26,4,5
+	fpadd	 24,24,25
+	lfpsux	 21,7,11
+	lfpsux	 22,8,11
+	lfpsux	 23,9,11
+	fpadd	 27,6,7
+	fpadd	 28,8,9
+
+	beq-	 0,1f
+	li	 10,48
+
+0:
+	dcbt	 4,10
+	lfpsux	 0,4,11
+	fpadd	 24,24,26
+	lfpsux	 1,5,11
+	lfpsux	 2,6,11
+	fpadd	 29,10,11
+	fpadd	 27,27,28
+	lfpsux	 3,7,11
+	lfpsux	 4,8,11
+	lfpsux	 5,9,11
+	dcbt	 5,10
+	stfpsux	 24,3,11
+	fpadd	 24,12,13
+	fpadd	 25,14,15
+
+	lfpsux	 6,4,11
+	fpadd	 27,27,29
+	lfpsux	 7,5,11
+	lfpsux	 8,6,11
+	dcbt	 6,10
+	fpadd	 26,16,17
+	fpadd	 24,24,25
+	lfpsux	 9,7,11
+	lfpsux	 10,8,11
+	lfpsux	 11,9,11
+	stfpsux	 27,3,11
+	fpadd	 27,18,19
+	fpadd	 28,20,21
+
+	dcbt	 7,10
+	lfpsux	 12,4,11
+	fpadd	 24,24,26
+	lfpsux	 13,5,11
+	lfpsux	 14,6,11
+	fpadd	 29,22,23
+	fpadd	 27,27,28
+	lfpsux	 15,7,11
+	lfpsux	 16,8,11
+	lfpsux	 17,9,11
+	dcbt	 8,10
+	stfpsux	 24,3,11
+	fpadd	 24,0,1
+	fpadd	 25,2,3
+
+	lfpsux	 18,4,11
+	fpadd	 27,27,29
+	lfpsux	 19,5,11
+	lfpsux	 20,6,11
+	dcbt	 9,10
+	fpadd	 26,4,5
+	fpadd	 24,24,25
+	lfpsux	 21,7,11
+	lfpsux	 22,8,11
+	lfpsux	 23,9,11
+	stfpsux	 27,3,11
+	fpadd	 27,6,7
+	fpadd	 28,8,9
+
+	bdnz	 0b
+
+1:
+	fpadd	 24,24,26
+	fpadd	 29,10,11
+	fpadd	 27,27,28
+	stfpsux	 24,3,11
+	fpadd	 24,12,13
+	fpadd	 25,14,15
+
+	fpadd	 27,27,29
+	fpadd	 26,16,17
+	fpadd	 24,24,25
+	stfpsux	 27,3,11
+	fpadd	 27,18,19
+	fpadd	 28,20,21
+
+	fpadd	 24,24,26
+	fpadd	 29,22,23
+	fpadd	 27,27,28
+	stfpsux	 24,3,11
+
+	fpadd	 27,27,29
+	stfpsux	 27,3,11
+
+	li	 0,16		# restore call-saved registers
+	lfpdx	 29,0,1
+	lfpdux	 28,1,0
+	lfpdux	 27,1,0
+	lfpdux	 26,1,0
+	lfpdux	 25,1,0
+	lfpdux	 24,1,0
+	lfpdux	 23,1,0
+	lfpdux	 22,1,0
+	lfpdux	 21,1,0
+	lfpdux	 20,1,0
+	lfpdux	 19,1,0
+	lfpdux	 18,1,0
+	lfpdux	 17,1,0
+	lfpdux	 16,1,0
+	lfpdux	 15,1,0
+	lfpdux	 14,1,0
+	addi	 1,1,16
+	blr
+
+#endif
diff --git a/RTCP/Interface/src/CMakeLists.txt b/RTCP/Interface/src/CMakeLists.txt
index cb2cf20ff67b02c8d0c6f0ff2ad075aa54795708..40f0e69fd95c1b36ba982509c03308941ba063e5 100644
--- a/RTCP/Interface/src/CMakeLists.txt
+++ b/RTCP/Interface/src/CMakeLists.txt
@@ -2,7 +2,7 @@
 
 include(LofarPackageVersion)
 
-lofar_add_library(interface
+set(interface_LIB_SRCS
   Package__Version.cc
   Allocator.cc
   BeamCoordinates.cc
@@ -12,4 +12,16 @@ lofar_add_library(interface
   Parset.cc
   RSPTimeStamp.cc)
 
+# Maybe we shoud use LOFAR_COMPILER_SUITE, because ASM-BGP_COMPILER_WORKS
+# is not reliable: i.e.
+#if(LOFAR_COMPILER_SUITE STREQUAL BGPCN)
+if(CMAKE_ASM-BGP_COMPILER_WORKS)
+  list(APPEND interface_LIB_SRCS
+    BGPAsm.S)
+endif(CMAKE_ASM-BGP_COMPILER_WORKS)
+#endif(LOFAR_COMPILER_SUITE STREQUAL BGPCN)
+
+lofar_add_library(interface ${interface_LIB_SRCS})
+
 lofar_add_bin_program(versioninterface versioninterface.cc)
+
diff --git a/RTCP/Interface/test/CMakeLists.txt b/RTCP/Interface/test/CMakeLists.txt
index 391e1a16d323a55db0ecee4751f9b3fa7735eef0..53e188beba7a6064ed65110ddc9f91027b7696d2 100644
--- a/RTCP/Interface/test/CMakeLists.txt
+++ b/RTCP/Interface/test/CMakeLists.txt
@@ -2,5 +2,6 @@
 
 include(LofarCTest)
 
+lofar_add_test(tCorrelatedData tCorrelatedData.cc)
 lofar_add_test(tSparseSet tSparseSet.cc)
 lofar_add_test(tRSPTimeStamp tRSPTimeStamp.cc)
diff --git a/RTCP/Interface/test/tCorrelatedData.cc b/RTCP/Interface/test/tCorrelatedData.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ded003c78f00b668efc71043d6c96214a9ef5a0a
--- /dev/null
+++ b/RTCP/Interface/test/tCorrelatedData.cc
@@ -0,0 +1,86 @@
+#include <lofar_config.h>
+
+#include <Common/Timer.h>
+
+#include <Interface/CorrelatedData.h>
+
+#include <cassert>
+#include <iostream>
+
+
+using namespace LOFAR;
+using namespace LOFAR::RTCP;
+using namespace std;
+
+int main(void)
+{
+  NSTimer timer("addition", true, false);
+
+  unsigned nr_maxsamples[] = { 255, 65535, 1000000 }; // encode using 1, 2, 4 bytes, respectively
+  unsigned nr_channels[]  = { 1, 16, 64, 256 };
+  unsigned nr_stations[] = { 1, 2, 3, 4, 5, 24 };
+
+  for( unsigned s = 0; s < sizeof nr_maxsamples / sizeof nr_maxsamples[0]; ++s )
+    for( unsigned ch = 0; ch < sizeof nr_channels / sizeof nr_channels[0]; ++ch )
+      for( unsigned st = 0; st < sizeof nr_stations / sizeof nr_stations[0]; ++st ) {
+        unsigned ns = nr_maxsamples[s];
+        unsigned nch = nr_channels[ch];
+        unsigned nst = nr_stations[st];
+        unsigned nbl = nst * (nst + 1) / 2;
+
+        cout << nst << " stations (= " << nbl << " baselines), " << nch << " channels, " << ns << " samples" << endl;
+
+        // we will test whether data1 + data2 = data3
+        CorrelatedData data1(nst, nch, ns), data2(nst, nch, ns), data3(nst, nch, ns);
+
+        // initialise data
+        cout << "init" << endl;
+        unsigned n = 0;
+
+        for( unsigned i = 0; i < nbl; i++ ) {
+          for( unsigned j = 0; j < nch; j++ ) {
+            n++;
+            
+            data1.setNrValidSamples(i, j, (n*1) % (ns/2));
+            data2.setNrValidSamples(i, j, (n*2) % (ns/2));
+            data3.setNrValidSamples(i, j, ((n*1) % (ns/2)) + ((n*2) % (ns/2)));
+
+            for( unsigned k = 0; k < 2; k++ ) {
+              for( unsigned l = 0; l < 2; l++ ) {
+                data1.visibilities[i][j][k][l] =    1 * ((i + j) * 10 + k * 2 + l);
+                data2.visibilities[i][j][k][l] = 1000 * ((i + j) * 10 + k * 2 + l);
+                data3.visibilities[i][j][k][l] = 1001 * ((i + j) * 10 + k * 2 + l);
+              }
+            }
+          }
+        }
+
+        // add
+        cout << "add" << endl;
+        timer.start();
+        data1 += data2;
+        timer.stop();
+
+        // verify
+        cout << "verify" << endl;
+        for( unsigned i = 0; i < nbl; i++ ) {
+          for( unsigned j = 0; j < nch; j++ ) {
+            //cout << data1.nrValidSamples(i, j) << " == " << data3.nrValidSamples(i, j) << endl;
+            assert(data1.nrValidSamples(i, j) == data3.nrValidSamples(i, j));
+
+            for( unsigned k = 0; k < 2; k++ ) {
+              for( unsigned l = 0; l < 2; l++ ) {
+                assert(
+                  data1.visibilities[i][j][k][l] ==
+                  data3.visibilities[i][j][k][l]
+                  );
+              }
+            }
+          }
+        }
+
+        cout << "ok" << endl;
+      }
+
+  return 0;
+}
diff --git a/RTCP/Run/src/LOFAR/Parset.py b/RTCP/Run/src/LOFAR/Parset.py
index 59c6910399f470f972980283123578211a63414a..e1e28958bbd60b96836726bdf473e50b19a71ec8 100644
--- a/RTCP/Run/src/LOFAR/Parset.py
+++ b/RTCP/Run/src/LOFAR/Parset.py
@@ -819,7 +819,6 @@ class Parset(util.Parset.Parset):
         assert self.getNrOutputs() > 0, "No data output selected."
         assert len(self.stations) > 0, "No stations selected."
         assert len(self.getInt32Vector("Observation.subbandList")) > 0, "No subbands selected."
-        assert len(self.getInt32Vector("Observation.subbandList")) <= NRRSPBOARDS*NRBOARBEAMLETS, "More than %d subbands selected." % (NRRSPBOARDS*NRBOARBEAMLETS,)
 
         # phase 2 and 3 are either disjunct or equal
         assert self.phaseThreePsetDisjunct() or self.phaseTwoThreePsetEqual(), "Phase 2 and 3 should use either disjunct or the same psets."
diff --git a/RTCP/Run/src/OLAP.parset b/RTCP/Run/src/OLAP.parset
index 75cd4622476d0abb8928d1c6a088ce1856dd3243..7e5e4860669831978de29881c93a57723180ad5a 100644
--- a/RTCP/Run/src/OLAP.parset
+++ b/RTCP/Run/src/OLAP.parset
@@ -37,100 +37,100 @@ PIC.Core.CS007HBA0.clockCorrectionTime = 7.913020e-06
 PIC.Core.CS007HBA1.clockCorrectionTime = 7.913260e-06
 PIC.Core.CS007HBA.clockCorrectionTime  = 7.913140e-06 
 
+PIC.Core.CS001LBA.clockCorrectionTime  = 4.759754e-06
+PIC.Core.CS001HBA0.clockCorrectionTime = 4.759754e-06
+PIC.Core.CS001HBA1.clockCorrectionTime = 4.759754e-06
+PIC.Core.CS001HBA.clockCorrectionTime  = 4.759754e-06
+
+PIC.Core.CS011LBA.clockCorrectionTime  = 7.55795e-06
+PIC.Core.CS011HBA0.clockCorrectionTime = 7.55795e-06
+PIC.Core.CS011HBA1.clockCorrectionTime = 7.55795e-06
+PIC.Core.CS011HBA.clockCorrectionTime  = 7.55795e-06
+
+PIC.Core.CS013LBA.clockCorrectionTime  = 1.639118e-05
+PIC.Core.CS013HBA0.clockCorrectionTime = 1.639118e-05
+PIC.Core.CS013HBA1.clockCorrectionTime = 1.639118e-05
+PIC.Core.CS013HBA.clockCorrectionTime  = 1.639118e-05
+
+PIC.Core.CS017LBA.clockCorrectionTime  = 1.541095e-05
+PIC.Core.CS017HBA0.clockCorrectionTime = 1.541095e-05
+PIC.Core.CS017HBA1.clockCorrectionTime = 1.541095e-05
+PIC.Core.CS017HBA.clockCorrectionTime  = 1.541095e-05
+
+PIC.Core.CS021LBA.clockCorrectionTime  = 6.04963e-06
+PIC.Core.CS021HBA0.clockCorrectionTime = 6.04963e-06
+PIC.Core.CS021HBA1.clockCorrectionTime = 6.04963e-06
+PIC.Core.CS021HBA.clockCorrectionTime  = 6.04963e-06
+
+PIC.Core.CS024LBA.clockCorrectionTime  = 4.65818e-06
+PIC.Core.CS024HBA0.clockCorrectionTime = 4.65818e-06
+PIC.Core.CS024HBA1.clockCorrectionTime = 4.65818e-06
+PIC.Core.CS024HBA.clockCorrectionTime  = 4.65818e-06
+
+PIC.Core.CS026LBA.clockCorrectionTime  = 1.619876e-05
+PIC.Core.CS026HBA0.clockCorrectionTime = 1.619876e-05
+PIC.Core.CS026HBA1.clockCorrectionTime = 1.619876e-05
+PIC.Core.CS026HBA.clockCorrectionTime  = 1.619876e-05
+
+PIC.Core.CS028LBA.clockCorrectionTime  = 1.6962571e-05
+PIC.Core.CS028HBA0.clockCorrectionTime = 1.6962571e-05
+PIC.Core.CS028HBA1.clockCorrectionTime = 1.6962571e-05
+PIC.Core.CS028HBA.clockCorrectionTime  = 1.6962571e-05
+
+PIC.Core.CS030LBA.clockCorrectionTime  = 9.7160576e-06
+PIC.Core.CS030HBA0.clockCorrectionTime = 9.7160576e-06
+PIC.Core.CS030HBA1.clockCorrectionTime = 9.7160576e-06
+PIC.Core.CS030HBA.clockCorrectionTime  = 9.7160576e-06
+
+PIC.Core.CS031LBA.clockCorrectionTime  = 6.370090e-06
+PIC.Core.CS031HBA0.clockCorrectionTime = 6.370090e-06
+PIC.Core.CS031HBA1.clockCorrectionTime = 6.370090e-06
+PIC.Core.CS031HBA.clockCorrectionTime  = 6.370090e-06
+
+PIC.Core.CS032LBA.clockCorrectionTime  = 8.546815e-06
+PIC.Core.CS032HBA0.clockCorrectionTime = 8.546815e-06
+PIC.Core.CS032HBA1.clockCorrectionTime = 8.546815e-06
+PIC.Core.CS032HBA.clockCorrectionTime  = 8.546815e-06
+
+PIC.Core.CS101LBA.clockCorrectionTime  = 1.5165101e-05
+PIC.Core.CS101HBA0.clockCorrectionTime = 1.5165101e-05
+PIC.Core.CS101HBA1.clockCorrectionTime = 1.5165101e-05
+PIC.Core.CS101HBA.clockCorrectionTime  = 1.5165101e-05
+
+PIC.Core.CS103LBA.clockCorrectionTime  = 3.5500922e-05
+PIC.Core.CS103HBA0.clockCorrectionTime = 3.5500922e-05
+PIC.Core.CS103HBA1.clockCorrectionTime = 3.5500922e-05
+PIC.Core.CS103HBA.clockCorrectionTime  = 3.5500922e-05
+
+PIC.Core.CS201LBA.clockCorrectionTime  = 1.744858e-05
+PIC.Core.CS201HBA0.clockCorrectionTime = 1.744858e-05
+PIC.Core.CS201HBA1.clockCorrectionTime = 1.744858e-05
+PIC.Core.CS201HBA.clockCorrectionTime  = 1.744858e-05
+
+PIC.Core.CS301LBA.clockCorrectionTime  = 7.692091e-06
+PIC.Core.CS301HBA0.clockCorrectionTime = 7.692091e-06
+PIC.Core.CS301HBA1.clockCorrectionTime = 7.692091e-06
+PIC.Core.CS301HBA.clockCorrectionTime  = 7.692091e-06
+
+PIC.Core.CS302LBA.clockCorrectionTime  = 1.5062785e-05
+PIC.Core.CS302HBA0.clockCorrectionTime = 1.5062785e-05
+PIC.Core.CS302HBA1.clockCorrectionTime = 1.5062785e-05
+PIC.Core.CS302HBA.clockCorrectionTime  = 1.5062785e-05
+
 PIC.Core.CS401LBA.clockCorrectionTime  = 8.051870e-06
 PIC.Core.CS401HBA0.clockCorrectionTime = 8.057504e-06
 PIC.Core.CS401HBA1.clockCorrectionTime = 8.057770e-06
 PIC.Core.CS401HBA.clockCorrectionTime  = 8.057637e-06
 
+PIC.Core.CS501LBA.clockCorrectionTime  = 1.65842e-05
+PIC.Core.CS501HBA0.clockCorrectionTime = 1.65842e-05
+PIC.Core.CS501HBA1.clockCorrectionTime = 1.65842e-05
+PIC.Core.CS501HBA.clockCorrectionTime  = 1.65842e-05
+
 #
-# Stations outside of the superterp (no correction needed)
+# Stations outside of the core (no correction needed)
 #
 
-PIC.Core.CS001LBA.clockCorrectionTime = 0
-PIC.Core.CS001HBA0.clockCorrectionTime = 0
-PIC.Core.CS001HBA1.clockCorrectionTime = 0
-PIC.Core.CS001HBA.clockCorrectionTime = 0
-
-PIC.Core.CS011LBA.clockCorrectionTime = 0
-PIC.Core.CS011HBA.clockCorrectionTime = 0
-PIC.Core.CS011HBA0.clockCorrectionTime = 0
-PIC.Core.CS011HBA1.clockCorrectionTime = 0
-
-PIC.Core.CS013LBA.clockCorrectionTime = 0
-PIC.Core.CS013HBA.clockCorrectionTime = 0
-PIC.Core.CS013HBA0.clockCorrectionTime = 0
-PIC.Core.CS013HBA1.clockCorrectionTime = 0
-
-PIC.Core.CS017LBA.clockCorrectionTime  = 0
-PIC.Core.CS017HBA0.clockCorrectionTime = 0
-PIC.Core.CS017HBA1.clockCorrectionTime = 0
-PIC.Core.CS017HBA.clockCorrectionTime  = 0
-
-PIC.Core.CS021LBA.clockCorrectionTime = 0
-PIC.Core.CS021HBA.clockCorrectionTime = 0
-PIC.Core.CS021HBA0.clockCorrectionTime = 0
-PIC.Core.CS021HBA1.clockCorrectionTime = 0
-
-PIC.Core.CS024LBA.clockCorrectionTime = 0
-PIC.Core.CS024HBA0.clockCorrectionTime = 0
-PIC.Core.CS024HBA1.clockCorrectionTime = 0
-PIC.Core.CS024HBA.clockCorrectionTime = 0
-
-PIC.Core.CS026LBA.clockCorrectionTime  = 0
-PIC.Core.CS026HBA0.clockCorrectionTime = 0
-PIC.Core.CS026HBA1.clockCorrectionTime = 0
-PIC.Core.CS026HBA.clockCorrectionTime  = 0
-
-PIC.Core.CS028LBA.clockCorrectionTime = 0
-PIC.Core.CS028HBA.clockCorrectionTime = 0
-PIC.Core.CS028HBA0.clockCorrectionTime = 0
-PIC.Core.CS028HBA1.clockCorrectionTime = 0
-
-PIC.Core.CS030LBA.clockCorrectionTime = 0
-PIC.Core.CS030HBA.clockCorrectionTime = 0
-PIC.Core.CS030HBA0.clockCorrectionTime = 0
-PIC.Core.CS030HBA1.clockCorrectionTime = 0
-
-PIC.Core.CS031LBA.clockCorrectionTime = 0
-PIC.Core.CS031HBA.clockCorrectionTime = 0
-PIC.Core.CS031HBA0.clockCorrectionTime = 0
-PIC.Core.CS031HBA1.clockCorrectionTime = 0
-
-PIC.Core.CS032LBA.clockCorrectionTime = 0
-PIC.Core.CS032HBA0.clockCorrectionTime = 0
-PIC.Core.CS032HBA1.clockCorrectionTime = 0
-PIC.Core.CS032HBA.clockCorrectionTime = 0
-
-PIC.Core.CS101LBA.clockCorrectionTime  = 0
-PIC.Core.CS101HBA0.clockCorrectionTime = 0
-PIC.Core.CS101HBA1.clockCorrectionTime = 0 
-PIC.Core.CS101HBA.clockCorrectionTime  = 0 
-
-PIC.Core.CS103LBA.clockCorrectionTime = 0
-PIC.Core.CS103HBA0.clockCorrectionTime = 0
-PIC.Core.CS103HBA1.clockCorrectionTime = 0
-PIC.Core.CS103HBA.clockCorrectionTime = 0
-
-PIC.Core.CS201LBA.clockCorrectionTime  = 0
-PIC.Core.CS201HBA0.clockCorrectionTime = 0
-PIC.Core.CS201HBA1.clockCorrectionTime = 0
-PIC.Core.CS201HBA.clockCorrectionTime  = 0
-
-PIC.Core.CS301LBA.clockCorrectionTime = 0
-PIC.Core.CS301HBA0.clockCorrectionTime = 0
-PIC.Core.CS301HBA1.clockCorrectionTime = 0
-PIC.Core.CS301HBA.clockCorrectionTime = 0
-
-PIC.Core.CS302LBA.clockCorrectionTime = 0
-PIC.Core.CS302HBA0.clockCorrectionTime = 0
-PIC.Core.CS302HBA.clockCorrectionTime = 0
-PIC.Core.CS302HBA1.clockCorrectionTime = 0
-
-PIC.Core.CS501LBA.clockCorrectionTime  = 0
-PIC.Core.CS501HBA0.clockCorrectionTime = 0
-PIC.Core.CS501HBA1.clockCorrectionTime = 0
-PIC.Core.CS501HBA.clockCorrectionTime  = 0
-
 PIC.Core.RS106LBA.clockCorrectionTime = 0
 PIC.Core.RS106HBA.clockCorrectionTime = 0
 
@@ -140,6 +140,9 @@ PIC.Core.RS205HBA.clockCorrectionTime = 0
 PIC.Core.RS208LBA.clockCorrectionTime = 0
 PIC.Core.RS208HBA.clockCorrectionTime = 0
 
+PIC.Core.RS305LBA.clockCorrectionTime = 0
+PIC.Core.RS305HBA.clockCorrectionTime = 0
+
 PIC.Core.RS306LBA.clockCorrectionTime = 0
 PIC.Core.RS306HBA.clockCorrectionTime = 0
 
@@ -303,6 +306,8 @@ PIC.Core.RS205LBA.phaseCenter = [3831438.563, 463435.440, 5061025.466]
 PIC.Core.RS205HBA.phaseCenter = [3831479.670, 463487.529, 5060989.903]
 PIC.Core.RS208LBA.phaseCenter = [3847810.051, 466929.706, 5048357.222]
 PIC.Core.RS208HBA.phaseCenter = [3847753.310, 466962.809, 5048397.244]
+PIC.Core.RS305LBA.phaseCenter = [3828720.768, 454781.428, 5063851.101]
+PIC.Core.RS305HBA.phaseCenter = [3828732.721, 454692.421, 5063850.334]
 PIC.Core.RS306LBA.phaseCenter = [3829791.808, 452829.848, 5063221.590]
 PIC.Core.RS306HBA.phaseCenter = [3829771.249, 452761.702, 5063243.181]
 PIC.Core.RS307LBA.phaseCenter = [3837940.949, 449560.756, 5057381.288]
diff --git a/RTCP/Run/src/RSPConnections.dat b/RTCP/Run/src/RSPConnections.dat
index 6c947e96f7b905e7fc5605c5f7a965a216686f0f..2db22bcc5a0f960ec9027d515a6fcafe8035d320 100644
--- a/RTCP/Run/src/RSPConnections.dat
+++ b/RTCP/Run/src/RSPConnections.dat
@@ -103,6 +103,8 @@ RS208 RSP_0 R00-M1-N08-J01
 
 RS210 RSP_0 R00-M0-N14-J01
 
+RS305 RSP_0 R00-M0-N14-J00
+
 RS306 RSP_0 R00-M1-N14-J00
 
 RS307 RSP_0 R00-M1-N15-J00
diff --git a/RTCP/Run/src/RTCP.parset b/RTCP/Run/src/RTCP.parset
index f5736b4a3ec1afa1207368e2e38f2f054a016d5a..528a67bc22bc12699ff74ca69d4750820b9cd548 100644
--- a/RTCP/Run/src/RTCP.parset
+++ b/RTCP/Run/src/RTCP.parset
@@ -33,7 +33,7 @@ OLAP.nrTimesInFrame = 16
 #     [ 3*(0;1;2;3)  ] --> [ 0,1,2,3,0,1,2,3,0,1,2,3 ]
 #     [ 3*(300..303) ] --> [ 300,301,302,303,300,301,302,303,300,301,302,303 ]
 #     [ 2*(5*0)      ] --> [ 0,0,0,0,0,0,0,0,0,0 ]       
-Observation.subbandList  = [100..159]
+Observation.subbandList  = [100..110]
 Observation.sampleClock  = 200
 Observation.nrBitsPerSample = 16
 
@@ -68,8 +68,8 @@ Observation.Beam[0].TiedArrayBeam[0].coherent = T
 OLAP.Storage.hosts = [locus095]
 OLAP.Storage.targetDirectory = /data # will be appended with dirmask and filenammask
 
-Observation.DataProducts.Output_Beamformed.enabled = T
-Observation.DataProducts.Output_Correlated.enabled = F
+Observation.DataProducts.Output_Beamformed.enabled = F
+Observation.DataProducts.Output_Correlated.enabled = T
 Observation.DataProducts.Output_Trigger.enabled = F
 
 Observation.DataProducts.Output_Correlated.namemask = L${OBSID}_SB${SUBBAND}_uv.MS
diff --git a/RTCP/Run/src/locations.sh.in b/RTCP/Run/src/locations.sh.in
index 8954fabecd4f71895ec4248c0741def3a5d631d9..2f67b87b50307adb8be12a8bbbe66fda973c5dbe 100644
--- a/RTCP/Run/src/locations.sh.in
+++ b/RTCP/Run/src/locations.sh.in
@@ -28,12 +28,14 @@ then
     STORAGE_HOME=/data/home/lofartest
 
     IONPROC_PARSET="/bghome0/lofarsys/parsets/T$OBSID.parset"
+    STORAGE_PARSET="/globalhome/lofartest/log/T$OBSID.parset"
     LOGPARAMS="-s `CEPlogProcessorSettings | awk '/test/ { print $2; }'`"
   else
     ISTESTENV=0
     STORAGE_HOME=/data/home/lofarsys
 
     IONPROC_PARSET="/bghome0/lofarsys/parsets/L$OBSID.parset"
+    STORAGE_PARSET="/globalhome/lofarsystem/log/L$OBSID.parset"
     LOGPARAMS="-s `CEPlogProcessorSettings | awk '/production/ { print $2; }'`"
   fi
 
diff --git a/RTCP/Run/src/startBGL.sh b/RTCP/Run/src/startBGL.sh
index cf291b7ae5fb71b6cc267d73f6bfd7f3b6685a36..1471af1d1f5ff23f805e39c5b7bae565c2af1158 100755
--- a/RTCP/Run/src/startBGL.sh
+++ b/RTCP/Run/src/startBGL.sh
@@ -25,8 +25,6 @@ date
 echo starting obs $OBSID
 echo "---------------"
 
-STORAGE_PARSET=/opt/lofar/var/log/L$OBSID.parset
-
 # Convert keys where needed
 /opt/lofar/bin/LOFAR/Parset.py -P $PARTITION $PARSET /opt/lofar/etc/OLAP.parset <(echo "$EXTRA_KEYS") > $IONPROC_PARSET &&
 
diff --git a/RTCP/Storage/include/Storage/FastFileStream.h b/RTCP/Storage/include/Storage/FastFileStream.h
index e2955c541d2e0473ef811f1acd01309d4aacad98..c4368dbd9cd011cc16125d0af58fa6b4bf0082c1 100644
--- a/RTCP/Storage/include/Storage/FastFileStream.h
+++ b/RTCP/Storage/include/Storage/FastFileStream.h
@@ -45,6 +45,8 @@ class FastFileStream : public FileStream
 
     virtual void skip( size_t bytes );
 
+    virtual size_t size();
+
     // formally, the required alignment for O_DIRECT is determined by the file system
     static const unsigned alignment = 512;
   private:  
diff --git a/RTCP/Storage/include/Storage/MSWriter.h b/RTCP/Storage/include/Storage/MSWriter.h
index 7325afcd627801b7a57a33da852585813c87935e..dbe0a337c26bafff0b6a6ee9d9d43ed86f96eb81 100644
--- a/RTCP/Storage/include/Storage/MSWriter.h
+++ b/RTCP/Storage/include/Storage/MSWriter.h
@@ -37,6 +37,8 @@ class MSWriter
     virtual	 ~MSWriter();
 
     virtual void write(StreamableData *) = 0;
+
+    virtual size_t getDataSize();
 };
 
 
diff --git a/RTCP/Storage/include/Storage/MSWriterFile.h b/RTCP/Storage/include/Storage/MSWriterFile.h
index 4bb460c40a3218fb11ad0f849f86f926d57f9406..8dab0423c5e435352561ce00d64da5cb667b821c 100644
--- a/RTCP/Storage/include/Storage/MSWriterFile.h
+++ b/RTCP/Storage/include/Storage/MSWriterFile.h
@@ -43,6 +43,8 @@ class MSWriterFile : public MSWriter
 
     virtual void write(StreamableData *data);
 
+    virtual size_t getDataSize();
+
   protected:
     FastFileStream	 itsFile;
 };
diff --git a/RTCP/Storage/include/Storage/OutputThread.h b/RTCP/Storage/include/Storage/OutputThread.h
index 4650197bb2ae5df8e6964b4cda9c46f615ff50a3..c5c45a78f3b03fc3f18831277c231a9424d7d096 100644
--- a/RTCP/Storage/include/Storage/OutputThread.h
+++ b/RTCP/Storage/include/Storage/OutputThread.h
@@ -69,6 +69,7 @@ class OutputThread
     Queue<SmartPtr<StreamableData> > &itsFreeQueue, &itsReceiveQueue;
 
     unsigned		 	     itsBlocksWritten, itsBlocksDropped;
+    unsigned           itsNrExpectedBlocks;
     unsigned			     itsNextSequenceNumber;
     std::vector<unsigned>	     itsSequenceNumbers;
     SmartPtr<FileStream>	     itsSequenceNumbersFile;
diff --git a/RTCP/Storage/src/CMakeLists.txt b/RTCP/Storage/src/CMakeLists.txt
index 65daf114254d5713bb702d19acf5a928599c5bd1..c4ee5a09261690e743c836889ab0b8dd365a08c8 100644
--- a/RTCP/Storage/src/CMakeLists.txt
+++ b/RTCP/Storage/src/CMakeLists.txt
@@ -16,7 +16,6 @@ lofar_add_library(storage
   Format.cc
   MeasurementSetFormat.cc
   TBB_StaticMapping.cc
-  TBB_Writer_main.cc
   TBB_Writer.cc)
 
 install(PROGRAMS
diff --git a/RTCP/Storage/src/FastFileStream.cc b/RTCP/Storage/src/FastFileStream.cc
index a729625e346b5ced802fe9d9b4a0bae4eb3b7096..690cf3a660b3ec792f97589a0903fd38a872f725 100644
--- a/RTCP/Storage/src/FastFileStream.cc
+++ b/RTCP/Storage/src/FastFileStream.cc
@@ -199,6 +199,24 @@ void FastFileStream::skip(size_t bytes)
 }
 
 
+size_t FastFileStream::size()
+{
+  // size we might have skip()ed and have some remaining data to write,
+  // we cannot rely on FileStream::size(), which would report the current
+  // file size, without skips or remainders in our buffer.
+
+  errno = 0;
+
+  off_t curlen = lseek(fd, 0, SEEK_CUR); // NOT SEEK_END, because skip() might push us beyond the end
+
+  // lseek can return -1 as a valid file position, so check errno as well
+  if (curlen == (off_t)-1 && errno)
+    throw SystemCallException("lseek", errno, THROW_ARGS);
+
+  return curlen + remainder;
+}
+
+
 } // namespace RTCP
 } // namespace LOFAR
 
diff --git a/RTCP/Storage/src/MSWriter.cc b/RTCP/Storage/src/MSWriter.cc
index 5bca78c597bcda6c975c23bccc2b5af5de64370a..040c1926b02572bbd058444197f1ee4852080003 100644
--- a/RTCP/Storage/src/MSWriter.cc
+++ b/RTCP/Storage/src/MSWriter.cc
@@ -35,6 +35,11 @@ MSWriter::~MSWriter()
 {
 }
 
+size_t MSWriter::getDataSize()
+{
+  return 0;
+}
+
 
 }
 }
diff --git a/RTCP/Storage/src/MSWriterDAL.cc b/RTCP/Storage/src/MSWriterDAL.cc
index 446c39880723e55037dd758101a0083659718d80..4df1bdcf0287786ce34c4bc44ecad58f72cb274b 100644
--- a/RTCP/Storage/src/MSWriterDAL.cc
+++ b/RTCP/Storage/src/MSWriterDAL.cc
@@ -118,7 +118,7 @@ namespace LOFAR
 
       itsTransposeLogic.decompose( fileno, sapNr, beamNr, stokesNr, partNr );
 
-      unsigned nrBlocks = floor((parset.stopTime() - parset.startTime()) / parset.CNintegrationTime());
+      unsigned nrBlocks = parset.nrBeamFormedBlocks();
       unsigned nrSubbands = itsInfo.subbands.size();
       const vector<unsigned> &subbandIndices = itsInfo.subbands;
       const vector<unsigned> allSubbands = parset.subbandList();
diff --git a/RTCP/Storage/src/MSWriterFile.cc b/RTCP/Storage/src/MSWriterFile.cc
index fa5bf92aaebd7b60902e7c8e166463cf3f5ee509..ed3a8ee5f627d96ea3782972e26c184610d438f9 100644
--- a/RTCP/Storage/src/MSWriterFile.cc
+++ b/RTCP/Storage/src/MSWriterFile.cc
@@ -50,6 +50,12 @@ void MSWriterFile::write(StreamableData *data)
 }
 
 
+size_t MSWriterFile::getDataSize()
+{
+  return itsFile.size();
+}
+
+
 } // namespace RTCP
 } // namespace LOFAR
 
diff --git a/RTCP/Storage/src/OutputThread.cc b/RTCP/Storage/src/OutputThread.cc
index a150cca71547e778da885ebed98ea279c1f3160d..53a84fdda91c13bc0a0688b5cb9594d0a8409e6d 100644
--- a/RTCP/Storage/src/OutputThread.cc
+++ b/RTCP/Storage/src/OutputThread.cc
@@ -36,6 +36,7 @@
 #include <boost/format.hpp>
 
 #include <errno.h>
+#include <iomanip>
 #include <time.h>
 #include <fcntl.h>
 #include <sys/types.h>
@@ -52,6 +53,8 @@ namespace RTCP {
 static Mutex makeDirMutex;
 static Mutex casacoreMutex;
 
+using namespace std;
+
 static void makeDir(const string &dirname, const string &logPrefix)
 {
   ScopedLock  scopedLock(makeDirMutex);
@@ -64,7 +67,7 @@ static void makeDir(const string &dirname, const string &logPrefix)
     }
   } else if (errno == ENOENT) {
     // create directory
-    LOG_INFO_STR(logPrefix << "Creating directory " << dirname);
+    LOG_DEBUG_STR(logPrefix << "Creating directory " << dirname);
 
     if (mkdir(dirname.c_str(), 0777) != 0 && errno != EEXIST) {
       unsigned savedErrno = errno; // first argument below clears errno
@@ -94,6 +97,25 @@ static void recursiveMakeDir(const string &dirname, const string &logPrefix)
   }
 }
 
+/* Returns a percentage based on a current and a target value,
+ * with the following rounding:
+ *
+ * 0     -> current == 0
+ * 1..99 -> 0 < current < target
+ * 100   -> current == target
+ */
+
+static unsigned roundedPercentage(unsigned current, unsigned target)
+{
+  if (current == target)
+    return 100;
+
+  if (current == 0)
+    return 0;
+
+  return std::min(std::max(100 * current / target, 1u), 99u);
+}
+
 
 OutputThread::OutputThread(const Parset &parset, OutputType outputType, unsigned streamNr, Queue<SmartPtr<StreamableData> > &freeQueue, Queue<SmartPtr<StreamableData> > &receiveQueue, const std::string &logPrefix, bool isBigEndian, const std::string &targetDirectory)
 :
@@ -108,6 +130,7 @@ OutputThread::OutputThread(const Parset &parset, OutputType outputType, unsigned
   itsReceiveQueue(receiveQueue),
   itsBlocksWritten(0),
   itsBlocksDropped(0),
+  itsNrExpectedBlocks(0),
   itsNextSequenceNumber(0)
 {
 }
@@ -139,7 +162,7 @@ void OutputThread::createMS()
 
     myFormat.addSubband(path, itsStreamNr, itsIsBigEndian);
 
-    LOG_INFO_STR(itsLogPrefix << "MeasurementSet created");
+    LOG_DEBUG_STR(itsLogPrefix << "MeasurementSet created");
 #endif // defined HAVE_AIPSPP
 
     if (itsParset.getLofarStManVersion() > 1) {
@@ -176,6 +199,35 @@ void OutputThread::createMS()
     LOG_ERROR_STR(itsLogPrefix << "Cannot open " << path << ": " << ex);
     itsWriter = new MSWriterNull;
   }
+
+  // log some core characteristics for CEPlogProcessor for feedback to MoM/LTA
+  switch (itsOutputType) {
+    case CORRELATED_DATA:
+      itsNrExpectedBlocks = itsParset.nrCorrelatedBlocks();
+
+      {
+        const vector<unsigned> subbands  = itsParset.subbandList();
+        const vector<unsigned> SAPs      = itsParset.subbandToSAPmapping();
+        const vector<double> frequencies = itsParset.subbandToFrequencyMapping();
+
+        LOG_INFO_STR(itsLogPrefix << "Characteristics: "
+            << "SAP "            << SAPs[itsStreamNr]
+            << ", subband "      << subbands[itsStreamNr]
+            << ", centralfreq "  << setprecision(8) << frequencies[itsStreamNr]/1e6 << " MHz"
+            << ", duration "     << setprecision(8) << itsNrExpectedBlocks * itsParset.IONintegrationTime() << " s"
+            << ", integration "  << setprecision(8) << itsParset.IONintegrationTime() << " s"
+            << ", channels "     << itsParset.nrChannelsPerSubband() 
+            << ", channelwidth " << setprecision(8) << itsParset.channelWidth()/1e3 << " kHz"
+        );
+      }
+      break;
+    case BEAM_FORMED_DATA:
+      itsNrExpectedBlocks = itsParset.nrBeamFormedBlocks();
+      break;
+
+    default:
+      break;
+  }
 }
 
 
@@ -247,14 +299,16 @@ void OutputThread::doWork()
 
     time_t now = time(0L);
 
+    unsigned percent_written = roundedPercentage(itsBlocksWritten, itsNrExpectedBlocks);
+
     if (now > prevlog + 5) {
       // print info every 5 seconds
-      LOG_INFO_STR(itsLogPrefix << "Written block with seqno = " << data->sequenceNumber() << ", " << itsBlocksWritten << " blocks written, " << itsBlocksDropped << " blocks dropped");
+      LOG_INFO_STR(itsLogPrefix << "Written block with seqno = " << data->sequenceNumber() << ", " << itsBlocksWritten << " blocks written (" << percent_written << "%), " << itsBlocksDropped << " blocks dropped");
 
       prevlog = now;
     } else {
       // print debug info for the other blocks
-      LOG_DEBUG_STR(itsLogPrefix << "Written block with seqno = " << data->sequenceNumber() << ", " << itsBlocksWritten << " blocks written, " << itsBlocksDropped << " blocks dropped");
+      LOG_DEBUG_STR(itsLogPrefix << "Written block with seqno = " << data->sequenceNumber() << ", " << itsBlocksWritten << " blocks written (" << percent_written << "%), " << itsBlocksDropped << " blocks dropped");
     }
   }
 }
@@ -264,8 +318,27 @@ void OutputThread::cleanUp()
   flushSequenceNumbers();
 
   float dropPercent = itsBlocksWritten + itsBlocksDropped == 0 ? 0.0 : (100.0 * itsBlocksDropped) / (itsBlocksWritten + itsBlocksDropped);
+  unsigned percent_written = roundedPercentage(itsBlocksWritten, itsNrExpectedBlocks);
+
+  LOG_INFO_STR(itsLogPrefix << "Finished writing: " << itsBlocksWritten << " blocks written (" << percent_written << "%), " << itsBlocksDropped << " blocks dropped: " << std::setprecision(3) << dropPercent << "% lost" );
+
+  // log some final characteristics for CEPlogProcessor for feedback to MoM/LTA
+  switch (itsOutputType) {
+    case CORRELATED_DATA:
+      {
+        LOG_INFO_STR(itsLogPrefix << "Final characteristics: "
+            << "duration "     << setprecision(8) << itsNextSequenceNumber * itsParset.IONintegrationTime() << " s"
+            << ", size "         << itsWriter->getDataSize() << " bytes"
+        );
+      }
+      break;
+    case BEAM_FORMED_DATA:
+      itsNrExpectedBlocks = itsParset.nrBeamFormedBlocks();
+      break;
 
-  LOG_INFO_STR(itsLogPrefix << "Finished writing: " << itsBlocksWritten << " blocks written, " << itsBlocksDropped << " blocks dropped: " << std::setprecision(3) << dropPercent << "% lost" );
+    default:
+      break;
+  }
 }
 
 
diff --git a/SAS/OTB/OTB-distribution/pom.xml b/SAS/OTB/OTB-distribution/pom.xml
index e3ca5f491f9e8d97fdf69dea84a0fa5df4c3f618..ef7035b7c161746c747cf47f820bfcd47bc1a385 100644
--- a/SAS/OTB/OTB-distribution/pom.xml
+++ b/SAS/OTB/OTB-distribution/pom.xml
@@ -1,103 +1,102 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar OTB :: Distribution</name>
-  <description>Object Tree Browser Client/Server - Distribution</description>
-
-  <parent>
-    <groupId>nl.astron.lofar.sas.otb</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>OTB-distribution</artifactId>
-  <packaging>pom</packaging>
-
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/OTB-distribution</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/OTB-distribution</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-    <plugins>
-
-      <!-- Resolve client and server artifacts and extract them -->
-      <plugin>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>unpack</id>
-            <phase>package</phase>
-            <goals>
-              <goal>unpack</goal>
-            </goals>
-
-            <configuration>
-              <artifactItems>
-                <artifactItem>
-                  <groupId>${project.groupId}</groupId>
-                  <artifactId>jOTDB3</artifactId>
-                  <type>tar.gz</type>
-                </artifactItem>
-
-                <artifactItem>
-                  <groupId>${project.groupId}</groupId>
-                  <artifactId>OTB</artifactId>
-                  <type>tar.gz</type>
-                </artifactItem>
-
-              </artifactItems>
-            </configuration>
-
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Create an TAR.GZ file -->
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <descriptor>assembly.xml</descriptor>
-          <appendAssemblyId>false</appendAssemblyId>
-        </configuration>
-
-        <executions>
-          <execution>
-            <id>make-assembly</id>
-            <phase>package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-  </build>
-
-  <dependencies>
-
-    <!-- Sibling dependencies -->
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>OTB</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>jOTDB3</artifactId>
-    </dependency>
-
-  </dependencies>
-
-</project>
-
-
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar OTB :: Distribution</name>
+  <description>Object Tree Browser Client/Server - Distribution</description>
+
+  <parent>
+    <groupId>nl.astron.lofar.sas.otb</groupId>
+    <artifactId>otb-parent</artifactId>
+    <version>1.8.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>OTB-distribution</artifactId>
+  <packaging>pom</packaging>
+
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/OTB-distribution</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/OTB-distribution</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+    <plugins>
+
+      <!-- Resolve client and server artifacts and extract them -->
+      <plugin>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>unpack</id>
+            <phase>package</phase>
+            <goals>
+              <goal>unpack</goal>
+            </goals>
+
+            <configuration>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>${project.groupId}</groupId>
+                  <artifactId>jOTDB3</artifactId>
+                  <type>tar.gz</type>
+                </artifactItem>
+
+                <artifactItem>
+                  <groupId>${project.groupId}</groupId>
+                  <artifactId>OTB</artifactId>
+                  <type>tar.gz</type>
+                </artifactItem>
+
+              </artifactItems>
+            </configuration>
+
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- Create an TAR.GZ file -->
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptor>assembly.xml</descriptor>
+          <appendAssemblyId>false</appendAssemblyId>
+        </configuration>
+
+        <executions>
+          <execution>
+            <id>make-assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+  </build>
+
+  <dependencies>
+
+    <!-- Sibling dependencies -->
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>OTB</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>jOTDB3</artifactId>
+    </dependency>
+
+  </dependencies>
+
+</project>
+
+
diff --git a/SAS/OTB/OTB/dist-src/startClientOTB b/SAS/OTB/OTB/dist-src/startClientOTB
index 699dc3c0969ef4d99dee2137968af6f2ad310ad8..f4a6392c972e5913b271d19d6a139108437879e5 100644
--- a/SAS/OTB/OTB/dist-src/startClientOTB
+++ b/SAS/OTB/OTB/dist-src/startClientOTB
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-export OTB_DIR=/opt/sas/otb
+export OTB_DIR=/opt/sas/otb/client
 export JAVA_HOME=/usr/java/jdk1.7.0_02
 
 echo
diff --git a/SAS/OTB/OTB/pom.xml b/SAS/OTB/OTB/pom.xml
index 604dc55d90e9f64521f28faca08539aa9b40e19d..807455145eabd7cec140308b8aaa38df980ca6c4 100644
--- a/SAS/OTB/OTB/pom.xml
+++ b/SAS/OTB/OTB/pom.xml
@@ -1,144 +1,143 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar OTB :: OTB</name>
-  <description>Object Tree Browser Client/Server - Object Tree Browser GUI</description>
-
-  <parent>
-    <groupId>nl.astron.lofar.sas.otb</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>OTB</artifactId>
-
-  <!-- The OTB GUI requires at least java 1.7 to compile. -->
-  <properties>
-    <project.compiler.version>1.7</project.compiler.version>
-  </properties>
-
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/OTB</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/OTB</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-
-    <sourceDirectory>src</sourceDirectory>
-
-    <resources>
-      <resource>
-        <directory>${basedir}</directory>
-        <includes>
-          <include>*.log_prop</include>
-        </includes>
-      </resource>
-
-      <resource>
-        <directory>src</directory>
-        <excludes>
-          <exclude>**/*.java</exclude>
-        </excludes>
-      </resource>
-    </resources>
-
-    <plugins>
-
-      <!-- Set the main class in the manifest file -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-
-        <configuration>
-          <archive>
-            <manifest>
-              <mainClass>nl.astron.lofar.sas.otb.Main</mainClass>
-              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-            </manifest>
-          </archive>
-        </configuration>
-      </plugin>
-
-      <!-- Create a /target/lib directory with ALL dependencies -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${project.build.directory}/lib</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Create an TAR.GZ file -->
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <descriptor>assembly.xml</descriptor>
-          <appendAssemblyId>false</appendAssemblyId>
-        </configuration>
-
-        <executions>
-          <execution>
-            <id>make-assembly</id>
-            <phase>package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-
-  </build>
-
-  <dependencies>
-
-    <!-- Sibling dependencies -->
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>jOTDB3</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>jParmFacade</artifactId>
-    </dependency>
-
-    <!-- Internal dependencies -->
-    <dependency>
-      <groupId>nl.astron.lofar.lib</groupId>
-      <artifactId>plotter</artifactId>
-    </dependency>
-
-    <!-- External dependencies -->
-    <dependency>
-      <groupId>org.swinglabs</groupId>
-      <artifactId>swing-layout</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.netbeans.external</groupId>
-      <artifactId>AbsoluteLayout</artifactId>
-    </dependency>
-
-  </dependencies>
-
-</project>
-
-
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar OTB :: OTB</name>
+  <description>Object Tree Browser Client/Server - Object Tree Browser GUI</description>
+
+  <parent>
+    <groupId>nl.astron.lofar.sas.otb</groupId>
+    <artifactId>otb-parent</artifactId>
+    <version>1.8.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>OTB</artifactId>
+
+  <!-- The OTB GUI requires at least java 1.7 to compile. -->
+  <properties>
+    <project.compiler.version>1.7</project.compiler.version>
+  </properties>
+
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/OTB</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/OTB</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+
+    <sourceDirectory>src</sourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>${basedir}</directory>
+        <includes>
+          <include>*.log_prop</include>
+        </includes>
+      </resource>
+
+      <resource>
+        <directory>src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+        </excludes>
+      </resource>
+    </resources>
+
+    <plugins>
+
+      <!-- Set the main class in the manifest file -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+
+        <configuration>
+          <archive>
+            <manifest>
+              <mainClass>nl.astron.lofar.sas.otb.Main</mainClass>
+              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+            </manifest>
+          </archive>
+        </configuration>
+      </plugin>
+
+      <!-- Create a /target/lib directory with ALL dependencies -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>copy-dependencies</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${project.build.directory}/lib</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- Create an TAR.GZ file -->
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptor>assembly.xml</descriptor>
+          <appendAssemblyId>false</appendAssemblyId>
+        </configuration>
+
+        <executions>
+          <execution>
+            <id>make-assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+
+  </build>
+
+  <dependencies>
+
+    <!-- Sibling dependencies -->
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>jOTDB3</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>jParmFacade</artifactId>
+    </dependency>
+
+    <!-- Internal dependencies -->
+    <dependency>
+      <groupId>nl.astron.lofar.lib</groupId>
+      <artifactId>plotter</artifactId>
+    </dependency>
+
+    <!-- External dependencies -->
+    <dependency>
+      <groupId>org.swinglabs</groupId>
+      <artifactId>swing-layout</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.netbeans.external</groupId>
+      <artifactId>AbsoluteLayout</artifactId>
+    </dependency>
+
+  </dependencies>
+
+</project>
+
+
diff --git a/SAS/OTB/RSP/pom.xml b/SAS/OTB/RSP/pom.xml
index 9b26b95fe609be5a48e32b16a6bada00e593cb8e..d5b9d3b11d0e743f5e4c31646402050ddaeea483 100644
--- a/SAS/OTB/RSP/pom.xml
+++ b/SAS/OTB/RSP/pom.xml
@@ -1,76 +1,75 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar OTB :: RSP</name>
-
-  <parent>
-    <groupId>nl.astron.lofar.sas.otb</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>RSP</artifactId>
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/RSP</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/RSP</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-
-    <sourceDirectory>src</sourceDirectory>
-
-    <resources>
-      <resource>
-        <directory>src</directory>
-        <excludes>
-          <exclude>**/*.java</exclude>
-          <exclude>**/*.form</exclude>
-        </excludes>
-      </resource>
-    </resources>
-
-  </build>
-
-  <dependencies>
-
-    <!-- Sibling dependencies -->
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>jRSP</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>OTB</artifactId>
-    </dependency>
-
-    <!-- Internal dependencies -->
-    <dependency>
-      <groupId>nl.astron.lofar.lib</groupId>
-      <artifactId>plotter</artifactId>
-    </dependency>
-
-    <!-- External dependencies -->
-    <dependency>
-      <groupId>org.swinglabs</groupId>
-      <artifactId>swing-layout</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-
-
-
-  </dependencies>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar OTB :: RSP</name>
+
+  <parent>
+    <groupId>nl.astron.lofar.sas.otb</groupId>
+    <artifactId>otb-parent</artifactId>
+    <version>1.8.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>RSP</artifactId>
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/RSP</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/RSP</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+
+    <sourceDirectory>src</sourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+          <exclude>**/*.form</exclude>
+        </excludes>
+      </resource>
+    </resources>
+
+  </build>
+
+  <dependencies>
+
+    <!-- Sibling dependencies -->
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>jRSP</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>OTB</artifactId>
+    </dependency>
+
+    <!-- Internal dependencies -->
+    <dependency>
+      <groupId>nl.astron.lofar.lib</groupId>
+      <artifactId>plotter</artifactId>
+    </dependency>
+
+    <!-- External dependencies -->
+    <dependency>
+      <groupId>org.swinglabs</groupId>
+      <artifactId>swing-layout</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+
+
+
+  </dependencies>
+
+</project>
diff --git a/SAS/OTB/jOTDB3/dist-src/startServerOTB b/SAS/OTB/jOTDB3/dist-src/startServerOTB
index 14653ab5f7f479b3dca216fd9c178a3fe69e526d..2a9ffb964ac4d96ec432b502d3818a1276a4ef89 100644
--- a/SAS/OTB/jOTDB3/dist-src/startServerOTB
+++ b/SAS/OTB/jOTDB3/dist-src/startServerOTB
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-export OTB_DIR=/opt/sas/otb
+export OTB_DIR=/opt/sas/otb/server
 export JAVA_HOME=/usr/java/jdk1.7.0_02
 
 echo
@@ -25,4 +25,4 @@ if [ $? -ne 0 ]; then
     serverpid=$!
 fi
 
-echo OTB Server stopped.
\ No newline at end of file
+echo OTB Server stopped.
diff --git a/SAS/OTB/jOTDB3/pom.xml b/SAS/OTB/jOTDB3/pom.xml
index 0069947c263a9fa27f22c45ef3047938ec0c60f4..90b9e21db5056eae6df13ab25c0d0e26a14873d7 100644
--- a/SAS/OTB/jOTDB3/pom.xml
+++ b/SAS/OTB/jOTDB3/pom.xml
@@ -1,154 +1,153 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar OTB :: jOTDB3</name>
-  <description>Object Tree Browser Client/Server - jOTDB3</description>
-
-  <parent>
-    <groupId>nl.astron.lofar.sas.otb</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>jOTDB3</artifactId>
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jOTDB3</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jOTDB3</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-
-    <sourceDirectory>src</sourceDirectory>
-    <testSourceDirectory>test</testSourceDirectory>
-
-    <resources>
-      <resource>
-        <directory>${basedir}</directory>
-        <includes>
-          <include>*.log_prop</include>
-        </includes>
-      </resource>
-
-      <resource>
-        <directory>src</directory>
-        <excludes>
-          <exclude>**/*.java</exclude>
-          <exclude>**/*.cc</exclude>
-        </excludes>
-      </resource>
-    </resources>
-
-    <plugins>
-
-      <!-- Generate HEADER files from JNI Java classes -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>native-maven-plugin</artifactId>
-
-        <configuration>
-          <javahClassNames>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jCampaign</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jClassifConv</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jInitCPPLogger</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jOTDBconnection</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jParamTypeConv</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jTreeMaintenance</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jTreeStateConv</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jTreeTypeConv</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jUnitConv</javahClassName>
-            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jTreeValue</javahClassName>
-          </javahClassNames>
-        </configuration>
-
-        <executions>
-          <execution>
-            <phase>process-classes</phase>
-            <goals>
-              <goal>javah</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-
-      <!-- Set the main class in the manifest file -->
-      <plugin>
-        <artifactId>maven-jar-plugin</artifactId>
-
-        <configuration>
-          <archive>
-            <manifest>
-              <mainClass>nl.astron.lofar.sas.otb.jotdb3.jOTDBserver</mainClass>
-              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-            </manifest>
-          </archive>
-        </configuration>
-      </plugin>
-
-
-      <!-- Create a /target/lib directory with ALL dependencies -->
-      <plugin>
-        <artifactId>maven-dependency-plugin</artifactId>
-
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${project.build.directory}/lib</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Create an TAR.GZ file -->
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <descriptor>assembly.xml</descriptor>
-          <appendAssemblyId>false</appendAssemblyId>
-        </configuration>
-
-        <executions>
-          <execution>
-            <id>make-assembly</id>
-            <phase>package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-
-  </build>
-
-  <dependencies>
-
-    <!-- Local dependencies -->
-    <dependency>
-      <groupId>nl.astron.lofar.lib</groupId>
-      <artifactId>lofarutils</artifactId>
-    </dependency>
-
-    <!-- External dependencies -->
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-
-  </dependencies>
-
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar OTB :: jOTDB3</name>
+  <description>Object Tree Browser Client/Server - jOTDB3</description>
+
+  <parent>
+    <groupId>nl.astron.lofar.sas.otb</groupId>
+    <artifactId>otb-parent</artifactId>
+    <version>1.8.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>jOTDB3</artifactId>
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jOTDB3</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jOTDB3</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+
+    <sourceDirectory>src</sourceDirectory>
+    <testSourceDirectory>test</testSourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>${basedir}</directory>
+        <includes>
+          <include>*.log_prop</include>
+        </includes>
+      </resource>
+
+      <resource>
+        <directory>src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+          <exclude>**/*.cc</exclude>
+        </excludes>
+      </resource>
+    </resources>
+
+    <plugins>
+
+      <!-- Generate HEADER files from JNI Java classes -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>native-maven-plugin</artifactId>
+
+        <configuration>
+          <javahClassNames>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jCampaign</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jClassifConv</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jInitCPPLogger</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jOTDBconnection</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jParamTypeConv</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jTreeMaintenance</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jTreeStateConv</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jTreeTypeConv</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jUnitConv</javahClassName>
+            <javahClassName>nl.astron.lofar.sas.otb.jotdb3.jTreeValue</javahClassName>
+          </javahClassNames>
+        </configuration>
+
+        <executions>
+          <execution>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>javah</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+
+      <!-- Set the main class in the manifest file -->
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+
+        <configuration>
+          <archive>
+            <manifest>
+              <mainClass>nl.astron.lofar.sas.otb.jotdb3.jOTDBserver</mainClass>
+              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+            </manifest>
+          </archive>
+        </configuration>
+      </plugin>
+
+
+      <!-- Create a /target/lib directory with ALL dependencies -->
+      <plugin>
+        <artifactId>maven-dependency-plugin</artifactId>
+
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>copy-dependencies</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${project.build.directory}/lib</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- Create an TAR.GZ file -->
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptor>assembly.xml</descriptor>
+          <appendAssemblyId>false</appendAssemblyId>
+        </configuration>
+
+        <executions>
+          <execution>
+            <id>make-assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+
+  </build>
+
+  <dependencies>
+
+    <!-- Local dependencies -->
+    <dependency>
+      <groupId>nl.astron.lofar.lib</groupId>
+      <artifactId>lofarutils</artifactId>
+    </dependency>
+
+    <!-- External dependencies -->
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+
+  </dependencies>
+
+
+</project>
diff --git a/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeValue.cc b/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeValue.cc
index 9f74f3cec5a92dd6b17bfcc777573f0e5dae7041..95df2ce4e028d4cfd04d249ed8e5f8d88ce33432 100644
--- a/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeValue.cc
+++ b/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeValue.cc
@@ -151,8 +151,7 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb3_jTreeValue_addKVT
  * Method:    getBrokenHardware
  * Signature: (Ljava/lang/String,Ljava/lang/String)Ljava/util/Vector;
  */
-JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb3_jTreeValue_getBrokenHardware__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject jTreeValue, jstring aStartTime, jstrin
-g aStopTime) {
+JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb3_jTreeValue_getBrokenHardware__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject jTreeValue, jstring aStartTime, jstring aStopTime) {
   // create the connection with the c++ TreeVal
   setTreeValConnection(env,jTreeValue);
   
@@ -185,7 +184,7 @@ g aStopTime) {
     
     setErrorMsg(env,jTreeValue);
   } catch (exception &ex) {
-    cout << "Exception during treeValue::getBrokenHardware(" << ts << ") "<< ex.what() << endl;
+    cout << "Exception during treeValue::getBrokenHardware(" << tStart << "," << tStop << ") "<< ex.what() << endl;
 
     env->ReleaseStringUTFChars (aStartTime, aStart);
     env->ReleaseStringUTFChars (aStopTime, aStop);
diff --git a/SAS/OTB/jParmFacade/pom.xml b/SAS/OTB/jParmFacade/pom.xml
index 3683847a9c1b0f93ad965e10bbccfa7829efa7d9..2c38cb4aa21110b3eba471ae05f5c373eae1b91c 100644
--- a/SAS/OTB/jParmFacade/pom.xml
+++ b/SAS/OTB/jParmFacade/pom.xml
@@ -1,84 +1,83 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar OTB :: jParmFacade</name>
-  <description>Object Tree Browser Client/Server - jParmFacade</description>
-
-  <parent>
-    <groupId>nl.astron.lofar.sas.otb</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>jParmFacade</artifactId>
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jParmFacade</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jParmFacade</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-
-    <sourceDirectory>src</sourceDirectory>
-    <testSourceDirectory>test</testSourceDirectory>
-
-    <resources>
-      <resource>
-        <directory>src</directory>
-        <excludes>
-          <exclude>**/*.java</exclude>
-          <exclude>**/*.cc</exclude>
-        </excludes>
-      </resource>
-    </resources>
-
-    <plugins>
-
-      <!-- Generate HEADER files from JNI Java classes -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>native-maven-plugin</artifactId>
-
-        <configuration>
-          <javahClassNames>
-            <javahClassName>nl.astron.lofar.sas.otb.jparmfacade.jParmFacade</javahClassName>
-          </javahClassNames>
-        </configuration>
-
-        <executions>
-          <execution>
-            <phase>process-classes</phase>
-            <goals>
-              <goal>javah</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-
-  </build>
-
-
-  <dependencies>
-    <dependency>
-      <groupId>nl.astron.lofar.sas.otb</groupId>
-      <artifactId>jOTDB3</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-  </dependencies>
-
-</project>
-
-
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar OTB :: jParmFacade</name>
+  <description>Object Tree Browser Client/Server - jParmFacade</description>
+
+  <parent>
+    <groupId>nl.astron.lofar.sas.otb</groupId>
+    <artifactId>otb-parent</artifactId>
+    <version>1.8.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>jParmFacade</artifactId>
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jParmFacade</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jParmFacade</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+
+    <sourceDirectory>src</sourceDirectory>
+    <testSourceDirectory>test</testSourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+          <exclude>**/*.cc</exclude>
+        </excludes>
+      </resource>
+    </resources>
+
+    <plugins>
+
+      <!-- Generate HEADER files from JNI Java classes -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>native-maven-plugin</artifactId>
+
+        <configuration>
+          <javahClassNames>
+            <javahClassName>nl.astron.lofar.sas.otb.jparmfacade.jParmFacade</javahClassName>
+          </javahClassNames>
+        </configuration>
+
+        <executions>
+          <execution>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>javah</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+
+  </build>
+
+
+  <dependencies>
+    <dependency>
+      <groupId>nl.astron.lofar.sas.otb</groupId>
+      <artifactId>jOTDB3</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>
+
+
diff --git a/SAS/OTB/jRSP/pom.xml b/SAS/OTB/jRSP/pom.xml
index 0e2017af32402ad9c4f996e0117b5047cf4c0471..56f087cd3a71efbfac2158550aec1b21c3357c07 100644
--- a/SAS/OTB/jRSP/pom.xml
+++ b/SAS/OTB/jRSP/pom.xml
@@ -1,76 +1,75 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar OTB :: jRSP</name>
-
-  <parent>
-    <groupId>nl.astron.lofar.sas.otb</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>jRSP</artifactId>
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jRSP</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jRSP</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-
-    <sourceDirectory>src</sourceDirectory>
-
-    <resources>
-      <resource>
-        <directory>src</directory>
-        <excludes>
-          <exclude>**/*.java</exclude>
-          <exclude>**/*.cc</exclude>
-        </excludes>
-      </resource>
-    </resources>
-
-    <plugins>
-
-      <!-- Generate HEADER files from JNI Java classes -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>native-maven-plugin</artifactId>
-
-        <configuration>
-          <javahClassNames>
-            <javahClassName>nl.astron.lofar.sas.otb.jrsp.Board</javahClassName>
-          </javahClassNames>
-        </configuration>
-
-        <executions>
-          <execution>
-            <phase>process-classes</phase>
-            <goals>
-              <goal>javah</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-
-  </build>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-
-  </dependencies>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar OTB :: jRSP</name>
+
+  <parent>
+    <groupId>nl.astron.lofar.sas.otb</groupId>
+    <artifactId>otb-parent</artifactId>
+    <version>1.8.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>jRSP</artifactId>
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jRSP</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB/jRSP</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+
+    <sourceDirectory>src</sourceDirectory>
+
+    <resources>
+      <resource>
+        <directory>src</directory>
+        <excludes>
+          <exclude>**/*.java</exclude>
+          <exclude>**/*.cc</exclude>
+        </excludes>
+      </resource>
+    </resources>
+
+    <plugins>
+
+      <!-- Generate HEADER files from JNI Java classes -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>native-maven-plugin</artifactId>
+
+        <configuration>
+          <javahClassNames>
+            <javahClassName>nl.astron.lofar.sas.otb.jrsp.Board</javahClassName>
+          </javahClassNames>
+        </configuration>
+
+        <executions>
+          <execution>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>javah</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+
+  </build>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+
+  </dependencies>
+
+</project>
diff --git a/SAS/OTB/pom.xml b/SAS/OTB/pom.xml
index c65c279fdca44aea8444125011c49e11e27839a5..931bdccf5afc679812f576ca9d77598192770bd9 100644
--- a/SAS/OTB/pom.xml
+++ b/SAS/OTB/pom.xml
@@ -1,190 +1,190 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Lofar OTB :: Parent</name>
-  <description>Object Tree Browser Client/Server - Parent</description>
-
-  <parent>
-    <groupId>nl.astron</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.8.0-SNAPSHOT</version>
-  </parent>
-
-  <groupId>nl.astron.lofar.sas.otb</groupId>
-  <artifactId>parent</artifactId>
-  <packaging>pom</packaging>
-
-
-  <!-- Properties that can be used throughout the POM as a substitution, 
-    and are used as filters in resources if enabled. -->
-  <properties>
-    <lofar.lib.version>1.8.0-SNAPSHOT</lofar.lib.version>
-  </properties>
-
-
-  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
-  <scm>
-    <connection>scm:svn:http://svn.astron.nl/LOFAR/trunk/SAS/OTB</connection>
-    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB</developerConnection>
-  </scm>
-
-
-  <!-- Information required to build a project. -->
-  <build>
-
-    <!-- Default plugin information to be made available for reference by 
-      projects derived from this one. This plugin configuration will not be resolved 
-      or bound to the lifecycle unless referenced. Any local configuration for 
-      a given plugin will override the plugin's entire definition here. -->
-    <pluginManagement>
-      <plugins>
-
-        <!-- This plugin's configuration is used to store Eclipse m2e settings 
-          only. It has no influence on the Maven build itself. -->
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.codehaus.mojo</groupId>
-                    <artifactId>native-maven-plugin</artifactId>
-                    <versionRange>[1.0-alpha-7,)</versionRange>
-                    <goals>
-                      <goal>javah</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore />
-                  </action>
-                </pluginExecution>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <versionRange>[1.0.0,)</versionRange>
-                    <goals>
-                      <goal>copy-dependencies</goal>
-                      <goal>unpack</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore />
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-
-      </plugins>
-    </pluginManagement>
-
-  </build>
-
-
-  <!-- The modules (sometimes called subprojects) to build as a part of this 
-    project. Each module listed is a relative path to the directory containing 
-    the module. -->
-  <modules>
-    <module>jRSP</module>
-    <module>RSP</module>
-    <module>jOTDB3</module>
-    <module>jParmFacade</module>
-    <module>OTB</module>
-    <module>OTB-distribution</module>
-  </modules>
-
-
-  <!-- Default dependency information for projects that inherit from this 
-    one. The dependencies in this section are not immediately resolved. Instead, 
-    when a POM derived from this one declares a dependency described by a matching 
-    groupId and artifactId, the version and other values from this section are 
-    used for that dependency if they were not already specified. -->
-  <dependencyManagement>
-    <dependencies>
-
-      <!-- Child dependencies, childs use the same group-ID and version by default. -->
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>jRSP</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>RSP</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>jParmFacade</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>jOTDB3</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>OTB</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>OTB-distribution</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <!-- Import the group 'nl.astron.lofar.lib' -->
-      <dependency>
-        <groupId>nl.astron.lofar.lib</groupId>
-        <artifactId>parent</artifactId>
-        <version>${lofar.lib.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-
-      <!-- External dependencies -->
-      <dependency>
-        <groupId>org.swinglabs</groupId>
-        <artifactId>swing-layout</artifactId>
-        <version>1.0.3</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.netbeans.external</groupId>
-        <artifactId>AbsoluteLayout</artifactId>
-        <version>RELEASE72</version>
-      </dependency>
-
-    </dependencies>
-  </dependencyManagement>
-
-
-  <!-- The lists of the remote repositories for discovering dependencies 
-    and extensions. -->
-  <repositories>
-
-    <!-- Extra maven repository for the Netbeans AbsoluteLayout dependency -->
-    <repository>
-      <id>netbeans</id>
-      <name>NetBeans IDE Repos</name>
-      <url>http://bits.netbeans.org/maven2</url>
-    </repository>
-
-  </repositories>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <name>Lofar OTB :: Parent</name>
+  <description>Object Tree Browser Client/Server - Parent</description>
+
+  <parent>
+    <groupId>nl.astron</groupId>
+    <artifactId>parent</artifactId>
+    <version>2.0.0</version>
+  </parent>
+
+  <groupId>nl.astron.lofar.sas.otb</groupId>
+  <artifactId>otb-parent</artifactId>
+  <version>1.8.2-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+
+  <!-- Properties that can be used throughout the POM as a substitution, 
+    and are used as filters in resources if enabled. -->
+  <properties>
+    <lofar.lib.version>1.8.1</lofar.lib.version>
+  </properties>
+
+
+  <!-- Specification for the SCM used by the project, such as CVS, Subversion, etc. -->
+  <scm>
+    <connection>scm:svn:http://svn.astron.nl/LOFAR/trunk/SAS/OTB</connection>
+    <developerConnection>scm:svn:https://svn.astron.nl/LOFAR/trunk/SAS/OTB</developerConnection>
+  </scm>
+
+
+  <!-- Information required to build a project. -->
+  <build>
+
+    <!-- Default plugin information to be made available for reference by 
+      projects derived from this one. This plugin configuration will not be resolved 
+      or bound to the lifecycle unless referenced. Any local configuration for 
+      a given plugin will override the plugin's entire definition here. -->
+    <pluginManagement>
+      <plugins>
+
+        <!-- This plugin's configuration is used to store Eclipse m2e settings 
+          only. It has no influence on the Maven build itself. -->
+        <plugin>
+          <groupId>org.eclipse.m2e</groupId>
+          <artifactId>lifecycle-mapping</artifactId>
+          <version>1.0.0</version>
+          <configuration>
+            <lifecycleMappingMetadata>
+              <pluginExecutions>
+                <pluginExecution>
+                  <pluginExecutionFilter>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>native-maven-plugin</artifactId>
+                    <versionRange>[1.0-alpha-7,)</versionRange>
+                    <goals>
+                      <goal>javah</goal>
+                    </goals>
+                  </pluginExecutionFilter>
+                  <action>
+                    <ignore />
+                  </action>
+                </pluginExecution>
+                <pluginExecution>
+                  <pluginExecutionFilter>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <versionRange>[1.0.0,)</versionRange>
+                    <goals>
+                      <goal>copy-dependencies</goal>
+                      <goal>unpack</goal>
+                    </goals>
+                  </pluginExecutionFilter>
+                  <action>
+                    <ignore />
+                  </action>
+                </pluginExecution>
+              </pluginExecutions>
+            </lifecycleMappingMetadata>
+          </configuration>
+        </plugin>
+
+      </plugins>
+    </pluginManagement>
+
+  </build>
+
+
+  <!-- The modules (sometimes called subprojects) to build as a part of this 
+    project. Each module listed is a relative path to the directory containing 
+    the module. -->
+  <modules>
+    <module>jRSP</module>
+    <module>RSP</module>
+    <module>jOTDB3</module>
+    <module>jParmFacade</module>
+    <module>OTB</module>
+    <module>OTB-distribution</module>
+  </modules>
+
+
+  <!-- Default dependency information for projects that inherit from this 
+    one. The dependencies in this section are not immediately resolved. Instead, 
+    when a POM derived from this one declares a dependency described by a matching 
+    groupId and artifactId, the version and other values from this section are 
+    used for that dependency if they were not already specified. -->
+  <dependencyManagement>
+    <dependencies>
+
+      <!-- Child dependencies, childs use the same group-ID and version by default. -->
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>jRSP</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>RSP</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>jParmFacade</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>jOTDB3</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>OTB</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>OTB-distribution</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <!-- Import the group 'nl.astron.lofar.lib' -->
+      <dependency>
+        <groupId>nl.astron.lofar.lib</groupId>
+        <artifactId>lofar-lib-parent</artifactId>
+        <version>${lofar.lib.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+
+      <!-- External dependencies -->
+      <dependency>
+        <groupId>org.swinglabs</groupId>
+        <artifactId>swing-layout</artifactId>
+        <version>1.0.3</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.netbeans.external</groupId>
+        <artifactId>AbsoluteLayout</artifactId>
+        <version>RELEASE72</version>
+      </dependency>
+
+    </dependencies>
+  </dependencyManagement>
+
+
+  <!-- The lists of the remote repositories for discovering dependencies 
+    and extensions. -->
+  <repositories>
+
+    <!-- Extra maven repository for the Netbeans AbsoluteLayout dependency -->
+    <repository>
+      <id>netbeans</id>
+      <name>NetBeans IDE Repos</name>
+      <url>http://bits.netbeans.org/maven2</url>
+    </repository>
+
+  </repositories>
+
+</project>