diff --git a/config.py b/config.py
index 62b7d14074182d415965f88b198cdbb4a43a2dc9..0384fc7c9799b2b357d7fffcc1d590a904e45524 100644
--- a/config.py
+++ b/config.py
@@ -58,6 +58,7 @@ def walk(agent_hostname, community, base_oid):
             # print("\toid: '%s', val: '%s'" % (
             #     oid.prettyPrint(), val.prettyPrint()))
 
+
 def _validate_config(ctx, param, value):
     """
     loads, validates and returns configuration parameters
@@ -135,6 +136,13 @@ def _db_test(db, router):
             print(absid)
 
 
+def _v6address_oid2str(dotted_decimal):
+    hex_params = []
+    for dec in re.split(r'\.', dotted_decimal):
+        hex_params.append("%02x" % int(dec))
+    return ":".join(hex_params)
+
+
 def get_router_interfaces(router):
     with open("oid_list.conf") as f:
         oid_map = load_oids(f)
@@ -146,62 +154,42 @@ def get_router_interfaces(router):
         details[name] = list(details[name])
         print(details[name])
 
-    # assert len(details["v4Address"]) == len(details["v4Mask"])
-    # assert len(details["v4Address"]) == len(details["v4InterfaceOID"])
-
-    interface_names = dict([x["oid"], x["value"]]
-            for x in details["v4InterfaceName"])
+    v4IfcNames = {}
+    for v4IfcName in details["v4InterfaceName"]:
+        m = re.match(r'.*\.(\d+)$', v4IfcName["oid"])
+        assert m, "sanity failure parsing oid: " + v4IfcName["oid"]
+        v4IfcNames[m.group(1)] = v4IfcName["value"]
 
     interfaces = []
     for v4Address, v4Mask, v4InterfaceOID in zip(
             details["v4Address"],
             details["v4Mask"],
             details["v4InterfaceOID"]):
-        ifc_oid = oid_map["v4InterfaceName"] + "." + v4InterfaceOID["value"]
-        v4InterfaceName = interface_names[ifc_oid]
-        interfaces.append({
+        yield {
             "v4Address": v4Address["value"],
             "v4Mask": v4Mask["value"],
-            "v4InterfaceName": v4InterfaceName
-        })
-
+            "v4InterfaceName": v4IfcNames[v4InterfaceOID["value"]]
+        }
 
     v6IfcNames = {}
     for v6InterfaceName in details["v6InterfaceName"]:
         m = re.match(r'.*\.(\d+)$', v6InterfaceName["oid"])
-        assert m
+        assert m, "sanity failure parsing oid: " + v6InterfaceName["oid"]
         v6IfcNames[m.group(1)] = v6InterfaceName["value"]
 
     for v6AddressAndMask in details["v6AddressAndMask"]:
-        oid = v6AddressAndMask["oid"]
-        oid_info = oid[len(oid_map["v6AddressAndMask"]):]
-        m = re.match(r'^\.(\d+)\.(.+)$', oid_info)
-        assert m
-        interfaces.append({
-            "v6Address": m.group(2),
+        pattern = (
+            r'^'
+            + oid_map["v6AddressAndMask"].replace(r'.', r'\.')
+            + r'\.(\d+)\.(.+)$'
+        )
+        m = re.match(pattern, v6AddressAndMask["oid"])
+        assert m, "sanity failure parsing oid: " + v6InterfaceName["oid"]
+        yield {
+            "v6Address": _v6address_oid2str(m.group(2)),
             "v6Mask": v6AddressAndMask["value"],
             "v6InterfaceName": v6IfcNames[m.group(1)]
-        })
-    return interfaces
-
-    """
-    v4Address=.1.3.6.1.2.1.4.20.1.1
-v4InterfaceOID=.1.3.6.1.2.1.4.20.1.2
-v4InterfaceName=.1.3.6.1.2.1.31.1.1.1.1
-v4Mask=.1.3.6.1.2.1.4.20.1.3
-
-## IPv6
-v6AddressAndMask=.1.3.6.1.2.1.55.1.8.1.2
-v6InterfaceName=.1.3.6.1.2.1.55.1.5.1.2
-"""
-    # interfaces = []
-    #
-    #     # for name, oid in
-    #     # # walk(r["address"], r["community"], ".1.3.6.1.2.1.4.20.1.1")
-    #     # walk(r["hostname"], r["community"], ".1.3.6.1.2.1.4.20.1.1")
-    #     print(details)
-    #
-    #
+        }
 
 
 @click.command()