diff --git a/unittest/test_lcp.yaml b/unittest/test_lcp.yaml
index 81f79ca..b828a62 100644
--- a/unittest/test_lcp.yaml
+++ b/unittest/test_lcp.yaml
@@ -23,3 +23,20 @@ interfaces:
   GigabitEthernet2/0/0:
     description: "This interface has no sub-ints"
     lcp: "e2"
+
+  GigabitEthernet2/0/1:
+    description: "This LCP also on gi2/0/2"
+    lcp: "twice"
+
+  GigabitEthernet2/0/2:
+    description: "This LCP also on gi2/0/1"
+    lcp: "twice"
+
+  GigabitEthernet2/0/3:
+    description: "This LCP also on loop0"
+    lcp: "thrice"
+
+loopbacks:
+  loop0:
+    description: "This LCP also on gi2/0/3"
+    lcp: "thrice"
diff --git a/validator/lcp.py b/validator/lcp.py
index 2d9d236..aa1e170 100644
--- a/validator/lcp.py
+++ b/validator/lcp.py
@@ -13,23 +13,32 @@
 #
 import logging
 
-def is_unique(yaml, lcpname):
-    """ Returns True if there is at most one occurence of the LCP name in the entire config."""
-    ncount=0
+def get_lcps(yaml):
+    """ Returns a list of all LCPs configured in the system, or an empty list if there are none. """
+
+    ret = []
     if 'interfaces' in yaml:
         for ifname, iface in yaml['interfaces'].items():
-            if 'lcp' in iface and iface['lcp'] == lcpname:
-                ncount = ncount + 1
+            if 'lcp' in iface:
+                ret.append(iface['lcp'])
             if 'sub-interfaces' in iface:
                 for sub_ifname, sub_iface in iface['sub-interfaces'].items():
-                    if 'lcp' in sub_iface and sub_iface['lcp'] == lcpname:
-                        ncount = ncount + 1
+                    if 'lcp' in sub_iface:
+                        ret.append(sub_iface['lcp'])
+
     if 'loopbacks' in yaml:
         for ifname, iface in yaml['loopbacks'].items():
-            if 'lcp' in iface and iface['lcp'] == lcpname:
-                ncount = ncount + 1
+            if 'lcp' in iface:
+                ret.append(iface['lcp'])
     if 'bridgedomains' in yaml:
         for ifname, iface in yaml['bridgedomains'].items():
-            if 'lcp' in iface and iface['lcp'] == lcpname:
-                ncount = ncount + 1
-    return ncount < 2
+            if 'lcp' in iface:
+                ret.append(iface['lcp'])
+
+    return ret
+
+def is_unique(yaml, lcpname):
+    """ Returns True if there is at most one occurence of the LCP name in the entire config."""
+
+    lcps = get_lcps(yaml)
+    return lcps.count(lcpname) < 2
diff --git a/validator/test_lcp.py b/validator/test_lcp.py
index 87682a7..aeeb4fb 100644
--- a/validator/test_lcp.py
+++ b/validator/test_lcp.py
@@ -8,12 +8,19 @@ class TestLCPMethods(unittest.TestCase):
         with open("unittest/test_lcp.yaml", "r") as f:
             self.cfg = yaml.load(f, Loader = yaml.FullLoader)
 
+    def test_enumerators(self):
+        lcps = lcp.get_lcps(self.cfg)
+        self.assertIn("e1", lcps)
+        self.assertIn("foo", lcps)
+        self.assertIn("e2", lcps)
+
     def test_lcp(self):
         self.assertTrue(lcp.is_unique(self.cfg, "e1"))
         self.assertTrue(lcp.is_unique(self.cfg, "foo"))
+        self.assertTrue(lcp.is_unique(self.cfg, "notexist"))
 
-        ## TODO(pim) - ensure that is_unique also takes synthesized LCPs into account
-        ## self.assertFalse(lcp.is_unique(self.cfg, "e1.1000"))
+        self.assertFalse(lcp.is_unique(self.cfg, "twice"))
+        self.assertFalse(lcp.is_unique(self.cfg, "thrice"))
 
     def test_qinx(self):
         qinx_ifname, qinx_iface = interface.get_by_name(self.cfg, "GigabitEthernet1/0/1.201")