diff --git a/clutter/Makefile.am b/clutter/Makefile.am
index b26df5222..be18dffdf 100644
--- a/clutter/Makefile.am
+++ b/clutter/Makefile.am
@@ -219,17 +219,18 @@ source_c = \
 
 # private headers; these should not be distributed or introspected
 source_h_priv = \
-	$(srcdir)/clutter-actor-meta-private.h	\
-	$(srcdir)/clutter-bezier.h		\
-	$(srcdir)/clutter-debug.h 		\
-	$(srcdir)/clutter-id-pool.h 		\
-	$(srcdir)/clutter-keysyms-table.h	\
-	$(srcdir)/clutter-master-clock.h	\
-	$(srcdir)/clutter-model-private.h	\
-	$(srcdir)/clutter-private.h 		\
-	$(srcdir)/clutter-profile.h		\
-	$(srcdir)/clutter-script-private.h	\
-	$(srcdir)/clutter-timeout-interval.h    \
+	$(srcdir)/clutter-actor-meta-private.h		\
+	$(srcdir)/clutter-bezier.h			\
+	$(srcdir)/clutter-debug.h 			\
+	$(srcdir)/clutter-device-manager-private.h	\
+	$(srcdir)/clutter-id-pool.h 			\
+	$(srcdir)/clutter-keysyms-table.h		\
+	$(srcdir)/clutter-master-clock.h		\
+	$(srcdir)/clutter-model-private.h		\
+	$(srcdir)/clutter-private.h 			\
+	$(srcdir)/clutter-profile.h			\
+	$(srcdir)/clutter-script-private.h		\
+	$(srcdir)/clutter-timeout-interval.h    	\
 	$(NULL)
 
 # private source code; these should not be introspected
diff --git a/clutter/clutter-device-manager-private.h b/clutter/clutter-device-manager-private.h
new file mode 100644
index 000000000..163dce3ef
--- /dev/null
+++ b/clutter/clutter-device-manager-private.h
@@ -0,0 +1,68 @@
+#ifndef __CLUTTER_DEVICE_MANAGER_PRIVATE_H__
+#define __CLUTTER_DEVICE_MANAGER_PRIVATE_H__
+
+#include <clutter/clutter-device-manager.h>
+
+G_BEGIN_DECLS
+
+struct _ClutterInputDevice
+{
+  GObject parent_instance;
+
+  gint id;
+
+  ClutterInputDeviceType device_type;
+
+  gchar *device_name;
+
+  /* the actor underneath the pointer */
+  ClutterActor *cursor_actor;
+
+  /* the actor that has a grab in place for the device */
+  ClutterActor *pointer_grab_actor;
+
+  /* the current click count */
+  gint click_count;
+
+  /* the stage the device is on */
+  ClutterStage *stage;
+
+  /* the current state */
+  gint current_x;
+  gint current_y;
+  guint32 current_time;
+  gint current_button_number;
+  ClutterModifierType current_state;
+
+  /* the previous state, used for click count generation */
+  gint previous_x;
+  gint previous_y;
+  guint32 previous_time;
+  gint previous_button_number;
+  ClutterModifierType previous_state;
+};
+
+/* device manager */
+void          _clutter_device_manager_add_device     (ClutterDeviceManager *device_manager,
+                                                      ClutterInputDevice   *device);
+void          _clutter_device_manager_remove_device  (ClutterDeviceManager *device_manager,
+                                                      ClutterInputDevice   *device);
+void          _clutter_device_manager_update_devices (ClutterDeviceManager *device_manager);
+
+/* input device */
+void          _clutter_input_device_set_coords       (ClutterInputDevice   *device,
+                                                      gint                  x,
+                                                      gint                  y);
+void          _clutter_input_device_set_state        (ClutterInputDevice   *device,
+                                                      ClutterModifierType   state);
+void          _clutter_input_device_set_time         (ClutterInputDevice   *device,
+                                                      guint32               time_);
+void          _clutter_input_device_set_stage        (ClutterInputDevice   *device,
+                                                      ClutterStage         *stage);
+void          _clutter_input_device_set_actor        (ClutterInputDevice   *device,
+                                                      ClutterActor         *actor);
+ClutterActor *_clutter_input_device_update           (ClutterInputDevice   *device);
+
+G_END_DECLS
+
+#endif /* __CLUTTER_DEVICE_MANAGER_PRIVATE_H__ */
diff --git a/clutter/clutter-device-manager.c b/clutter/clutter-device-manager.c
index 238e7d74d..563bf0d3a 100644
--- a/clutter/clutter-device-manager.c
+++ b/clutter/clutter-device-manager.c
@@ -41,7 +41,7 @@
 #endif
 
 #include "clutter-debug.h"
-#include "clutter-device-manager.h"
+#include "clutter-device-manager-private.h"
 #include "clutter-enum-types.h"
 #include "clutter-marshal.h"
 #include "clutter-private.h"
diff --git a/clutter/clutter-event.c b/clutter/clutter-event.c
index b62293281..521e3c73f 100644
--- a/clutter/clutter-event.c
+++ b/clutter/clutter-event.c
@@ -520,7 +520,7 @@ clutter_event_get_device_id (const ClutterEvent *event)
     }
 
   if (device != NULL)
-    return device->id;
+    return clutter_input_device_get_device_id (device);
   else
     return -1;
 }
@@ -574,7 +574,7 @@ clutter_event_get_device_type (const ClutterEvent *event)
     }
 
   if (device != NULL)
-    return device->device_type;
+    return clutter_input_device_get_device_type (device);
   else
     return CLUTTER_POINTER_DEVICE;
 }
diff --git a/clutter/clutter-input-device.c b/clutter/clutter-input-device.c
index 7d9a2858e..549917d7e 100644
--- a/clutter/clutter-input-device.c
+++ b/clutter/clutter-input-device.c
@@ -36,6 +36,7 @@
 #endif
 
 #include "clutter-debug.h"
+#include "clutter-device-manager-private.h"
 #include "clutter-enum-types.h"
 #include "clutter-input-device.h"
 #include "clutter-private.h"
diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index 8945aa54b..189a2725a 100644
--- a/clutter/clutter-main.c
+++ b/clutter/clutter-main.c
@@ -110,6 +110,7 @@
 #include "clutter-version.h" 	/* For flavour define */
 #include "clutter-frame-source.h"
 #include "clutter-profile.h"
+#include "clutter-device-manager-private.h"
 
 #include "cogl/cogl.h"
 #include "pango/cogl-pango.h"
diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h
index 62e51da7c..7183fedf6 100644
--- a/clutter/clutter-private.h
+++ b/clutter/clutter-private.h
@@ -126,43 +126,6 @@ typedef enum
   CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION  = 1 << 0
 } ClutterRedrawFlags;
 
-struct _ClutterInputDevice
-{
-  GObject parent_instance;
-
-  gint id;
-
-  ClutterInputDeviceType device_type;
-
-  gchar *device_name;
-
-  /* the actor underneath the pointer */
-  ClutterActor *cursor_actor;
-
-  /* the actor that has a grab in place for the device */
-  ClutterActor *pointer_grab_actor;
-
-  /* the current click count */
-  gint click_count;
-
-  /* the stage the device is on */
-  ClutterStage *stage;
-
-  /* the current state */
-  gint current_x;
-  gint current_y;
-  guint32 current_time;
-  gint current_button_number;
-  ClutterModifierType current_state;
-
-  /* the previous state, used for click count generation */
-  gint previous_x;
-  gint previous_y;
-  guint32 previous_time;
-  gint previous_button_number;
-  ClutterModifierType previous_state;
-};
-
 struct _ClutterStageManager
 {
   GObject parent_instance;
@@ -344,27 +307,6 @@ PangoContext *_clutter_context_get_pango_context    (ClutterMainContext *self);
 
 G_CONST_RETURN gchar *_clutter_gettext (const gchar *str);
 
-/* device manager */
-void _clutter_device_manager_add_device     (ClutterDeviceManager *device_manager,
-                                             ClutterInputDevice   *device);
-void _clutter_device_manager_remove_device  (ClutterDeviceManager *device_manager,
-                                             ClutterInputDevice   *device);
-void _clutter_device_manager_update_devices (ClutterDeviceManager *device_manager);
-
-/* input device */
-void          _clutter_input_device_set_coords (ClutterInputDevice  *device,
-                                                gint                 x,
-                                                gint                 y);
-void          _clutter_input_device_set_state  (ClutterInputDevice  *device,
-                                                ClutterModifierType  state);
-void          _clutter_input_device_set_time   (ClutterInputDevice  *device,
-                                                guint32              time_);
-void          _clutter_input_device_set_stage  (ClutterInputDevice  *device,
-                                                ClutterStage        *stage);
-void          _clutter_input_device_set_actor  (ClutterInputDevice  *device,
-                                                ClutterActor        *actor);
-ClutterActor *_clutter_input_device_update     (ClutterInputDevice  *device);
-
 /* stage manager */
 void _clutter_stage_manager_add_stage         (ClutterStageManager *stage_manager,
                                                ClutterStage        *stage);
diff --git a/clutter/clutter-stage.c b/clutter/clutter-stage.c
index d39ab01e9..3d4c6e428 100644
--- a/clutter/clutter-stage.c
+++ b/clutter/clutter-stage.c
@@ -70,7 +70,7 @@
 #include "clutter-id-pool.h"
 #include "clutter-container.h"
 #include "clutter-profile.h"
-#include "clutter-input-device.h"
+#include "clutter-device-manager-private.h"
 
 #include "cogl/cogl.h"
 
diff --git a/clutter/wayland/clutter-input-device-wayland.c b/clutter/wayland/clutter-input-device-wayland.c
index e59ccb328..81c1dbc63 100644
--- a/clutter/wayland/clutter-input-device-wayland.c
+++ b/clutter/wayland/clutter-input-device-wayland.c
@@ -34,9 +34,10 @@
 
 #include <X11/extensions/XKBcommon.h>
 
-#include "../clutter-debug.h"
-#include "../clutter-private.h"
-#include "../clutter-keysyms.h"
+#include "clutter-debug.h"
+#include "clutter-device-manager-private.h"
+#include "clutter-private.h"
+#include "clutter-keysyms.h"
 
 #include "clutter-stage-wayland.h"
 
diff --git a/clutter/win32/clutter-device-manager-win32.c b/clutter/win32/clutter-device-manager-win32.c
index 256333e46..1e9308a62 100644
--- a/clutter/win32/clutter-device-manager-win32.c
+++ b/clutter/win32/clutter-device-manager-win32.c
@@ -32,7 +32,7 @@
 
 #include "clutter-backend.h"
 #include "clutter-debug.h"
-#include "clutter-device-manager.h"
+#include "clutter-device-manager-private.h"
 #include "clutter-private.h"
 
 enum
diff --git a/clutter/win32/clutter-event-win32.c b/clutter/win32/clutter-event-win32.c
index a2a3aa30c..09f72c316 100644
--- a/clutter/win32/clutter-event-win32.c
+++ b/clutter/win32/clutter-event-win32.c
@@ -27,12 +27,13 @@
 #include "clutter-backend-win32.h"
 #include "clutter-win32.h"
 
-#include "../clutter-backend.h"
-#include "../clutter-event.h"
-#include "../clutter-private.h"
-#include "../clutter-debug.h"
-#include "../clutter-main.h"
-#include "../clutter-keysyms.h"
+#include "clutter-backend.h"
+#include "clutter-debug.h"
+#include "clutter-device-manager-private.h"
+#include "clutter-event.h"
+#include "clutter-keysyms.h"
+#include "clutter-main.h"
+#include "clutter-private.h"
 
 #include <string.h>
 #include <glib.h>
diff --git a/clutter/x11/clutter-device-manager-x11.c b/clutter/x11/clutter-device-manager-x11.c
index f0a484d96..11e697bb9 100644
--- a/clutter/x11/clutter-device-manager-x11.c
+++ b/clutter/x11/clutter-device-manager-x11.c
@@ -32,7 +32,7 @@
 
 #include "clutter-backend.h"
 #include "clutter-debug.h"
-#include "clutter-device-manager.h"
+#include "clutter-device-manager-private.h"
 #include "clutter-private.h"
 
 #ifdef HAVE_XINPUT
diff --git a/clutter/x11/clutter-event-x11.c b/clutter/x11/clutter-event-x11.c
index 865d52c61..885389006 100644
--- a/clutter/x11/clutter-event-x11.c
+++ b/clutter/x11/clutter-event-x11.c
@@ -33,11 +33,12 @@
 #include "clutter-keymap-x11.h"
 #include "clutter-x11.h"
 
-#include "../clutter-backend.h"
-#include "../clutter-event.h"
-#include "../clutter-private.h"
-#include "../clutter-debug.h"
-#include "../clutter-main.h"
+#include "clutter-backend.h"
+#include "clutter-debug.h"
+#include "clutter-device-manager-private.h"
+#include "clutter-event.h"
+#include "clutter-main.h"
+#include "clutter-private.h"
 
 #include "cogl/cogl-internal.h"
 
diff --git a/clutter/x11/clutter-input-device-x11.c b/clutter/x11/clutter-input-device-x11.c
index b61959490..342950c59 100644
--- a/clutter/x11/clutter-input-device-x11.c
+++ b/clutter/x11/clutter-input-device-x11.c
@@ -3,8 +3,10 @@
 #endif
 
 #include "clutter-input-device-x11.h"
-#include "../clutter-debug.h"
-#include "../clutter-private.h"
+
+#include "clutter-debug.h"
+#include "clutter-device-manager-private.h"
+#include "clutter-private.h"
 
 #ifdef HAVE_XINPUT
 #include <X11/extensions/XInput.h>