diff --git a/.gitignore b/.gitignore
index 08fb35b..43f2f95 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,6 +41,7 @@
 /config.h.in~
 /config.log
 /config.status
+/openpower-version-host-software-manager
 Makefile
 .deps
 *-libtool
diff --git a/Makefile.am b/Makefile.am
new file mode 100755
index 0000000..7d8aa90
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,21 @@
+AM_DEFAULT_SOURCE_EXT = .cpp
+
+sbin_PROGRAMS = \
+	openpower-version-host-software-manager
+
+openpower_version_host_software_manager_SOURCES = \
+	version_host_software_manager.cpp \
+	version_host_software_manager_main.cpp
+
+generic_cxxflags = \
+	$(SYSTEMD_CFLAGS) \
+	$(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
+	$(SDBUSPLUS_CFLAGS)
+generic_ldflags = \
+	$(SYSTEMD_LIBS) \
+	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
+	$(SDBUSPLUS_LIBS)
+
+openpower_version_host_software_manager_CXXFLAGS = $(generic_cxxflags)
+openpower_version_host_software_manager_LDFLAGS = $(generic_ldflags)
+
diff --git a/bootstrap.sh b/bootstrap.sh
new file mode 100755
index 0000000..f861496
--- /dev/null
+++ b/bootstrap.sh
@@ -0,0 +1,18 @@
+#!/bin/sh -xe
+
+AUTOCONF_FILES="Makefile.in aclocal.m4 ar-lib autom4te.cache compile \
+        config.guess config.h.in config.sub configure depcomp install-sh \
+        ltmain.sh missing *libtool test-driver"
+
+case $1 in
+    clean)
+        test -f Makefile && make maintainer-clean
+        for file in ${AUTOCONF_FILES}; do
+            find -name "$file" | xargs -r rm -rf
+        done
+        exit 0
+        ;;
+esac
+
+autoreconf -i
+echo 'Run "./configure ${CONFIGURE_FLAGS} && make"'
diff --git a/configure.ac b/configure.ac
new file mode 100755
index 0000000..eaf171f
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,37 @@
+AC_PREREQ([2.69])
+AC_INIT([openpower-pnor-code-mgmt], [1.0], [https://github.com/openbmc/openpower-pnor-code-mgmt/issues])
+AC_LANG([C++])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign dist-xz])
+AM_SILENT_RULES([yes])
+
+# Checks for programs
+AC_PROG_CXX
+AC_PROG_INSTALL #Checks/sets the install variable to be used
+AC_PROG_MAKE_SET
+
+# Check for libraries
+PKG_CHECK_MODULES([PHOSPHOR_DBUS_INTERFACES], [phosphor-dbus-interfaces],,\
+    AC_MSG_ERROR(["Requires phosphor-dbus-interfaces package."]))
+PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus],,
+    AC_MSG_ERROR(["Requires sdbusplus package."]))
+
+# Checks for library functions
+LT_INIT # Required for systemd linking
+
+# Checks for typedefs, structures, and compiler characteristics.
+AX_CXX_COMPILE_STDCXX_14([noext])
+AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS])
+
+AC_ARG_VAR(VERSION_BUSNAME, [The Dbus busname to own])
+AS_IF([test "x$VERSION_BUSNAME" == "x"],
+    [VERSION_BUSNAME="org.open_power.Software.Host.Version"])
+AC_DEFINE_UNQUOTED([VERSION_BUSNAME], ["$VERSION_BUSNAME"], [The DBus busname to own])
+
+AC_ARG_VAR(SOFTWARE_OBJPATH, [The software manager Dbus root])
+AS_IF([test "x$SOFTWARE_OBJPATH" == "x"], [SOFTWARE_OBJPATH="/xyz/openbmc_project/software"])
+AC_DEFINE_UNQUOTED([SOFTWARE_OBJPATH], ["$SOFTWARE_OBJPATH"], [The software manager Dbus root])
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+
diff --git a/version_host_software_manager.cpp b/version_host_software_manager.cpp
new file mode 100755
index 0000000..1fc562e
--- /dev/null
+++ b/version_host_software_manager.cpp
@@ -0,0 +1,13 @@
+#include "version_host_software_manager.hpp"
+
+namespace openpower
+{
+namespace software
+{
+namespace manager
+{
+
+} // namespace manager
+} // namespace software
+} // namepsace openpower
+
diff --git a/version_host_software_manager.hpp b/version_host_software_manager.hpp
new file mode 100755
index 0000000..d674f9c
--- /dev/null
+++ b/version_host_software_manager.hpp
@@ -0,0 +1,37 @@
+#pragma once
+
+#include <sdbusplus/bus.hpp>
+#include "xyz/openbmc_project/Software/Version/server.hpp"
+
+namespace openpower
+{
+namespace software
+{
+namespace manager
+{
+
+using VersionInherit = sdbusplus::server::object::object<
+    sdbusplus::xyz::openbmc_project::Software::server::Version>;
+
+/** @class Version
+ *  @brief OpenBMC version software management implementation.
+ *  @details A concrete implementation for xyz.openbmc_project.Software.Version
+ *  DBus API.
+ */
+class Version : public VersionInherit
+{
+    public:
+        /** @brief Constructs Version Software Manager
+         *
+         * @param[in] bus       - The Dbus bus object
+         * @param[in] objPath   - The Dbus object path
+         */
+        Version(sdbusplus::bus::bus& bus,
+                const char* objPath) : VersionInherit(
+                    bus, objPath) {};
+};
+
+} // namespace manager
+} // namespace software
+} // namespace openpower
+
diff --git a/version_host_software_manager_main.cpp b/version_host_software_manager_main.cpp
new file mode 100755
index 0000000..5b77904
--- /dev/null
+++ b/version_host_software_manager_main.cpp
@@ -0,0 +1,21 @@
+#include <sdbusplus/bus.hpp>
+#include "config.h"
+#include "version_host_software_manager.hpp"
+
+int main(int argc, char* argv[])
+{
+    auto bus = sdbusplus::bus::new_default();
+
+    // Add sdbusplus ObjectManager.
+    sdbusplus::server::manager::manager objManager(bus,
+            SOFTWARE_OBJPATH);
+
+    bus.request_name(VERSION_BUSNAME);
+
+    while (true)
+    {
+        bus.process_discard();
+        bus.wait();
+    }
+    return 0;
+}
