diff --git a/cpld/cpld_interface.cpp b/cpld/cpld_interface.cpp
new file mode 100644
index 0000000..a67e03e
--- /dev/null
+++ b/cpld/cpld_interface.cpp
@@ -0,0 +1,43 @@
+#include "cpld_interface.hpp"
+
+#include "lattice/interface.hpp"
+
+namespace phosphor::software::cpld
+{
+
+CPLDFactory& CPLDFactory::instance()
+{
+    static CPLDFactory factory;
+    return factory;
+}
+
+void CPLDFactory::registerCPLD(const std::string& vendorName, Creator creator)
+{
+    creators[vendorName] = std::move(creator);
+}
+
+std::unique_ptr<CPLDInterface> CPLDFactory::create(
+    const std::string& vendorName, sdbusplus::async::context& ctx,
+    const std::string& chipName, uint16_t bus, uint8_t address) const
+{
+    auto it = creators.find(vendorName);
+    if (it != creators.end())
+    {
+        return (it->second)(ctx, chipName, bus, address);
+    }
+    return nullptr;
+}
+
+std::vector<std::string> CPLDFactory::getConfigs()
+{
+    std::vector<std::string> configs;
+    configs.reserve(creators.size());
+
+    std::transform(creators.begin(), creators.end(),
+                   std::back_inserter(configs),
+                   [](const auto& pair) { return pair.first; });
+
+    return configs;
+}
+
+} // namespace phosphor::software::cpld
