diff --git a/Changelog.md b/Changelog.md
index eafddd432753310d8eb89e9aadd5c4288e48c7db..c6b6815187c682baebf4b883c3f1ee75631dc720 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,9 +2,12 @@
 
 All notable changes to this project will be documented in this file.
 
+## [0.50] - 2020-08-14
+- performance improvment for /poller/services
+
 ## [0.49] - 2020-08-13
-- performance improvement /data/interfaces
-- refactored a new method for testability
+- performance improvement for /data/interfaces
+- refactored service category sorting for better testability
 
 ## [0.48] - 2020-07-02
 - recover update gracefully in case of Kombu exceptions
diff --git a/inventory_provider/routes/poller.py b/inventory_provider/routes/poller.py
index bbc3b5d5720246d9639f48dbf05609940c5e9f4e..2d9c122b06ce99a316fb9ed108b4f9e6e5b87636 100644
--- a/inventory_provider/routes/poller.py
+++ b/inventory_provider/routes/poller.py
@@ -1,6 +1,6 @@
 import json
 
-from flask import Blueprint, Response, jsonify
+from flask import Blueprint, Response, jsonify, current_app
 from lxml import etree
 from inventory_provider import juniper
 from inventory_provider.routes import common
@@ -88,10 +88,12 @@ def poller_interface_oids(hostname):
 @common.require_accepts_json
 def service_category_interfaces(category):
 
-    def _interfaces(rc, cat):
-        for k in rc.scan_iter(f'interface-services:{cat}:*'):
-            cached_ifc = rc.get(k.decode('utf-8')).decode('utf-8')
-            cached_ifc = json.loads(cached_ifc)
+    def _interfaces(cat):
+        config_params = current_app.config['INVENTORY_PROVIDER_CONFIG']
+        for doc in common.load_json_docs(
+                config_params=config_params,
+                key_pattern=f'interface-services:{cat}:*'):
+            cached_ifc = doc['value']
             basic_ifc_info = dict()
             for k in ['description', 'interface', 'router']:
                 basic_ifc_info[k] = cached_ifc[k]
@@ -110,15 +112,17 @@ def service_category_interfaces(category):
     result = r.get(cache_key)
 
     if result:
-        result = json.loads(result.decode('utf-8'))
+        result = result.decode('utf-8')
     else:
-        result = list(_interfaces(r, category))
-        if result:
-            r.set(cache_key, json.dumps(result).encode('utf-8'))
-        else:
+        result = list(_interfaces(category))
+        if not result:
             return Response(
                 response=f'no info available for service category {category}',
                 status=404,
                 mimetype="text/html")
 
-    return jsonify(result)
+        result = json.dumps(result)
+        # cache this data for the next call
+        r.set(cache_key, result.encode('utf-8'))
+
+    return Response(result, mimetype="application/json")
diff --git a/setup.py b/setup.py
index fb9c8d229035a703a4b6243f7b29d24810e9f437..529b3fb4a46cbe5add42d6e53395e457388e3b05 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
 
 setup(
     name='inventory-provider',
-    version="0.50",
+    version="0.51",
     author='GEANT',
     author_email='swd@geant.org',
     description='Dashboard inventory provider',