diff --git a/tools/sdbusplus/templates/interface.server.hpp.mako b/tools/sdbusplus/templates/interface.server.hpp.mako
index 6e5691d..079b441 100644
--- a/tools/sdbusplus/templates/interface.server.hpp.mako
+++ b/tools/sdbusplus/templates/interface.server.hpp.mako
@@ -47,7 +47,7 @@
         ${interface.classname}(bus_t& bus, const char* path) :
             _${interface.joinedName("_", "interface")}(
                 bus, path, interface, _vtable, this),
-            _intf(bus.getInterface()) {}
+            _sdbusplus_bus(bus) {}
 
     % if interface.properties:
         using PropertiesVariant = sdbusplus::utility::dedup_variant_t<
@@ -121,6 +121,12 @@
             _${interface.joinedName("_", "interface")}.emit_removed();
         }
 
+        /** @return the bus instance */
+        bus_t& get_bus()
+        {
+            return  _sdbusplus_bus;
+        }
+
     private:
     % for m in interface.methods:
 ${ m.cpp_prototype(loader, interface=interface, ptype='callback-header') }
@@ -142,7 +148,7 @@
         static const vtable_t _vtable[];
         sdbusplus::server::interface_t
                 _${interface.joinedName("_", "interface")};
-        sdbusplus::SdBusInterface* _intf;
+        bus_t&  _sdbusplus_bus;
     % for p in interface.properties:
         % if p.defaultValue is not None:
         ${p.cppTypeParam(interface.name)} _${p.camelCase} = \
diff --git a/tools/sdbusplus/templates/method.prototype.hpp.mako b/tools/sdbusplus/templates/method.prototype.hpp.mako
index 569bf2c..d39491a 100644
--- a/tools/sdbusplus/templates/method.prototype.hpp.mako
+++ b/tools/sdbusplus/templates/method.prototype.hpp.mako
@@ -77,7 +77,7 @@
 <true>\
     % endif
 (
-                msg, o->_intf, error,
+                msg, o->get_bus().getInterface(), error,
                 std::function(
                     [=](${method.parameters_as_arg_list(interface)})
                     {
@@ -89,7 +89,7 @@
     % for e in method.errors:
     catch(const sdbusplus::${error_namespace(e)}::${error_name(e)}& e)
     {
-        return o->_intf->sd_bus_error_set(error, e.name(), e.description());
+        return o->get_bus().getInterface()->sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
 }
diff --git a/tools/sdbusplus/templates/property.prototype.hpp.mako b/tools/sdbusplus/templates/property.prototype.hpp.mako
index 86cd8dd..aa35671 100644
--- a/tools/sdbusplus/templates/property.prototype.hpp.mako
+++ b/tools/sdbusplus/templates/property.prototype.hpp.mako
@@ -33,7 +33,7 @@
     % endif
     {
         return sdbusplus::sdbuspp::property_callback(
-                reply, o->_intf, error,
+                reply, o->get_bus().getInterface(), error,
                 std::function(
                     [=]()
                     {
@@ -44,7 +44,7 @@
     % for e in property.errors:
     catch(const sdbusplus::${error_namespace(e)}::${error_name(e)}& e)
     {
-        return o->_intf->sd_bus_error_set(error, e.name(), e.description());
+        return o->get_bus().getInterface()->sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
 }
@@ -84,7 +84,7 @@
     % endif
     {
         return sdbusplus::sdbuspp::property_callback(
-                value, o->_intf, error,
+                value, o->get_bus().getInterface(), error,
                 std::function(
                     [=](${property.cppTypeParam(interface.name)}&& arg)
                     {
@@ -95,7 +95,7 @@
     % for e in property.errors:
     catch(const sdbusplus::${error_namespace(e)}::${error_name(e)}& e)
     {
-        return o->_intf->sd_bus_error_set(error, e.name(), e.description());
+        return o->get_bus().getInterface()->sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
 }
