diff --git a/doc/calls-docs.xml b/doc/calls-docs.xml
index b068fc0..95b93f5 100644
--- a/doc/calls-docs.xml
+++ b/doc/calls-docs.xml
@@ -44,6 +44,7 @@
+
diff --git a/src/calls-emergency-calls-manager.c b/src/calls-emergency-calls-manager.c
new file mode 100644
index 0000000..368448a
--- /dev/null
+++ b/src/calls-emergency-calls-manager.c
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2021 Purism SPC
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ * Author: Guido Günther
+ */
+
+#define G_LOG_DOMAIN "CallsEmergencyCallsManger"
+
+#include "calls-emergency-calls-manager.h"
+
+/**
+ * SECTION:calls-emergency-calls-manager
+ * @short_description: Provide a DBus interface for emergency calls
+ * @Title: CallsEmergencyCallsManager
+ *
+ * This tracks emergency call information from the various origins
+ * and makes them available for initiating emergency calls.
+ */
+
+typedef struct _CallsEmergencyCallsManager
+{
+ CallsDBusEmergencyCallsSkeleton parent;
+
+ int dbus_name_id;
+} CallsEmergencyCallsManger;
+
+static void calls_emergency_calls_iface_init (CallsDBusEmergencyCallsIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (CallsEmergencyCallsManager,
+ calls_emergency_calls_manager,
+ CALLS_DBUS_TYPE_EMERGENCY_CALLS_SKELETON,
+ G_IMPLEMENT_INTERFACE (
+ CALLS_DBUS_TYPE_EMERGENCY_CALLS,
+ calls_emergency_calls_iface_init));
+
+static gboolean
+handle_call_emergency_contact (CallsDBusEmergencyCalls *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *arg_id)
+{
+ return FALSE;
+}
+
+
+static gboolean
+handle_get_emergency_contacts (CallsDBusEmergencyCalls *object,
+ GDBusMethodInvocation *invocation)
+{
+ return FALSE;
+}
+
+
+static void
+calls_emergency_calls_iface_init (CallsDBusEmergencyCallsIface *iface)
+{
+ iface->handle_call_emergency_contact = handle_call_emergency_contact;
+ iface->handle_get_emergency_contacts = handle_get_emergency_contacts;
+}
+
+static void
+calls_emergency_calls_manager_class_init (CallsEmergencyCallsManagerClass *klass)
+{
+}
+
+
+static void
+calls_emergency_calls_manager_init (CallsEmergencyCallsManager *self)
+{
+}
+
+CallsEmergencyCallsManager *
+calls_emergency_calls_manager_new (void)
+{
+ return g_object_new (CALLS_TYPE_EMERGENCY_CALLS_MANAGER, NULL);
+}
diff --git a/src/calls-emergency-calls-manager.h b/src/calls-emergency-calls-manager.h
new file mode 100644
index 0000000..71e8d3a
--- /dev/null
+++ b/src/calls-emergency-calls-manager.h
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2021 Purism SPC
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ * Author: Guido Günther
+ */
+
+#pragma once
+
+#include "dbus/calls-emergency-call-dbus.h"
+#include
+
+#define CALLS_TYPE_EMERGENCY_CALLS_MANAGER (calls_emergency_calls_manager_get_type ())
+
+G_DECLARE_FINAL_TYPE (CallsEmergencyCallsManager, calls_emergency_calls_manager, CALLS, EMERGENCY_CALLS_MANAGER,
+ CallsDBusEmergencyCallsSkeleton)
+
+CallsEmergencyCallsManager * calls_emergency_calls_manager_new (void);
diff --git a/src/meson.build b/src/meson.build
index b180b4a..421f399 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -101,6 +101,7 @@ calls_sources = files([
'calls-contacts-provider.c', 'calls-contacts-provider.h',
'calls-contacts-row.c', 'calls-contacts-row.h',
'calls-dbus-manager.c', 'calls-dbus-manager.h',
+ 'calls-emergency-calls-manager.c', 'calls-emergency-calls-manager.h',
'calls-history-box.c', 'calls-history-box.h',
'calls-in-app-notification.c', 'calls-in-app-notification.h',
'calls-log.c', 'calls-log.h',