diff --git a/src/associations.hpp b/src/associations.hpp
index 91a9fcd..73fc2e5 100644
--- a/src/associations.hpp
+++ b/src/associations.hpp
@@ -1,55 +1,10 @@
 #pragma once
 
-#include <boost/container/flat_map.hpp>
-#include <boost/container/flat_set.hpp>
-#include <memory>
-#include <sdbusplus/asio/object_server.hpp>
-#include <string>
-#include <tuple>
-#include <vector>
+#include "types.hpp"
 
 constexpr const char* XYZ_ASSOCIATION_INTERFACE =
     "xyz.openbmc_project.Association";
 
-//  Associations and some metadata are stored in associationInterfaces.
-//  The fields are:
-//   * ifacePos - holds the D-Bus interface object
-//   * endpointsPos - holds the endpoints array that shadows the property
-static constexpr auto ifacePos = 0;
-static constexpr auto endpointsPos = 1;
-using Endpoints = std::vector<std::string>;
-
-// map[interface path: tuple[dbus_interface,vector[endpoint paths]]]
-using AssociationInterfaces = boost::container::flat_map<
-    std::string,
-    std::tuple<std::shared_ptr<sdbusplus::asio::dbus_interface>, Endpoints>>;
-
-// The associationOwners map contains information about creators of
-// associations, so that when a org.openbmc.Association interface is
-// removed or its 'associations' property is changed, the mapper owned
-// association objects can be correctly handled.  It is a map of the
-// object path of the org.openbmc.Association owner to a map of the
-// service the path is owned by, to a map of the association objects to
-// their endpoint paths:
-// map[ownerPath : map[service : map[assocPath : [endpoint paths]]]
-// For example:
-// [/logging/entry/1 :
-//   [xyz.openbmc_project.Logging :
-//     [/logging/entry/1/callout : [/system/cpu0],
-//      /system/cpu0/fault : [/logging/entry/1]]]]
-
-using AssociationPaths =
-    boost::container::flat_map<std::string,
-                               boost::container::flat_set<std::string>>;
-
-using AssociationOwnersType = boost::container::flat_map<
-    std::string, boost::container::flat_map<std::string, AssociationPaths>>;
-
-// Store the contents of the associations property on the interface
-// For example:
-// ["inventory", "activation", "/xyz/openbmc_project/inventory/system/chassis"]
-using Association = std::tuple<std::string, std::string, std::string>;
-
 /** @brief Remove input association
  *
  * @param[in] sourcePath          - Path of the object that contains the
diff --git a/src/main.cpp b/src/main.cpp
index e6ea2bb..1ed5435 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,6 +1,7 @@
 #include "associations.hpp"
 #include "processing.hpp"
 #include "src/argument.hpp"
+#include "types.hpp"
 
 #include <tinyxml2.h>
 
diff --git a/src/processing.hpp b/src/processing.hpp
index 475133d..e37f279 100644
--- a/src/processing.hpp
+++ b/src/processing.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include "associations.hpp"
+#include "types.hpp"
 
 #include <boost/container/flat_map.hpp>
 #include <boost/container/flat_set.hpp>
@@ -43,17 +44,6 @@
     return (iface == assocDefsInterface) ? "Associations" : "associations";
 }
 
-/** @brief interface_map_type is the underlying datastructure the mapper uses.
- *
- * The 3 levels of map are
- * object paths
- *   connection names
- *      interface names
- */
-using interface_map_type = boost::container::flat_map<
-    std::string, boost::container::flat_map<
-                     std::string, boost::container::flat_set<std::string>>>;
-
 /** @brief InterfacesAdded represents the dbus data from the signal
  *
  * There are 2 pairs
diff --git a/src/types.hpp b/src/types.hpp
new file mode 100644
index 0000000..8415cf3
--- /dev/null
+++ b/src/types.hpp
@@ -0,0 +1,64 @@
+#pragma once
+
+#include <boost/container/flat_map.hpp>
+#include <boost/container/flat_set.hpp>
+#include <memory>
+#include <sdbusplus/asio/object_server.hpp>
+#include <string>
+#include <tuple>
+#include <vector>
+
+/** @brief interface_map_type is the underlying datastructure the mapper uses.
+ *
+ * The 3 levels of map are
+ * object paths
+ *   connection names
+ *      interface names
+ */
+using interface_map_type = boost::container::flat_map<
+    std::string, boost::container::flat_map<
+                     std::string, boost::container::flat_set<std::string>>>;
+
+/**
+ *  Associations and some metadata are stored in associationInterfaces.
+ *  The fields are:
+ *   * ifacePos - holds the D-Bus interface object
+ *   * endpointsPos - holds the endpoints array that shadows the property
+ */
+static constexpr auto ifacePos = 0;
+static constexpr auto endpointsPos = 1;
+using Endpoints = std::vector<std::string>;
+
+// map[interface path: tuple[dbus_interface,vector[endpoint paths]]]
+using AssociationInterfaces = boost::container::flat_map<
+    std::string,
+    std::tuple<std::shared_ptr<sdbusplus::asio::dbus_interface>, Endpoints>>;
+
+/**
+ * The associationOwners map contains information about creators of
+ * associations, so that when a org.openbmc.Association interface is
+ * removed or its 'associations' property is changed, the mapper owned
+ * association objects can be correctly handled.  It is a map of the
+ * object path of the org.openbmc.Association owner to a map of the
+ * service the path is owned by, to a map of the association objects to
+ * their endpoint paths:
+ * map[ownerPath : map[service : map[assocPath : [endpoint paths]]]
+ * For example:
+ * [/logging/entry/1 :
+ *   [xyz.openbmc_project.Logging :
+ *     [/logging/entry/1/callout : [/system/cpu0],
+ *      /system/cpu0/fault : [/logging/entry/1]]]]
+ */
+using AssociationPaths =
+    boost::container::flat_map<std::string,
+                               boost::container::flat_set<std::string>>;
+
+using AssociationOwnersType = boost::container::flat_map<
+    std::string, boost::container::flat_map<std::string, AssociationPaths>>;
+
+/**
+ * Store the contents of the associations property on the interface
+ * For example:
+ * ["inventory", "activation", "/xyz/openbmc_project/inventory/system/chassis"]
+ */
+using Association = std::tuple<std::string, std::string, std::string>;
