diff --git a/.gitattributes b/.gitattributes
index 9e1de74b955851caa25386970bdc9d46b8805953..afffabe1f55b77946da22012f6c6c5d1e415096b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2732,6 +2732,7 @@ LCU/PPSTune/doc/source/instructions-menno.rst -text
 LCU/PPSTune/doc/source/ppstune.rst -text
 LCU/PPSTune/doc/source/readme.rst -text
 LCU/PPSTune/ppstune.sh -text svneol=unset#text/x-shellscript
+LCU/PPSTune/ppstune/CMakeLists.txt -text
 LCU/PPSTune/ppstune/__init__.py -text
 LCU/PPSTune/ppstune/plots.py -text
 LCU/PPSTune/ppstune/ppstune.py -text
diff --git a/CEP/DP3/CMakeLists.txt b/CEP/DP3/CMakeLists.txt
index 7c693c95b83204d161169f818b25eee11332a6b6..0a0dd7fac7585ec90ddbaed69e31e0efc04c4832 100644
--- a/CEP/DP3/CMakeLists.txt
+++ b/CEP/DP3/CMakeLists.txt
@@ -5,5 +5,5 @@ lofar_add_package(TestDynDPPP)
 lofar_add_package(PythonDPPP)
 lofar_add_package(DPPP_AOFlag)
 lofar_add_package(SPW_Combine SPWCombine)
-lofar_add_package(AOFlagger)
+#lofar_add_package(AOFlagger)
 
diff --git a/CEP/Pipeline/recipes/sip/pipeline.cfg.in b/CEP/Pipeline/recipes/sip/pipeline.cfg.in
index 01ae7714f0d743792739ace5dbea522424cf8b78..d4b175ad9e545394dac4ff7a30a4e7c13ab14fb5 100644
--- a/CEP/Pipeline/recipes/sip/pipeline.cfg.in
+++ b/CEP/Pipeline/recipes/sip/pipeline.cfg.in
@@ -4,6 +4,7 @@ casaroot = @CASACORE_ROOT_DIR@
 pyraproot = @PYRAP_ROOT_DIR@
 hdf5root = $ENV{HDF5_ROOT}
 wcsroot = @WCSLIB_ROOT_DIR@
+aoflaggerroot=@AOFLAGGER_ROOT_DIR@
 pythonpath = @PYTHON_INSTALL_DIR@
 runtime_directory = %(lofarroot)s/var/run/pipeline
 recipe_directories = [%(pythonpath)s/lofarpipe/recipes]
diff --git a/CEP/Pipeline/recipes/sip/tasks.cfg.in b/CEP/Pipeline/recipes/sip/tasks.cfg.in
index 0cb43042787da8558dc0a9b26b0ad7ae930bde1e..dcc46ffb7be3487a2cf3bd2dd21c223828ee8d91 100644
--- a/CEP/Pipeline/recipes/sip/tasks.cfg.in
+++ b/CEP/Pipeline/recipes/sip/tasks.cfg.in
@@ -50,7 +50,7 @@ mapfile = %(runtime_directory)s/%(job_name)s/mapfiles/instrument.mapfile
 
 [rficonsole]
 recipe = rficonsole
-executable = %(lofarroot)s/bin/rficonsole
+executable = %(aoflaggerroot)s/bin/aoflagger
 
 [get_metadata]
 recipe = get_metadata
@@ -61,7 +61,7 @@ ndppp_exec = %(lofarroot)s/bin/NDPPP
 asciistat_executable = %(lofarroot)s/bin/asciistats.py
 statplot_executable = %(lofarroot)s/bin/statsplot.py
 msselect_executable = %(casaroot)s/bin/msselect
-rficonsole_executable = %(lofarroot)s/bin/rficonsole
+rficonsole_executable = %(aoflaggerroot)s/bin/aoflagger
 nthreads = 8
 
 [long_baseline]
@@ -70,7 +70,7 @@ ndppp_exec = %(lofarroot)s/bin/NDPPP
 asciistat_executable = %(lofarroot)s/bin/asciistats.py
 statplot_executable = %(lofarroot)s/bin/statsplot.py
 msselect_executable = %(casaroot)s/bin/msselect
-rficonsole_executable = %(lofarroot)s/bin/rficonsole
+rficonsole_executable = %(aoflaggerroot)s/bin/aoflagger
 nproc = 1
 nthreads = 8
 
diff --git a/LCS/MessageBus/src/Util.cc b/LCS/MessageBus/src/Util.cc
index 9c18c62c28ae29b22d08947e178df7988b604a17..d0eb919700f62521ea777205bba69e7ebbb51222 100644
--- a/LCS/MessageBus/src/Util.cc
+++ b/LCS/MessageBus/src/Util.cc
@@ -26,7 +26,8 @@ namespace LOFAR {
 
   std::string queue_prefix()
   {
-    string lofarenv = getenv_str("LOFARENV");
+    // disable LOFARENV for 2.16 release
+    string lofarenv = "PRODUCTION"; //getenv_str("LOFARENV");
     string queueprefix = getenv_str("QUEUE_PREFIX");
 
     if (lofarenv == "PRODUCTION") {
diff --git a/LCS/MessageBus/src/messagebus.py b/LCS/MessageBus/src/messagebus.py
index f6c1de6a37dbd008dc70acd347d2e7f2a4e61103..99cd046e97d424d5d9597b35c858d4a47931fae1 100644
--- a/LCS/MessageBus/src/messagebus.py
+++ b/LCS/MessageBus/src/messagebus.py
@@ -97,7 +97,8 @@ class Session:
         return "%s%s; {%s}" % (self._queue_prefix(), queue, options)
 
     def _queue_prefix(self):
-        lofarenv = os.environ.get("LOFARENV", "")
+        # disable LOFARENV for 2.16 release
+        lofarenv = "PRODUCTION" # os.environ.get("LOFARENV", "")
         queueprefix = os.environ.get("QUEUE_PREFIX", "")
 
         if lofarenv == "PRODUCTION":
diff --git a/LCU/PPSTune/CMakeLists.txt b/LCU/PPSTune/CMakeLists.txt
index a6ad8cee00d22b58eac16b76cb475978b69c0337..e70eac3a4392d43a2c914667d75ff52bdc246b86 100644
--- a/LCU/PPSTune/CMakeLists.txt
+++ b/LCU/PPSTune/CMakeLists.txt
@@ -2,6 +2,8 @@
 
 lofar_package(PPSTune 1.0)
 
+add_subdirectory(ppstune)
+
 # Install files matching regex pattern in current directory and below
 install(DIRECTORY . 
   DESTINATION sbin
diff --git a/LCU/PPSTune/ppstune/CMakeLists.txt b/LCU/PPSTune/ppstune/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6533322552851dbf75eee11c4c495470f47588f0
--- /dev/null
+++ b/LCU/PPSTune/ppstune/CMakeLists.txt
@@ -0,0 +1,6 @@
+# $Id: CMakeLists.txt 26657 2013-09-24 11:35:59Z schoenmakers $
+
+# Install files matching regex pattern in current directory and below
+install(FILES
+  ppstune.py
+  DESTINATION sbin)
diff --git a/MAC/APL/MainCU/src/MACScheduler/MACScheduler.conf.in b/MAC/APL/MainCU/src/MACScheduler/MACScheduler.conf.in
index bbccffe83410a4f6637dca32a92ebc7f4bc41b9b..fd6dd597002a64673a96b3b0da3ea8272152e647 100644
--- a/MAC/APL/MainCU/src/MACScheduler/MACScheduler.conf.in
+++ b/MAC/APL/MainCU/src/MACScheduler/MACScheduler.conf.in
@@ -33,4 +33,4 @@ ParsetQueuename = lofar.task.specification.system
 
 # Pipelines on cluster X can be ignored by the MACScheduler with this key.
 # use e.g. 'CEP2' or 'CEP4'
-excludePipelinesOnThisCluster = '!CEP4'
+excludePipelinesOnThisCluster = 'CEP4'
diff --git a/README b/README
index 59c82bd7bf3f428f887f9bc3d2ffa06170e6c656..89b36ddaf5a130bf9b9c3faa574ec9c06c964960 100644
--- a/README
+++ b/README
@@ -13,7 +13,7 @@ Repository web interface: https://svn.astron.nl/viewvc/LOFAR/
 
 
 Top-level LOFAR Project Content (incomplete summary)
--------------------------------
+--------------------------------
 
 CEP/			CEntral Processing software
 CEP/Calibration/	Calibration: BBS, antenna and station responses
diff --git a/SAS/ResourceAssignment/ResourceAssignmentEstimator/service.py b/SAS/ResourceAssignment/ResourceAssignmentEstimator/service.py
index 55cb19d86e5a8c6a01280c1da45e3d64c6c9596c..baafa76901704c0b2a162e043ef5eb9543e8dc6a 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEstimator/service.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentEstimator/service.py
@@ -18,10 +18,10 @@ class ResourceEstimatorHandler(MessageHandlerInterface):
     def __init__(self, **kwargs):
         super(ResourceEstimatorHandler, self).__init__(**kwargs)
         self.observation = ObservationResourceEstimator()
-        self.longbaseline_pipeline = LongBaselinePipelineResourceEstimator()
-        self.calibration_pipeline = CalibrationPipelineResourceEstimator()
-        self.pulsar_pipeline = PulsarPipelineResourceEstimator()
-        self.imaging_pipeline = ImagePipelineResourceEstimator()
+        #self.longbaseline_pipeline = LongBaselinePipelineResourceEstimator()
+        #self.calibration_pipeline = CalibrationPipelineResourceEstimator()
+        #self.pulsar_pipeline = PulsarPipelineResourceEstimator()
+        #self.imaging_pipeline = ImagePipelineResourceEstimator()
 
     def handle_message(self, content):
         specification_tree = content["specification_tree"]
@@ -48,6 +48,7 @@ class ResourceEstimatorHandler(MessageHandlerInterface):
             for branch in specification_tree['predecessors']:
                 branch_estimates.update(self.get_subtree_estimate(branch))
             logger.info(str(branch_estimates)) 
+
             if specification_tree['task_subtype'] in ['averaging pipeline', 'calibration pipeline']:
                 for id, estimate in branch_estimates.iteritems():
                     input_files = {}
@@ -59,28 +60,30 @@ class ResourceEstimatorHandler(MessageHandlerInterface):
                     elif 'im' in estimate.values()[0]['storage']['output_files']:
                         input_files['im'] = estimate.values()[0]['storage']['output_files']['im']
                 return {str(otdb_id): self.add_id(self.calibration_pipeline.verify_and_estimate(parset, input_files), otdb_id)}
-                
+
             if specification_tree['task_subtype'] in ['imaging pipeline', 'imaging pipeline msss']:
                 if len(branch_estimates) > 1:
                     logger.error('Imaging pipeline %d should not have multiple predecessors: %s' % (otdb_id, branch_estimates.keys() ) )
                 input_files = branch_estimates.values()[0].values()[0]['storage']['output_files']
                 return {str(otdb_id): self.add_id(self.imaging_pipeline.verify_and_estimate(parset, input_files), otdb_id)}
-                
+
+
             if specification_tree['task_subtype'] in ['long baseline pipeline']:
                 if len(branch_estimates) > 1:
                     logger.error('Long baseline pipeline %d should not have multiple predecessors: %s' % (otdb_id, branch_estimates.keys() ) )
                 input_files = branch_estimates.values()[0].values()[0]['storage']['output_files']
                 return {str(otdb_id): self.add_id(self.longbaseline_pipeline.verify_and_estimate(parset, input_files), otdb_id)}
 
+
             if specification_tree['task_subtype'] in ['pulsar pipeline']:
                 if len(branch_estimates) > 1:
                     logger.error('Pulsar pipeline %d should not have multiple predecessors: %s' % (otdb_id, branch_estimates.keys() ) )
                 input_files = branch_estimates.values()[0].values()[0]['storage']['output_files']
                 return {str(otdb_id): self.add_id(self.pulsar_pipeline.verify_and_estimate(parset, input_files), otdb_id)}
             
-        else: # reservation, maintenance, system tasks?
-            logger.info("It's not a pipeline or observation: %s" % otdb_id)
-            return {str(otdb_id): {}}
+        #else: # reservation, maintenance, system tasks?
+            #logger.info("It's not a pipeline or observation: %s" % otdb_id)
+            #return {str(otdb_id): {}}
 
     def _get_estimated_resources(self, specification_tree):
         """ Input is like: