diff --git a/.gitattributes b/.gitattributes
index 0d912aef7520fde72ea4a9bf02cd6b88a3dfb004..3038ecdc2d7ee6e6132ab2cff23a8d4a109dd15a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2434,13 +2434,13 @@ LCS/MessageBus/data/task_spec_system_xml_error.txt -text
 LCS/MessageBus/include/MessageBus/Protocols/TaskSpecificationSystem.h -text
 LCS/MessageBus/src/LofarMsgTemplate.txt -text
 LCS/MessageBus/src/Message.cc -text
-LCS/MessageBus/src/MessageRouter -text
-LCS/MessageBus/src/MessageRouter.conf.ccu001 -text
-LCS/MessageBus/src/MessageRouter.conf.ccu099 -text
 LCS/MessageBus/src/__init__.py -text
 LCS/MessageBus/src/msgbus.py -text
 LCS/MessageBus/test/tMessage.cc -text
 LCS/MessageBus/test/tMsgBus.cc -text
+LCS/MessageDaemons/src/MessageRouter -text
+LCS/MessageDaemons/src/MessageRouter.conf.ccu001 -text
+LCS/MessageDaemons/src/MessageRouter.conf.ccu099 -text
 LCS/Stream/include/Stream/SocketStream.tcc -text
 LCS/Tools/src/checkcomp.py -text
 LCS/Tools/src/countalllines -text
diff --git a/CEP/Pipeline/framework/lofarpipe/support/control.py b/CEP/Pipeline/framework/lofarpipe/support/control.py
index 2ef5cb20af9fc83cb3878c8fea8a695ee3cae413..f765eac9a286754dac47cbb79b9f60af408f708d 100644
--- a/CEP/Pipeline/framework/lofarpipe/support/control.py
+++ b/CEP/Pipeline/framework/lofarpipe/support/control.py
@@ -18,7 +18,7 @@ from lofar.parameterset import parameterset
 from lofar.messagebus.msgbus import ToBus
 from lofar.messagebus.protocols.taskfeedbackdataproducts import TaskFeedbackDataproducts
 from lofar.messagebus.protocols.taskfeedbackprocessing import TaskFeedbackProcessing
-from lofar.messagebus.protocols.taskfeedbackstatus import TaskFeedbackStatus
+from lofar.messagebus.protocols.taskfeedbackstate import TaskFeedbackState
 
 #                                             Standalone Pipeline Control System
 # ------------------------------------------------------------------------------
@@ -93,8 +93,8 @@ class control(StatefulRecipe):
         indicates failure.
         """
 
-        bus = ToBus("lofar.task.feedback.status")
-        msg = TaskFeedbackStatus(
+        bus = ToBus("lofar.task.feedback.state")
+        msg = TaskFeedbackState(
           "lofarpipe.support.control",
           "",
           "Status feedback from the pipeline framework",
diff --git a/CMake/LofarPackageList.cmake b/CMake/LofarPackageList.cmake
index 30dcea59e8b2bd51f1f09469347a90b443bcdf84..3cb5beaa5530c0c1a462884693a212bf432babed 100644
--- a/CMake/LofarPackageList.cmake
+++ b/CMake/LofarPackageList.cmake
@@ -61,6 +61,7 @@ if(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED)
   set(Blob_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Blob)
   set(Common_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Common)
   set(MessageBus_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MessageBus)
+  set(MessageDaemons_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MessageDaemons)
   set(MSLofar_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MSLofar)
   set(pyparameterset_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/pyparameterset)
   set(pytools_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/pytools)
diff --git a/LCS/CMakeLists.txt b/LCS/CMakeLists.txt
index 1e2c7e7324b5f4d9f3f2c30e2e92c8de83025974..eaf721a214020ba8ed6cfc3118664179f15592c1 100644
--- a/LCS/CMakeLists.txt
+++ b/LCS/CMakeLists.txt
@@ -6,6 +6,7 @@ lofar_add_package(ApplCommon)     # Application common stuff
 lofar_add_package(Blob)           # Binary Large Objects
 lofar_add_package(Common)         # Common stuff
 lofar_add_package(MessageBus)     # Support for QPID message exchange
+lofar_add_package(MessageDaemons) # Daemons to do message routing and handling
 lofar_add_package(MSLofar)        # MS for LOFAR based on ICD
 lofar_add_package(pyparameterset) # Python ParameterSet bindings
 lofar_add_package(pytools)        # Python tools
diff --git a/LCS/MessageBus/include/MessageBus/Protocols/CMakeLists.txt b/LCS/MessageBus/include/MessageBus/Protocols/CMakeLists.txt
index 3b735c1b2829bbe14fe9f92ccf89c578fe250db1..09c3af9f8cb3681828a27571c6429bd60acccf2c 100644
--- a/LCS/MessageBus/include/MessageBus/Protocols/CMakeLists.txt
+++ b/LCS/MessageBus/include/MessageBus/Protocols/CMakeLists.txt
@@ -9,6 +9,6 @@ execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
 install(FILES
   TaskFeedbackDataproducts.h
   TaskFeedbackProcessing.h
-  TaskFeedbackStatus.h
+  TaskFeedbackState.h
   TaskSpecificationSystem.h
   DESTINATION include/${PACKAGE_NAME}/Protocols)
diff --git a/LCS/MessageBus/include/MessageBus/Protocols/TaskFeedbackStatus.h b/LCS/MessageBus/include/MessageBus/Protocols/TaskFeedbackState.h
similarity index 88%
rename from LCS/MessageBus/include/MessageBus/Protocols/TaskFeedbackStatus.h
rename to LCS/MessageBus/include/MessageBus/Protocols/TaskFeedbackState.h
index 75a2a37031cba0261368e8f581b3dbcd8c8fed71..5777f4f6fd82dbc40ca3a3adae27f6360f21727e 100644
--- a/LCS/MessageBus/include/MessageBus/Protocols/TaskFeedbackStatus.h
+++ b/LCS/MessageBus/include/MessageBus/Protocols/TaskFeedbackState.h
@@ -1,4 +1,4 @@
-//# TaskFeedbackStatus.h: Protocol for emission of status feedback information
+//# TaskFeedbackState.h: Protocol for emission of status feedback information
 //#
 //# Copyright (C) 2015
 //# ASTRON (Netherlands Institute for Radio Astronomy)
@@ -32,10 +32,10 @@ namespace LOFAR {
 
 namespace Protocols {
 
-class TaskFeedbackStatus: public Message
+class TaskFeedbackState: public Message
 {
 public:
-  TaskFeedbackStatus(
+  TaskFeedbackState(
     // Name of the service or process producing this message
     const std::string &from,
 
@@ -56,7 +56,7 @@ public:
     from,
     forUser,
     summary,
-    "task.feedback.status",
+    "task.feedback.state",
     "1.0.0",
     momID,
     sasID)
@@ -70,14 +70,14 @@ public:
   }
 
   // Parse a message
-  TaskFeedbackStatus(const qpid::messaging::Message qpidMsg)
+  TaskFeedbackState(const qpid::messaging::Message qpidMsg)
   :
     Message(qpidMsg)
   {
   }
 
   // Read a message from disk (header + payload)
-  TaskFeedbackStatus(const std::string &rawContent)
+  TaskFeedbackState(const std::string &rawContent)
   :
     Message(rawContent)
   {
diff --git a/LCS/MessageBus/src/CMakeLists.txt b/LCS/MessageBus/src/CMakeLists.txt
index 4da6638e5d80114a5b74707e9ccbe78d766a441b..6bf9fa53be712a782f0bbf9bd8de896e68c945dd 100644
--- a/LCS/MessageBus/src/CMakeLists.txt
+++ b/LCS/MessageBus/src/CMakeLists.txt
@@ -3,7 +3,6 @@
 include(LofarPackageVersion)
 include(PythonInstall)
 
-
 set(messagebus_LIB_SRCS
   Package__Version.cc
   LogSink.cc
@@ -26,16 +25,3 @@ python_install(
   DESTINATION lofar/messagebus)
 
 add_subdirectory(protocols)
-
-install(FILES
-  MessageRouter
-  DESTINATION bin)
-
-file(GLOB MessageRouterConfs
-  MessageRouter.conf*
-  )
-
-install(FILES
-  ${MessageRouterConfs}
-  DESTINATION etc)
-
diff --git a/LCS/MessageBus/src/MessageRouter.conf.ccu099 b/LCS/MessageBus/src/MessageRouter.conf.ccu099
deleted file mode 100644
index 30feba9b434ec966404ddc780a28fc219f6533fa..0000000000000000000000000000000000000000
--- a/LCS/MessageBus/src/MessageRouter.conf.ccu099
+++ /dev/null
@@ -1,9 +0,0 @@
-[multicast]
-#
-# Routing tables
-#
-# source                             destinations
-lofar.task.feedback.dataproducts:  mom.feedback.dataproducts, otdb.task.feedback.dataproducts
-lofar.task.feedback.processing:    mom.feedback.processing,  otdb.task.feedback.processing 
-lofar.task.feedback.status:        mom.feedback.taskstate,   otdb.task.feedback.taskstate 
-lofar.task.specification.system:   mom.task.specification.system
diff --git a/LCS/MessageBus/src/protocols/CMakeLists.txt b/LCS/MessageBus/src/protocols/CMakeLists.txt
index 5b2538883241178d8d34783a54a1c472c62adf08..ee3c47119038645b810a0c166a29b07b37cb376d 100644
--- a/LCS/MessageBus/src/protocols/CMakeLists.txt
+++ b/LCS/MessageBus/src/protocols/CMakeLists.txt
@@ -6,5 +6,5 @@ python_install(
   __init__.py
   taskfeedbackdataproducts.py
   taskfeedbackprocessing.py
-  taskfeedbackstatus.py
+  taskfeedbackstate.py
   DESTINATION lofar/messagebus/protocols)
diff --git a/LCS/MessageBus/src/protocols/taskfeedbackstatus.py b/LCS/MessageBus/src/protocols/taskfeedbackstate.py
similarity index 85%
rename from LCS/MessageBus/src/protocols/taskfeedbackstatus.py
rename to LCS/MessageBus/src/protocols/taskfeedbackstate.py
index 8911e47f80e2fbde649a43dda44cda83d89e3d0d..c9d3c766ac2b830096998a8e8411772d4a407037 100644
--- a/LCS/MessageBus/src/protocols/taskfeedbackstatus.py
+++ b/LCS/MessageBus/src/protocols/taskfeedbackstate.py
@@ -27,13 +27,13 @@ LOFAR_STATUS_MSG_TEMPLATE = """
   <state/>
 </task>"""
 
-class TaskFeedbackStatus(lofar.messagebus.message.Message):
+class TaskFeedbackState(lofar.messagebus.message.Message):
   def __init__(self, from_, forUser, summary, momID, sasID, status):
-    super(TaskFeedbackStatus, self).__init__(
+    super(TaskFeedbackState, self).__init__(
       from_,
       forUser,
       summary,
-      "task.feedback.status",
+      "task.feedback.state",
       "1.0.0",
       momID,
       sasID)
@@ -49,7 +49,7 @@ class TaskFeedbackStatus(lofar.messagebus.message.Message):
       self.state = "aborted"
 
   def _property_list(self):
-     properties = super(TaskFeedbackStatus, self)._property_list()
+     properties = super(TaskFeedbackState, self)._property_list()
      
      properties.update( {
        "type_": "message.payload.task.type",
@@ -59,6 +59,6 @@ class TaskFeedbackStatus(lofar.messagebus.message.Message):
      return properties
 
 if __name__ == "__main__":
-    msg = TaskFeedbackStatus("FROM", "FORUSER", "SUMMARY", "11111", "22222", True)
+    msg = TaskFeedbackState("FROM", "FORUSER", "SUMMARY", "11111", "22222", True)
     print msg.document.toxml()
 
diff --git a/LCS/MessageDaemons/CMakeLists.txt b/LCS/MessageDaemons/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e7f292a5c6dff46d05688ea7b0f53f7874483476
--- /dev/null
+++ b/LCS/MessageDaemons/CMakeLists.txt
@@ -0,0 +1,5 @@
+# $Id$
+
+lofar_package(MessageDaemons 1.0 DEPENDS MessageBus)
+
+add_subdirectory(src)
diff --git a/LCS/MessageDaemons/src/CMakeLists.txt b/LCS/MessageDaemons/src/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..89821db1ee3b2a69c5c724524c9ea48865fec2db
--- /dev/null
+++ b/LCS/MessageDaemons/src/CMakeLists.txt
@@ -0,0 +1,20 @@
+# $Id$
+
+include(LofarPackageVersion)
+
+set(messagedaemons_LIB_SRCS
+  Package__Version.cc)
+
+lofar_add_library(messagedaemons ${messagedaemons_LIB_SRCS})
+
+install(FILES
+  MessageRouter
+  DESTINATION bin)
+
+file(GLOB MessageRouterConfs
+  MessageRouter.conf*
+  )
+
+install(FILES
+  ${MessageRouterConfs}
+  DESTINATION etc)
diff --git a/LCS/MessageBus/src/MessageRouter b/LCS/MessageDaemons/src/MessageRouter
similarity index 100%
rename from LCS/MessageBus/src/MessageRouter
rename to LCS/MessageDaemons/src/MessageRouter
diff --git a/LCS/MessageBus/src/MessageRouter.conf.ccu001 b/LCS/MessageDaemons/src/MessageRouter.conf.ccu001
similarity index 100%
rename from LCS/MessageBus/src/MessageRouter.conf.ccu001
rename to LCS/MessageDaemons/src/MessageRouter.conf.ccu001
diff --git a/LCS/MessageDaemons/src/MessageRouter.conf.ccu099 b/LCS/MessageDaemons/src/MessageRouter.conf.ccu099
new file mode 100644
index 0000000000000000000000000000000000000000..3f77c6900075c902dc08ba570e040e2af28ca839
--- /dev/null
+++ b/LCS/MessageDaemons/src/MessageRouter.conf.ccu099
@@ -0,0 +1,9 @@
+[multicast]
+#
+# Routing tables
+#
+# source                             destinations
+lofar.task.feedback.dataproducts:  mom.task.feedback.dataproducts, otdb.task.feedback.dataproducts
+lofar.task.feedback.processing:    mom.task.feedback.processing,   otdb.task.feedback.processing 
+lofar.task.feedback.state:         mom.task.feedback.state,        mac.task.feedback.state 
+lofar.task.specification.system:   mom.task.specification.system
diff --git a/MAC/APL/CEPCU/src/OnlineControl/OnlineControl.conf b/MAC/APL/CEPCU/src/OnlineControl/OnlineControl.conf
index 9c9faf5600ea30b0d78ff5294753f14845540bc0..c0c088bf99f5a4a1f058c99265d2713b63ed7249 100644
--- a/MAC/APL/CEPCU/src/OnlineControl/OnlineControl.conf
+++ b/MAC/APL/CEPCU/src/OnlineControl/OnlineControl.conf
@@ -6,7 +6,7 @@
 OTDBconfFile		= SASGateway.conf
 
 # Queue to listen at.
-TaskStateQueue	= otdb.feedback.taskstate
+TaskStateQueue	= mac.task.feedback.state
 
 # Max time to wait for response from Python Framework when quiting
 emergencyTimeout	= 1h
diff --git a/MAC/APL/CEPCU/src/PythonControl/PythonControl.conf b/MAC/APL/CEPCU/src/PythonControl/PythonControl.conf
index b759054951a9e4b6c579ca89ff9464d36315e95a..674e9fc88ab3e58d75bb4fa78b32b8b3dc28ea40 100644
--- a/MAC/APL/CEPCU/src/PythonControl/PythonControl.conf
+++ b/MAC/APL/CEPCU/src/PythonControl/PythonControl.conf
@@ -3,7 +3,7 @@
 #
 
 # Queue to listen at.
-TaskStateQueue	= otdb.feedback.taskstate
+TaskStateQueue	= mac.task.feedback.state
 
 # Max time to wait for response from Python Framework when quiting
 emergencyTimeout	= 1h
diff --git a/RTCP/Cobalt/GPUProc/src/CMakeLists.txt b/RTCP/Cobalt/GPUProc/src/CMakeLists.txt
index 62d944e74d3f8553863ed907fa51425084417b53..da6eeee66c2931fee22f2d14c7bb88f4fbeb8a60 100644
--- a/RTCP/Cobalt/GPUProc/src/CMakeLists.txt
+++ b/RTCP/Cobalt/GPUProc/src/CMakeLists.txt
@@ -119,7 +119,7 @@ endif()
 
 lofar_add_bin_program(mpi_node_list Station/mpi_node_list.cc)
 lofar_add_bin_program(station_stream Station/station_stream.cc)
-lofar_add_bin_program(send_status send_status.cc)
+lofar_add_bin_program(send_state send_state.cc)
 
 # install scripts used to run an observation under bin
 install(PROGRAMS
diff --git a/RTCP/Cobalt/GPUProc/src/scripts/runObservation.sh b/RTCP/Cobalt/GPUProc/src/scripts/runObservation.sh
index 3b3e6443873ab93e8b1e448cf007f55eb7079b1c..710d122818b080f6ccef9f87ffed07185579a807 100755
--- a/RTCP/Cobalt/GPUProc/src/scripts/runObservation.sh
+++ b/RTCP/Cobalt/GPUProc/src/scripts/runObservation.sh
@@ -12,7 +12,7 @@
 
 function error {
   echo -e "$@" >&2
-  sendback_status 1
+  sendback_state 1
   exit 1
 }
 
@@ -85,13 +85,13 @@ function command_retry {
   done
 }
 
-# Send the result status back to LOFAR (MAC, MoM)
+# Send the result state back to LOFAR (MAC, MoM)
 #
 # to report success:
 #   sendback_status 0
 # to report failure:
 #   sendback_status 1
-function sendback_status {
+function sendback_state {
   OBSRESULT="$1"
 
   if [ $OBSRESULT -eq 0 ]
@@ -104,7 +104,7 @@ function sendback_status {
     SUCCESS=0
   fi
 
-  send_status "$PARSET" $SUCCESS
+  send_state "$PARSET" $SUCCESS
 }
 
 #############################
@@ -438,7 +438,7 @@ fi
 # Post-process the observation
 # ******************************
 
-sendback_status "$OBSRESULT"
+sendback_state "$OBSRESULT"
 
 # clean up outputProc children
 echo "Allowing 120 second for normal end of outputProc"
diff --git a/RTCP/Cobalt/GPUProc/src/send_status.cc b/RTCP/Cobalt/GPUProc/src/send_state.cc
similarity index 89%
rename from RTCP/Cobalt/GPUProc/src/send_status.cc
rename to RTCP/Cobalt/GPUProc/src/send_state.cc
index 928be9e3bdb781a442ecf4da6884610be0ad28f9..777838919f6234c90f29b68e54e3021c4d87e439 100644
--- a/RTCP/Cobalt/GPUProc/src/send_status.cc
+++ b/RTCP/Cobalt/GPUProc/src/send_state.cc
@@ -1,4 +1,4 @@
-//# send_status.cc: Send lofar.task.feedback.status information
+//# send_state.cc: Send lofar.task.feedback.status information
 //# Copyright (C) 2012-2013  ASTRON (Netherlands Institute for Radio Astronomy)
 //# P.O. Box 2, 7990 AA Dwingeloo, The Netherlands
 //#
@@ -23,7 +23,7 @@
 #include <Common/LofarLogger.h>
 #include <CoInterface/Parset.h>
 #include <MessageBus/MsgBus.h>
-#include <MessageBus/Protocols/TaskFeedbackStatus.h>
+#include <MessageBus/Protocols/TaskFeedbackState.h>
 
 #include <boost/format.hpp>
 
@@ -74,12 +74,12 @@ int main(int argc, char **argv)
   int success = atoi(argv[optind+1]);
 
   // send status feedback
-  ToBus bus("lofar.task.feedback.status");
+  ToBus bus("lofar.task.feedback.state");
 
-  Protocols::TaskFeedbackStatus msg(
-    "Cobalt/GPUProc/sendStatus",
+  Protocols::TaskFeedbackState msg(
+    "Cobalt/GPUProc/send_state",
     "",
-    "Status feedback",
+    "State feedback",
     str(format("%s") % parset.settings.momID),
     str(format("%s") % parset.settings.observationID),
     success);
diff --git a/SubSystems/CCU_MAC/CMakeLists.txt b/SubSystems/CCU_MAC/CMakeLists.txt
index 3386fbd5067dc0bbe023eeb8a66dd46d6328386f..e8ddd38992d67474da2bcd49cf83d327eed2217e 100644
--- a/SubSystems/CCU_MAC/CMakeLists.txt
+++ b/SubSystems/CCU_MAC/CMakeLists.txt
@@ -1,5 +1,5 @@
 # $Id$
 
 lofar_package(CCU_MAC 
-  DEPENDS CEPCU CUDaemons CURTDBDaemons StaticMetaData)
+  DEPENDS CEPCU CUDaemons CURTDBDaemons StaticMetaData MessageDaemons)