diff --git a/includes/object_mapper.c b/includes/object_mapper.c
new file mode 100644
index 0000000..1164251
--- /dev/null
+++ b/includes/object_mapper.c
@@ -0,0 +1,31 @@
+#include "object_mapper.h"
+
+
+void
+emit_object_added(GDBusObjectManager *manager)
+{
+    GList *objects;
+    GList *l;
+
+    objects = g_dbus_object_manager_get_objects(manager);
+    for (l = objects; l != NULL; l = l->next)
+    {
+        GDBusObject *object = l->data;
+	ObjectMapper* map = object_get_object_mapper((Object*)object);
+
+        GList *interfaces;
+        GList *ll;
+	const gchar *object_path = g_dbus_object_get_object_path(G_DBUS_OBJECT(object));
+
+        interfaces = g_dbus_object_get_interfaces(G_DBUS_OBJECT(object));
+        for (ll = interfaces; ll != NULL; ll = ll->next)
+        {
+            GDBusInterface *interface = G_DBUS_INTERFACE(ll->data);
+            object_mapper_emit_object_added(map,object_path,
+		g_dbus_interface_get_info(interface)->name);
+        }
+        g_list_free_full(interfaces, g_object_unref);
+    }
+    g_list_free_full(objects, g_object_unref);
+}
+
