diff --git a/example/get-all-properties.cpp b/example/get-all-properties.cpp
index eaa2116..330e0c1 100644
--- a/example/get-all-properties.cpp
+++ b/example/get-all-properties.cpp
@@ -25,22 +25,20 @@
         demo_ =
             objServer_.add_unique_interface(demoObjectPath, demoInterfaceName);
 
-        demo_->register_property_r(propertyGrettingName, std::string(),
-                                   sdbusplus::vtable::property_::const_,
-                                   [this](const auto&) { return greetings_; });
+        demo_->register_property_r<std::string>(
+            propertyGrettingName, sdbusplus::vtable::property_::const_,
+            [this](const auto&) { return greetings_; });
 
-        demo_->register_property_rw(
-            propertyGoodbyesName, std::string(),
-            sdbusplus::vtable::property_::emits_change,
+        demo_->register_property_rw<std::string>(
+            propertyGoodbyesName, sdbusplus::vtable::property_::emits_change,
             [this](const auto& newPropertyValue, const auto&) {
                 goodbyes_ = newPropertyValue;
                 return 1;
             },
             [this](const auto&) { return goodbyes_; });
 
-        demo_->register_property_r(
-            propertyValueName, uint32_t{42},
-            sdbusplus::vtable::property_::const_,
+        demo_->register_property_r<uint32_t>(
+            propertyValueName, sdbusplus::vtable::property_::const_,
             [](const auto& value) -> uint32_t { return value; });
 
         demo_->initialize();
diff --git a/example/register-property.cpp b/example/register-property.cpp
index 6537aca..339c0ce 100644
--- a/example/register-property.cpp
+++ b/example/register-property.cpp
@@ -23,13 +23,12 @@
         demo_ = objServer_.add_unique_interface(
             demoObjectPath, demoInterfaceName,
             [this](sdbusplus::asio::dbus_interface& demo) {
-                demo.register_property_r(
-                    propertyGrettingName, std::string(),
-                    sdbusplus::vtable::property_::const_,
+                demo.register_property_r<std::string>(
+                    propertyGrettingName, sdbusplus::vtable::property_::const_,
                     [this](const auto&) { return greetings_; });
 
-                demo.register_property_rw(
-                    propertyGoodbyesName, std::string(),
+                demo.register_property_rw<std::string>(
+                    propertyGoodbyesName,
                     sdbusplus::vtable::property_::emits_change,
                     [this](const auto& newPropertyValue, const auto&) {
                         goodbyes_ = newPropertyValue;
diff --git a/include/sdbusplus/asio/object_server.hpp b/include/sdbusplus/asio/object_server.hpp
index 68e75f0..ac1c83a 100644
--- a/include/sdbusplus/asio/object_server.hpp
+++ b/include/sdbusplus/asio/object_server.hpp
@@ -293,8 +293,8 @@
     {}
     int call(message_t& m) override
     {
-        auto r = func_(*value_);
-        m.append(r);
+        *value_ = func_(*value_);
+        m.append(*value_);
         return 1;
     }
 
@@ -410,6 +410,15 @@
         return true;
     }
 
+    template <typename PropertyType, typename CallbackTypeGet>
+    bool register_property_r(const std::string& name,
+                             decltype(vtable_t::flags) flags,
+                             CallbackTypeGet&& getFunction)
+    {
+        return register_property_r(name, PropertyType{}, flags,
+                                   std::forward<CallbackTypeGet>(getFunction));
+    }
+
     template <typename PropertyType, typename CallbackTypeSet,
               typename CallbackTypeGet>
     bool register_property_rw(const std::string& name,
@@ -447,6 +456,18 @@
         return true;
     }
 
+    template <typename PropertyType, typename CallbackTypeSet,
+              typename CallbackTypeGet>
+    bool register_property_rw(const std::string& name,
+                              decltype(vtable_t::flags) flags,
+                              CallbackTypeSet&& setFunction,
+                              CallbackTypeGet&& getFunction)
+    {
+        return register_property_rw(name, PropertyType{}, flags,
+                                    std::forward<CallbackTypeSet>(setFunction),
+                                    std::forward<CallbackTypeGet>(getFunction));
+    }
+
     // default getter and setter
     template <typename PropertyType>
     bool register_property(
