diff --git a/SAS/MoM/MoMQueryService/momprojectdetailsquery.py b/SAS/MoM/MoMQueryService/momprojectdetailsquery.py
index 6251f8460a0476d8c014aa1c6601f3fee7b93839..6f9964e892ad2eb38d91b224cf914d06696c96c6 100755
--- a/SAS/MoM/MoMQueryService/momprojectdetailsquery.py
+++ b/SAS/MoM/MoMQueryService/momprojectdetailsquery.py
@@ -21,7 +21,7 @@ def getProjectDetails(ids, busname='momqueryservice'):
     ids = [str(x) for x in ids]
     ids_string = ', '.join(ids)
 
-    with RPC(busname, 'GetProjectDetails', timeout=10) as getProjectDetails:
+    with RPC('GetProjectDetails', busname=busname, timeout=10) as getProjectDetails:
         res, status = getProjectDetails(ids_string)
 
         if status != 'OK':
diff --git a/SAS/MoM/MoMQueryService/momqueryservice.py b/SAS/MoM/MoMQueryService/momqueryservice.py
index f91b7963063fce42c958145beef6890c4a421b55..ecf50b72ad054472d9285862be96095d66ddfb28 100755
--- a/SAS/MoM/MoMQueryService/momqueryservice.py
+++ b/SAS/MoM/MoMQueryService/momqueryservice.py
@@ -23,6 +23,8 @@ import sys
 import logging
 from mysql import connector
 from lofar.messaging import Service
+from lofar.messaging.Service import MessageHandlerInterface
+from lofar.common.util import waitForInterrupt
 
 logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
 logger=logging.getLogger("momqueryservice")
@@ -56,14 +58,19 @@ class MoMDatabaseWrapper:
         return cursor.fetchall()
 
 
-class ProjectDetailsQueryHandler:
+class ProjectDetailsQueryHandler(MessageHandlerInterface):
     '''handler class for details query in mom db
     :param MoMDatabaseWrapper momdb inject database access via wrapper
     '''
-    def __init__(self, momdb):
-        self.momdb = momdb
+    def __init__(self, **kwargs):
+        MessageHandlerInterface.__init__(self, **kwargs)
+        self.momreadonly_passwd = kwargs.pop("momreadonly_passwd", '')
+        self.kwargs = kwargs
 
-    def __call__(self, text):
+    def prepare_loop(self):
+        self.momdb = MoMDatabaseWrapper(self.momreadonly_passwd)
+
+    def handle_message(self, text):
         '''The actual handler function.
         Parses the message text, converts it to csv id string,
         looks up the project(s) details via the momdb wrapper
@@ -96,23 +103,22 @@ class ProjectDetailsQueryHandler:
 
 def createService(busname='momqueryservice',
                   momreadonly_passwd='',
-                  momdb=None):
+                  handler=None):
     '''create the GetProjectDetails on given busname
     :param string busname: name of the bus on which this service listens
     :param string momreadonly_passwd: the momreadonly passwd.
-    :param MoMDatabaseWrapper momdb: a MoM db wrapper like object which can do
-    the actual query. If None provide, the default MoMDatabaseWrapper is created.
+    :param ProjectDetailsQueryHandler handler: ProjectDetailsQueryHandler class Type, or mock like type
     :rtype: lofar.messaging.Service'''
 
-    if not momdb:
-        momdb = MoMDatabaseWrapper(momreadonly_passwd)
+    if not handler:
+        handler = ProjectDetailsQueryHandler
 
-    handler = ProjectDetailsQueryHandler(momdb)
-    return Service(busname,
-                   'GetProjectDetails',
+    return Service('GetProjectDetails',
                    handler,
+                   busname=busname,
                    startonwith=True,
-                   numthreads=1)
+                   numthreads=1,
+                   handler_args={'momreadonly_passwd':momreadonly_passwd})
 
 
 def main():
@@ -127,8 +133,8 @@ def main():
     from lofar.mom.momqueryservice.config import momreadonly_passwd
 
     # start the service and listen.
-    with createService('momqueryservice', momreadonly_passwd) as service:
-        service.WaitForInterrupt()
+    with createService('momqueryservice', momreadonly_passwd):
+        waitForInterrupt()
 
 if __name__ == '__main__':
     main()
diff --git a/SAS/MoM/MoMQueryService/test/test_momqueryservice.py b/SAS/MoM/MoMQueryService/test/test_momqueryservice.py
index 9094a5db13ce13e07a8825459e4c91cf3edaae7d..36d468451c9deff34c0fcfe68ad2c40aa0b6a6cf 100755
--- a/SAS/MoM/MoMQueryService/test/test_momqueryservice.py
+++ b/SAS/MoM/MoMQueryService/test/test_momqueryservice.py
@@ -21,7 +21,8 @@
 
 import unittest
 import uuid
-from lofar.mom.momqueryservice import momqueryservice
+from lofar.mom.momqueryservice.momqueryservice import createService
+from lofar.mom.momqueryservice.momqueryservice import ProjectDetailsQueryHandler
 from lofar.mom.momqueryservice import momprojectdetailsquery
 from qpid.messaging import Connection
 from qpidtoollibs import BrokerAgent
@@ -44,9 +45,12 @@ try:
         def getProjectDetails(self, mom_ids_str):
             return [{'project_mom2id': '4567', 'project_name': 'foo', 'project_description': 'bar', 'object_mom2id': testid}]
 
+    class MockProjectDetailsQueryHandler(ProjectDetailsQueryHandler):
+        def prepare_loop(self):
+            self.momdb = MockMoMDatabaseWrapper()
+
     # inject the mock into the service
-    mock_momdb=MockMoMDatabaseWrapper()
-    with momqueryservice.createService(busname, momdb=mock_momdb):
+    with createService(busname, handler=MockProjectDetailsQueryHandler):
 
         class TestLTAStorageDb(unittest.TestCase):
             def testProjectDetailsQuery(self):