diff --git a/.gitignore b/.gitignore
index e15877d..122f6eb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,4 @@
 configure
 stamp-h1
 phosphor-logging-*.*
+xyz/openbmc_project/Logging/Internal/Manager/
diff --git a/Makefile.am b/Makefile.am
index d0b1de0..f56fc37 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,9 @@
 	phosphor-logging/elog-errors-HostEvent.hpp
 
 # Generate this header, don't export in a distro
-nodist_include_HEADERS = elog-gen.hpp
+nodist_include_HEADERS = \
+	elog-gen.hpp \
+	xyz/openbmc_project/Logging/Internal/Manager/server.hpp
 
 libphosphor_logging_FILES = \
 	elog.cpp
@@ -26,17 +28,23 @@
 sbin_PROGRAMS = phosphor-log-manager
 
 phosphor_log_manager_SOURCES = \
-	xyz.openbmc_project.Logging.Internal.Manager.cpp \
+	xyz/openbmc_project/Logging/Internal/Manager/server.cpp \
 	log_manager.cpp \
 	log_manager_main.cpp \
 	elog_entry.cpp
 
 # Be sure to build needed files before compiling
-BUILT_SOURCES = elog-gen.hpp elog-lookup.cpp
+BUILT_SOURCES = \
+	elog-gen.hpp \
+	elog-lookup.cpp \
+	xyz/openbmc_project/Logging/Internal/Manager/server.cpp \
+	xyz/openbmc_project/Logging/Internal/Manager/server.hpp
 
 CLEANFILES = \
 	elog-gen.hpp \
-	elog-lookup.cpp
+	elog-lookup.cpp \
+	xyz/openbmc_project/Logging/Internal/Manager/server.cpp \
+	xyz/openbmc_project/Logging/Internal/Manager/server.hpp
 
 # systemd required for journal interfaces
 logging_test_LDFLAGS = $(SYSTEMD_LIBS) $(SDBUSPLUS_LIBS)
@@ -50,6 +58,14 @@
 		$(SDBUSPLUS_CFLAGS) \
 		$(PHOSPHOR_DBUS_INTERFACES_CFLAGS)
 
+xyz/openbmc_project/Logging/Internal/Manager/server.cpp: xyz/openbmc_project/Logging/Internal/Manager.interface.yaml xyz/openbmc_project/Logging/Internal/Manager/server.hpp
+	@mkdir -p `dirname $@`
+	$(SDBUSPLUSPLUS) -r $(srcdir) interface server-cpp xyz.openbmc_project.Logging.Internal.Manager > $@
+
+xyz/openbmc_project/Logging/Internal/Manager/server.hpp: xyz/openbmc_project/Logging/Internal/Manager.interface.yaml
+	@mkdir -p `dirname $@`
+	$(SDBUSPLUSPLUS) -r $(srcdir) interface server-header xyz.openbmc_project.Logging.Internal.Manager > $@
+
 ELOG_MAKO ?= elog-gen-template.mako.hpp
 LOOKUP_MAKO ?= elog-lookup-template.mako.cpp
 ELOG_YAML_DIR ?= tools/example/xyz/openbmc_project/Example/
diff --git a/configure.ac b/configure.ac
index 3c6caca..c99fc1f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -14,6 +14,8 @@
 AM_PROG_AR
 AC_PROG_INSTALL #Checks/sets the install variable to be used
 AC_PROG_MAKE_SET
+AC_PROG_MKDIR_P
+AC_CHECK_PROG([DIRNAME], dirname, dirname)
 # Python
 AM_PATH_PYTHON([2.7], [AC_SUBST([PYTHON], [echo "$PYTHON"])], [AC_MSG_ERROR(
     [Could not find python-2.7 installed...python-2.7 is required])])
@@ -29,12 +31,10 @@
 AX_PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus], [], [], [AC_MSG_ERROR(["sdbusplus required and not found."])])
 AX_PKG_CHECK_MODULES([PHOSPHOR_DBUS_INTERFACES], [], [phosphor-dbus-interfaces], [], [AC_MSG_ERROR(["phosphor-dbus-interfaces required and not found."])])
 
-AC_CHECK_HEADER(systemd/sd-journal.h, ,[AC_MSG_ERROR([Could not find \
-systemd/sd-journal.h...systemd developement package required])])
-AC_CHECK_HEADER(systemd/sd-bus.h, ,[AC_MSG_ERROR([Could not find \
-systemd/sd-bus.h...systemd developement package required])])
-AC_CHECK_HEADER(sdbusplus/server.hpp, ,[AC_MSG_ERROR([Could not find \
-sdbusplus/server.hpp...openbmc/sdbusplus package required])])
+# Check for sdbus++
+AC_PATH_PROG([SDBUSPLUSPLUS], [sdbus++])
+AS_IF([test "x$SDBUSPLUSPLUS" == "x"],
+    AC_MSG_ERROR(["Requires sdbus++"]))
 
 # Check/set gtest specific functions.
 AX_PTHREAD([GTEST_CPPFLAGS="-DGTEST_HAS_PTHREAD=1"],[GTEST_CPPFLAGS="-DGTEST_HAS_PTHREAD=0"])
diff --git a/xyz.openbmc_project.Logging.Internal.Manager.cpp b/xyz.openbmc_project.Logging.Internal.Manager.cpp
deleted file mode 100644
index 2afdb6d..0000000
--- a/xyz.openbmc_project.Logging.Internal.Manager.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#include <algorithm>
-#include <sdbusplus/server.hpp>
-#include <sdbusplus/exception.hpp>
-#include <xyz/openbmc_project/Logging/Internal/Manager/server.hpp>
-
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Logging
-{
-namespace Internal
-{
-namespace server
-{
-
-Manager::Manager(bus::bus& bus, const char* path)
-        : _xyz_openbmc_project_Logging_Internal_Manager_interface(
-                bus, path, _interface, _vtable, this)
-{
-}
-
-
-int Manager::_callback_Commit(
-        sd_bus_message* msg, void* context, sd_bus_error* error)
-{
-    using sdbusplus::server::binding::details::convertForMessage;
-
-    try
-    {
-        auto m = message::message(sd_bus_message_ref(msg));
-
-        uint64_t transactionId{};
-    std::string errMsg{};
-
-        m.read(transactionId, errMsg);
-
-        auto o = static_cast<Manager*>(context);
-        o->commit(transactionId, errMsg);
-
-        auto reply = m.new_method_return();
-        // No data to append on reply.
-
-        reply.method_return();
-    }
-    catch(sdbusplus::internal_exception_t& e)
-    {
-        sd_bus_error_set_const(error, e.name(), e.description());
-        return -EINVAL;
-    }
-
-    return true;
-}
-
-namespace details
-{
-namespace Manager
-{
-static const auto _param_Commit =
-        utility::tuple_to_array(message::types::type_id<
-                uint64_t, std::string>());
-static const auto _return_Commit =
-        utility::tuple_to_array(std::make_tuple('\0'));
-}
-}
-
-
-
-
-const vtable::vtable_t Manager::_vtable[] = {
-    vtable::start(),
-
-    vtable::method("Commit",
-                   details::Manager::_param_Commit
-                        .data(),
-                   details::Manager::_return_Commit
-                        .data(),
-                   _callback_Commit),
-    vtable::end()
-};
-
-} // namespace server
-} // namespace Internal
-} // namespace Logging
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
diff --git a/xyz/openbmc_project/Logging/Internal/Manager/server.hpp b/xyz/openbmc_project/Logging/Internal/Manager/server.hpp
deleted file mode 100644
index bbbdef8..0000000
--- a/xyz/openbmc_project/Logging/Internal/Manager/server.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#pragma once
-#include <tuple>
-#include <systemd/sd-bus.h>
-#include <sdbusplus/server.hpp>
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Logging
-{
-namespace Internal
-{
-namespace server
-{
-
-class Manager
-{
-    public:
-        /* Define all of the basic class operations:
-         *     Not allowed:
-         *         - Default constructor to avoid nullptrs.
-         *         - Copy operations due to internal unique_ptr.
-         *         - Move operations due to 'this' being registered as the
-         *           'context' with sdbus.
-         *     Allowed:
-         *         - Destructor.
-         */
-        Manager() = delete;
-        Manager(const Manager&) = delete;
-        Manager& operator=(const Manager&) = delete;
-        Manager(Manager&&) = delete;
-        Manager& operator=(Manager&&) = delete;
-        virtual ~Manager() = default;
-
-        /** @brief Constructor to put object onto bus at a dbus path.
-         *  @param[in] bus - Bus to attach to.
-         *  @param[in] path - Path to attach at.
-         */
-        Manager(bus::bus& bus, const char* path);
-
-
-
-        /** @brief Implementation for Commit
-         *  Write the requested error/event entry with its associated metadata fields to flash.
-         *
-         *  @param[in] transactionId - The unique identifier of the journal entry(ies) to be committed.
-         *  @param[in] errMsg - The error exception message associated with the error event log to be committed.
-         */
-        virtual void commit(
-            uint64_t transactionId,
-            std::string errMsg) = 0;
-
-
-
-
-    private:
-
-        /** @brief sd-bus callback for Commit
-         */
-        static int _callback_Commit(
-            sd_bus_message*, void*, sd_bus_error*);
-
-
-        static constexpr auto _interface = "xyz.openbmc_project.Logging.Internal.Manager";
-        static const vtable::vtable_t _vtable[];
-        sdbusplus::server::interface::interface
-                _xyz_openbmc_project_Logging_Internal_Manager_interface;
-
-
-};
-
-
-} // namespace server
-} // namespace Internal
-} // namespace Logging
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
