diff --git a/example/calculator-server.cpp b/example/calculator-server.cpp
index e72c493..753d2d7 100644
--- a/example/calculator-server.cpp
+++ b/example/calculator-server.cpp
@@ -3,20 +3,22 @@
 #include <net/poettering/Calculator/server.hpp>
 #include <net/poettering/Calculator/error.hpp>
 
-using Calculator_inherit = sdbusplus::server::object_t<
-        sdbusplus::net::poettering::server::Calculator>;
+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) { }
+        Calculator_inherit(bus, path)
+    {
+    }
 
     /** Multiply (x*y), update lastResult */
     int64_t multiply(int64_t x, int64_t y) override
     {
-        return lastResult(x*y);
+        return lastResult(x * y);
     }
 
     /** Divide (x/y), update lastResult
@@ -32,7 +34,7 @@
             throw DivisionByZero();
         }
 
-        return lastResult(x/y);
+        return lastResult(x / y);
     }
 
     /** Clear lastResult, broadcast 'Cleared' signal */
@@ -62,7 +64,7 @@
     Calculator c1{b, path};
 
     // Handle dbus processing forever.
-    while(1)
+    while (1)
     {
         b.process_discard(); // discard any unhandled messages
         b.wait();
diff --git a/example/list-users.cpp b/example/list-users.cpp
index 245bf63..d5e59d6 100644
--- a/example/list-users.cpp
+++ b/example/list-users.cpp
@@ -12,16 +12,15 @@
     using namespace sdbusplus;
 
     auto b = bus::new_system();
-    auto m = b.new_method_call("org.freedesktop.login1",
-                               "/org/freedesktop/login1",
-                               "org.freedesktop.login1.Manager",
-                               "ListUsers");
+    auto m =
+        b.new_method_call("org.freedesktop.login1", "/org/freedesktop/login1",
+                          "org.freedesktop.login1.Manager", "ListUsers");
     auto reply = b.call(m);
 
     std::vector<std::tuple<uint32_t, std::string, message::object_path>> users;
     reply.read(users);
 
-    for(auto& user : users)
+    for (auto& user : users)
     {
         std::cout << std::get<std::string>(user) << "\n";
     }
