diff --git a/example/Makefile.am b/example/Makefile.am
new file mode 100644
index 0000000..c9fb907
--- /dev/null
+++ b/example/Makefile.am
@@ -0,0 +1,44 @@
+noinst_PROGRAMS = calculator-server
+
+calculator_server_generated_files = \
+	net/poettering/Calculator/server.hpp \
+	net/poettering/Calculator/server.cpp \
+	net/poettering/Calculator/error.hpp \
+	net/poettering/Calculator/error.cpp
+
+calculator_markdown_generated_files = \
+	calculator.md
+
+calculator_server_SOURCES = \
+	calculator-server.cpp $(calculator_server_generated_files)
+calculator_server_CXXFLAGS = $(SYSTEMD_CFLAGS)
+calculator_server_LDADD = $(SYSTEMD_LIBS) ../libsdbusplus.la
+
+BUILT_SOURCES = \
+	$(calculator_server_generated_files) \
+	$(calculator_markdown_generated_files)
+CLEANFILES = \
+	$(calculator_server_generated_files) \
+	$(calculator_markdown_generated_files)
+
+net/poettering/Calculator/server.hpp:
+	@top_srcdir@/tools/sdbus++ -r . \
+	    interface server-header net.poettering.Calculator > $@
+
+net/poettering/Calculator/server.cpp:
+	@top_srcdir@/tools/sdbus++ -r . \
+	    interface server-cpp net.poettering.Calculator > $@
+
+net/poettering/Calculator/error.hpp:
+	@top_srcdir@/tools/sdbus++ -r . \
+	    error exception-header net.poettering.Calculator > $@
+
+net/poettering/Calculator/error.cpp:
+	@top_srcdir@/tools/sdbus++ -r . \
+	    error exception-cpp net.poettering.Calculator > $@
+
+calculator.md:
+	@top_srcdir@/tools/sdbus++ -r . \
+	    interface markdown net.poettering.Calculator > $@
+	@top_srcdir@/tools/sdbus++ -r . \
+	    error markdown net.poettering.Calculator >> $@
diff --git a/example/calculator-server.cpp b/example/calculator-server.cpp
new file mode 100644
index 0000000..e72c493
--- /dev/null
+++ b/example/calculator-server.cpp
@@ -0,0 +1,72 @@
+#include <iostream>
+#include <sdbusplus/server.hpp>
+#include <net/poettering/Calculator/server.hpp>
+#include <net/poettering/Calculator/error.hpp>
+
+using Calculator_inherit = sdbusplus::server::object_t<
+        sdbusplus::net::poettering::server::Calculator>;
+
+/** Example implementation of net.poettering.Calculator */
+struct Calculator : Calculator_inherit
+{
+    /** Constructor */
+    Calculator(sdbusplus::bus::bus& bus, const char* path) :
+        Calculator_inherit(bus, path) { }
+
+    /** Multiply (x*y), update lastResult */
+    int64_t multiply(int64_t x, int64_t y) override
+    {
+        return lastResult(x*y);
+    }
+
+    /** Divide (x/y), update lastResult
+     *
+     *  Throws DivisionByZero on error.
+     */
+    int64_t divide(int64_t x, int64_t y) override
+    {
+        using sdbusplus::net::poettering::Calculator::Error::DivisionByZero;
+        if (y == 0)
+        {
+            status(State::Error);
+            throw DivisionByZero();
+        }
+
+        return lastResult(x/y);
+    }
+
+    /** Clear lastResult, broadcast 'Cleared' signal */
+    void clear() override
+    {
+        auto v = lastResult();
+        lastResult(0);
+        cleared(v);
+        return;
+    }
+};
+
+int main()
+{
+    // Define a dbus path location to place the object.
+    constexpr auto path = "/net/poettering/calculator";
+
+    // Create a new bus and affix an object manager for the subtree path we
+    // intend to place objects at..
+    auto b = sdbusplus::bus::new_default();
+    sdbusplus::server::manager_t m{b, path};
+
+    // Reserve the dbus service name : net.poettering.Calculator
+    b.request_name("net.poettering.Calculator");
+
+    // Create a calculator object at /net/poettering/calculator
+    Calculator c1{b, path};
+
+    // Handle dbus processing forever.
+    while(1)
+    {
+        b.process_discard(); // discard any unhandled messages
+        b.wait();
+    }
+
+    return 0;
+}
