diff --git a/libmapper/app.c b/libmapper/app.c
index 84be79d..c8b4f20 100644
--- a/libmapper/app.c
+++ b/libmapper/app.c
@@ -13,8 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include "config.h"
-
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/libmapper/mapper.c b/libmapper/mapper.c
index 3c43eb9..4a38790 100644
--- a/libmapper/mapper.c
+++ b/libmapper/mapper.c
@@ -13,8 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include "config.h"
-
 #include "mapper.h"
 
 #include <errno.h>
@@ -160,10 +158,11 @@
     mapper_async_wait* wait = data->wait;
 
     sd_event_source_unref(data->event_source);
-    r = sd_bus_call_method_async(wait->conn, NULL, MAPPER_BUSNAME, MAPPER_PATH,
-                                 MAPPER_INTERFACE, "GetObject",
-                                 async_wait_getobject_callback, data, "sas",
-                                 data->path, 0, NULL);
+    r = sd_bus_call_method_async(
+        wait->conn, NULL, "xyz.openbmc_project.ObjectMapper",
+        "/xyz/openbmc_project/object_mapper",
+        "xyz.openbmc_project.ObjectMapper", "GetObject",
+        async_wait_getobject_callback, data, "sas", data->path, 0, NULL);
     if (r < 0)
     {
         async_wait_done(r, wait);
@@ -250,10 +249,11 @@
         data->path = wait->objs[i];
         data->retry = 0;
         data->event_source = NULL;
-        r = sd_bus_call_method_async(wait->conn, NULL, MAPPER_BUSNAME,
-                                     MAPPER_PATH, MAPPER_INTERFACE, "GetObject",
-                                     async_wait_getobject_callback, data, "sas",
-                                     wait->objs[i], 0, NULL);
+        r = sd_bus_call_method_async(
+            wait->conn, NULL, "xyz.openbmc_project.ObjectMapper",
+            "/xyz/openbmc_project/object_mapper",
+            "xyz.openbmc_project.ObjectMapper", "GetObject",
+            async_wait_getobject_callback, data, "sas", wait->objs[i], 0, NULL);
         if (r < 0)
         {
             free(data);
@@ -406,9 +406,11 @@
 
     sd_event_source_unref(subtree->event_source);
     r = sd_bus_call_method_async(
-        subtree->conn, NULL, MAPPER_BUSNAME, MAPPER_PATH, MAPPER_INTERFACE,
-        "GetSubTreePaths", async_subtree_getpaths_callback, subtree, "sias",
-        subtree->namespace, 0, 1, subtree->interface);
+        subtree->conn, NULL, "xyz.openbmc_project.ObjectMapper",
+        "/xyz/openbmc_project/object_mapper",
+        "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths",
+        async_subtree_getpaths_callback, subtree, "sias", subtree->namespace, 0,
+        1, subtree->interface);
     if (r < 0)
         async_subtree_done(r, subtree);
 
@@ -499,9 +501,11 @@
     subtree->retry = 0;
     subtree->event_source = NULL;
     r = sd_bus_call_method_async(
-        subtree->conn, NULL, MAPPER_BUSNAME, MAPPER_PATH, MAPPER_INTERFACE,
-        "GetSubTreePaths", async_subtree_getpaths_callback, subtree, "sias",
-        subtree->namespace, 0, 1, subtree->interface);
+        subtree->conn, NULL, "xyz.openbmc_project.ObjectMapper",
+        "/xyz/openbmc_project/object_mapper",
+        "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths",
+        async_subtree_getpaths_callback, subtree, "sias", subtree->namespace, 0,
+        1, subtree->interface);
     if (r < 0)
     {
         fprintf(stderr, "Error invoking method: %s\n", strerror(-r));
@@ -602,9 +606,10 @@
     sd_bus_message* request = NULL;
     int r, retry = 0;
 
-    r = sd_bus_message_new_method_call(conn, &request, MAPPER_BUSNAME,
-                                       MAPPER_PATH, MAPPER_INTERFACE,
-                                       "GetObject");
+    r = sd_bus_message_new_method_call(
+        conn, &request, "xyz.openbmc_project.ObjectMapper",
+        "/xyz/openbmc_project/object_mapper",
+        "xyz.openbmc_project.ObjectMapper", "GetObject");
     if (r < 0)
         goto exit;
 
