diff --git a/lib/wp/endpoint-link.c b/lib/wp/endpoint-link.c
index 5c872e7462ff04c6142e08eeab8df846cfe0a1c7..209c6eb37a80f03a0c750be08ea0fd69d375a44e 100644
--- a/lib/wp/endpoint-link.c
+++ b/lib/wp/endpoint-link.c
@@ -16,7 +16,7 @@
 #include "endpoint-link.h"
 #include "error.h"
 #include "wpenums.h"
-#include "private.h"
+#include "private/impl-endpoint.h"
 #include "private/pipewire-object-mixin.h"
 
 #include <pipewire/extensions/session-manager.h>
diff --git a/lib/wp/endpoint-stream.c b/lib/wp/endpoint-stream.c
index 34a855f3970b00da291f3c68c0576092fae55556..269557f521cf239b3b78a2ea3a25762075876fed 100644
--- a/lib/wp/endpoint-stream.c
+++ b/lib/wp/endpoint-stream.c
@@ -16,7 +16,7 @@
 #include "endpoint-stream.h"
 #include "node.h"
 #include "error.h"
-#include "private.h"
+#include "private/impl-endpoint.h"
 #include "private/pipewire-object-mixin.h"
 
 #include <pipewire/extensions/session-manager.h>
diff --git a/lib/wp/endpoint.c b/lib/wp/endpoint.c
index 6a495f48af4809842a4c4d64036d5bf0b948d933..1e18a5cec2d7e94ce6ec8272276f2d6dc31c15bc 100644
--- a/lib/wp/endpoint.c
+++ b/lib/wp/endpoint.c
@@ -19,7 +19,7 @@
 #include "error.h"
 #include "wpenums.h"
 #include "si-factory.h"
-#include "private.h"
+#include "private/impl-endpoint.h"
 #include "private/pipewire-object-mixin.h"
 
 #include <pipewire/extensions/session-manager.h>
diff --git a/lib/wp/private.h b/lib/wp/private.h
index 2734d0991739e58a5cf90f4189bdabaddcbbaf28..33447682c8d83bcb68aca874ce7b12efbbafa700 100644
--- a/lib/wp/private.h
+++ b/lib/wp/private.h
@@ -13,9 +13,7 @@
 #include "object-manager.h"
 #include "props.h"
 #include "proxy.h"
-#include "endpoint.h"
-#include "endpoint-stream.h"
-#include "si-interfaces.h"
+#include "session-item.h"
 #include "iterator.h"
 #include "spa-type.h"
 #include "private/registry.h"
@@ -69,31 +67,6 @@ const struct spa_pod *wp_spa_pod_get_spa_pod (const WpSpaPod *self);
 
 void wp_session_item_set_parent (WpSessionItem *self, WpSessionItem *parent);
 
-/* impl endpoint */
-
-#define WP_TYPE_IMPL_ENDPOINT (wp_impl_endpoint_get_type ())
-G_DECLARE_FINAL_TYPE (WpImplEndpoint, wp_impl_endpoint,
-                      WP, IMPL_ENDPOINT, WpEndpoint)
-
-WpImplEndpoint * wp_impl_endpoint_new (WpCore * core, WpSiEndpoint * item);
-
-/* impl endpoint stream */
-
-#define WP_TYPE_IMPL_ENDPOINT_STREAM (wp_impl_endpoint_stream_get_type ())
-G_DECLARE_FINAL_TYPE (WpImplEndpointStream, wp_impl_endpoint_stream,
-                      WP, IMPL_ENDPOINT_STREAM, WpEndpointStream)
-
-WpImplEndpointStream * wp_impl_endpoint_stream_new (WpCore * core,
-    WpSiStream * item);
-
-/* impl endpoint link */
-
-#define WP_TYPE_IMPL_ENDPOINT_LINK (wp_impl_endpoint_link_get_type ())
-G_DECLARE_FINAL_TYPE (WpImplEndpointLink, wp_impl_endpoint_link,
-                      WP, IMPL_ENDPOINT_LINK, WpEndpointLink)
-
-WpImplEndpointLink * wp_impl_endpoint_link_new (WpCore * core, WpSiLink * item);
-
 G_END_DECLS
 
 #endif
diff --git a/lib/wp/private/impl-endpoint.h b/lib/wp/private/impl-endpoint.h
new file mode 100644
index 0000000000000000000000000000000000000000..a22c51e4fdebd615edfc43e237febabb98bcf826
--- /dev/null
+++ b/lib/wp/private/impl-endpoint.h
@@ -0,0 +1,46 @@
+/* WirePlumber
+ *
+ * Copyright © 2019 Collabora Ltd.
+ *    @author George Kiagiadakis <george.kiagiadakis@collabora.com>
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#ifndef __WIREPLUMBER_PRIVATE_IMPL_ENDPOINT_H__
+#define __WIREPLUMBER_PRIVATE_IMPL_ENDPOINT_H__
+
+#include "endpoint.h"
+#include "endpoint-stream.h"
+#include "endpoint-link.h"
+#include "si-interfaces.h"
+
+G_BEGIN_DECLS
+
+/* impl endpoint */
+
+#define WP_TYPE_IMPL_ENDPOINT (wp_impl_endpoint_get_type ())
+G_DECLARE_FINAL_TYPE (WpImplEndpoint, wp_impl_endpoint,
+                      WP, IMPL_ENDPOINT, WpEndpoint)
+
+WpImplEndpoint * wp_impl_endpoint_new (WpCore * core, WpSiEndpoint * item);
+
+/* impl endpoint stream */
+
+#define WP_TYPE_IMPL_ENDPOINT_STREAM (wp_impl_endpoint_stream_get_type ())
+G_DECLARE_FINAL_TYPE (WpImplEndpointStream, wp_impl_endpoint_stream,
+                      WP, IMPL_ENDPOINT_STREAM, WpEndpointStream)
+
+WpImplEndpointStream * wp_impl_endpoint_stream_new (WpCore * core,
+    WpSiStream * item);
+
+/* impl endpoint link */
+
+#define WP_TYPE_IMPL_ENDPOINT_LINK (wp_impl_endpoint_link_get_type ())
+G_DECLARE_FINAL_TYPE (WpImplEndpointLink, wp_impl_endpoint_link,
+                      WP, IMPL_ENDPOINT_LINK, WpEndpointLink)
+
+WpImplEndpointLink * wp_impl_endpoint_link_new (WpCore * core, WpSiLink * item);
+
+G_END_DECLS
+
+#endif
diff --git a/lib/wp/session-item.c b/lib/wp/session-item.c
index ca2154420ea3aa2bd36c4e0109283b98dafd1031..20d819cd2a19f6db1d6acb98ec2c1e538d09e8a3 100644
--- a/lib/wp/session-item.c
+++ b/lib/wp/session-item.c
@@ -15,9 +15,10 @@
 
 #include "session-item.h"
 #include "debug.h"
-#include "private.h"
 #include "error.h"
 #include "wpenums.h"
+#include "private.h"
+#include "private/impl-endpoint.h"
 
 struct _WpSiTransition
 {
diff --git a/lib/wp/session.c b/lib/wp/session.c
index a7dda9aabadb0df01ef2147d96cc3a19fd2d7527..b4f91433646a9e80388e564e4f5395e6757b272d 100644
--- a/lib/wp/session.c
+++ b/lib/wp/session.c
@@ -16,7 +16,7 @@
 #include "session.h"
 #include "error.h"
 #include "wpenums.h"
-#include "private.h"
+#include "private/impl-endpoint.h"
 #include "private/pipewire-object-mixin.h"
 
 #include <pipewire/extensions/session-manager.h>