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
