diff --git a/include/sdbusplus/asio/object_server.hpp b/include/sdbusplus/asio/object_server.hpp
index e8590b6..d489d85 100644
--- a/include/sdbusplus/asio/object_server.hpp
+++ b/include/sdbusplus/asio/object_server.hpp
@@ -58,15 +58,17 @@
   public:
     method_callback(const std::string& name,
                     std::function<int(message_t&)>&& call,
-                    const char* arg_signature, const char* return_signature) :
+                    const char* arg_signature, const char* return_signature,
+                    decltype(vtable_t::flags) flags) :
         name_(name),
         call_(std::move(call)), arg_signature_(arg_signature),
-        return_signature_(return_signature)
+        return_signature_(return_signature), flags_(flags)
     {}
     std::string name_;
     std::function<int(message_t&)> call_;
     const char* arg_signature_;
     const char* return_signature_;
+    decltype(vtable_t::flags) flags_;
 };
 
 class signal
@@ -578,7 +580,8 @@
     }
 
     template <typename CallbackType>
-    bool register_method(const std::string& name, CallbackType&& handler)
+    bool register_method(const std::string& name, CallbackType&& handler,
+                         decltype(vtable_t::flags) flags = 0)
     {
         using ActualSignature = boost::callable_traits::args_t<CallbackType>;
         using CallbackSignature = utility::strip_first_n_args_t<
@@ -607,7 +610,7 @@
             func = callback_method_instance<CallbackType>(std::move(handler));
         }
         method_callbacks_.emplace_back(name, std::move(func), argType.data(),
-                                       resultType.data());
+                                       resultType.data(), flags);
 
         return true;
     }
@@ -755,11 +758,11 @@
         method_callbacks_.shrink_to_fit();
         for (auto& element : method_callbacks_)
         {
-            vtable_.emplace_back(
-                vtable::method_o(element.name_.c_str(), element.arg_signature_,
-                                 element.return_signature_, method_handler,
-                                 reinterpret_cast<size_t>(&element),
-                                 SD_BUS_VTABLE_ABSOLUTE_OFFSET));
+            vtable_.emplace_back(vtable::method_o(
+                element.name_.c_str(), element.arg_signature_,
+                element.return_signature_, method_handler,
+                reinterpret_cast<size_t>(&element),
+                element.flags_ | SD_BUS_VTABLE_ABSOLUTE_OFFSET));
         }
 
         signals_.shrink_to_fit();
