diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py
index 863f1f0cbb2c50fc44d7b8685631b2f18b5e3115..143960335200928d8b9e14edb14f7a2f0eea65a5 100644
--- a/inventory_provider/routes/classifier.py
+++ b/inventory_provider/routes/classifier.py
@@ -43,16 +43,10 @@ def after_request(resp):
     return common.after_request(resp)
 
 
-def base_interface_name(interface):
-    m = re.match(r'(.*?)(\.\d+)?$', interface)
-    assert m  # sanity: anything should match
-    return m.group(1)
-
-
 def related_interfaces(hostname, interface):
     r = common.get_current_redis()
     prefix = 'netconf-interfaces:%s:' % hostname
-    for k in r.keys(prefix + base_interface_name(interface) + '.*'):
+    for k in r.keys(prefix + interface + '.*'):
         k = k.decode('utf-8')
         assert k.startswith(prefix)  # sanity
         assert len(k) > len(prefix)  # sanity (contains at least an interface)
@@ -93,33 +87,12 @@ def get_juniper_link_info(source_equipment, interface):
         result = {}
         top_level_services = []
 
-        def _get_top_level_services(circuit_id):
-            tls = []
-            results = r.get("opsdb:services:children:{}".format(circuit_id))
-            if results:
-                results = json.loads(results.decode('utf-8'))
-
-                for c in results:
-                    if circuit_id == c['child_circuit_id']:
-                        tls.append(
-                            {'name': c['parent_circuit'],
-                             'status': c['parent_circuit_status']})
-                    else:
-                        temp_parents = \
-                            _get_top_level_services(c['child_circuit_id'])
-                        if not temp_parents:
-                            tls.append(
-                                {'name': c['parent_circuit'],
-                                 'status': c['parent_circuit_status']})
-                        tls.extend(temp_parents)
-            return tls
-
         services = r.get(
             'opsdb:interface_services:%s:%s' % (source_equipment, interface))
         if services:
             result['services'] = json.loads(services.decode('utf=8'))
             for s in result['services']:
-                top_level_services.extend(_get_top_level_services(s['id']))
+                top_level_services.extend(get_top_level_services(s['id'], r))
 
         ifc_info = r.get(
             'netconf-interfaces:%s:%s' % (source_equipment, interface))
@@ -140,26 +113,21 @@ def get_juniper_link_info(source_equipment, interface):
             for related in related_interfaces(source_equipment, interface):
                 rs = r.get('opsdb:interface_services:%s:%s'
                            % (source_equipment, related))
+                all_rs = []
                 if rs:
                     for s in json.loads(rs.decode('utf-8')):
                         top_level_services.extend(
-                            _get_top_level_services(s['id']))
-                        yield {'name': s['name'], 'status': s['status']}
+                            get_top_level_services(s['id'], r))
+                        if s['circuit_type'].lower() == 'service':
+                            all_rs.append(
+                                {'name': s['name'], 'status': s['status']})
+                return all_rs
 
-        related_services = list(_related_services())
+        related_services = _related_services()
         if related_services:
             related_services.extend(top_level_services)
             result['related-services'] = related_services
 
-        # no longer possible, now that at least 'interface' is
-        # returned for unknown interfaces
-        # if not result:
-        #     return Response(
-        #         response="no available info for {} {}".format(
-        #             source_equipment, interface),
-        #         status=404,
-        #         mimetype="text/html")
-
         result = json.dumps(result)
         # cache this data for the next call
         r.set(cache_key, result.encode('utf-8'))
@@ -290,12 +258,6 @@ def peer_info(address):
         if interfaces:
             result['interfaces'] = interfaces
 
-        # if not result:
-        #     return Response(
-        #         response='no peering info found for %s' % address,
-        #         status=404,
-        #         mimetype="text/html")
-
         result = json.dumps(result)
         # cache this data for the next call
         r.set(cache_key, result.encode('utf-8'))
diff --git a/test/test_classifier_utilities.py b/test/test_classifier_utilities.py
index 4075e69054aa9fe0f30b00eb7f614211223c0bda..80308e574c64f570849372b5d8168a461a161d46 100644
--- a/test/test_classifier_utilities.py
+++ b/test/test_classifier_utilities.py
@@ -1,29 +1,7 @@
-import pytest
-from inventory_provider.routes import classifier
 from inventory_provider.routes.classifier import get_top_level_services
 from inventory_provider.tasks import common
 
 
-@pytest.mark.parametrize('interface_name,base_name', [
-    ('ae0', 'ae0'),
-    ('ae0.0', 'ae0'),
-    ('ae1.0', 'ae1'),
-    ('ae10.2603', 'ae10'),
-    ('et-3/1/2', 'et-3/1/2'),
-    ('et-3/1/2.100', 'et-3/1/2'),
-    ('xe-2/1/0', 'xe-2/1/0'),
-    ('xe-2/1/0.933', 'xe-2/1/0'),
-
-    # degenerate cases ... check expected regex behavior
-    ('xe-2/1/0.933.933', 'xe-2/1/0.933'),
-    (' sss.333.aaa ', ' sss.333.aaa '),
-    (' sss.333.aaa .999', ' sss.333.aaa ')
-]
-)
-def test_base_interface_name(interface_name, base_name):
-    assert classifier.base_interface_name(interface_name) == base_name
-
-
 # todo - not too keen on this as it relies on the extracted opsdb data, which
 #        could change and lead to this test failing
 def test_get_top_level_circuits(mocked_redis):