diff --git a/manager.hpp b/manager.hpp
index 7127ec5..5e0930b 100644
--- a/manager.hpp
+++ b/manager.hpp
@@ -16,8 +16,6 @@
 {
 namespace manager
 {
-namespace details
-{
 
 template <typename T>
 using ServerObject = T;
@@ -45,7 +43,6 @@
         return any_ns::any(std::make_shared<T>(bus, path));
     }
 };
-} // namespace details
 
 /** @class Manager
  *  @brief OpenBMC inventory manager implementation.
@@ -54,7 +51,7 @@
  *  DBus API.
  */
 class Manager final :
-    public details::ServerObject<details::ManagerIface>
+    public ServerObject<ManagerIface>
 {
     public:
         Manager() = delete;
@@ -75,8 +72,8 @@
         Manager(sdbusplus::bus::bus&&, const char*, const char*, const char*);
 
         using EventInfo = std::tuple <
-                          std::vector<details::EventBasePtr>,
-                          std::vector<details::Action >>;
+                          std::vector<EventBasePtr>,
+                          std::vector<Action >>;
 
         /** @brief Start processing DBus messages. */
         void run() noexcept;
@@ -90,7 +87,7 @@
 
         /** @brief Event processing entry point. */
         void handleEvent(sdbusplus::message::message&,
-                         const details::Event& event,
+                         const Event& event,
                          const EventInfo& info);
 
         /** @brief Drop one or more objects from DBus. */
@@ -131,7 +128,7 @@
                         std::unique_ptr <
                         std::tuple <
                         Manager*,
-                        const details::DbusSignal*,
+                        const DbusSignal*,
                         const EventInfo* >>>;
         using SigArg = SigArgs::value_type::element_type;
 
@@ -143,7 +140,7 @@
         // The int instantiation is safe since the signature of these
         // functions don't change from one instantiation to the next.
         using MakerType = std::add_pointer_t <
-                          decltype(details::MakeInterface<int>::make) >;
+                          decltype(MakeInterface<int>::make) >;
         using Makers = std::map<std::string, std::tuple<MakerType>>;
 
         /** @brief Provides weak references to interface holders.
