diff --git a/tools/sdbusplus/interface.py b/tools/sdbusplus/interface.py
index 9034f8e..0cdb1a0 100644
--- a/tools/sdbusplus/interface.py
+++ b/tools/sdbusplus/interface.py
@@ -4,8 +4,9 @@
 from .property import Property
 from .method import Method
 from .signal import Signal
+from .renderer import Renderer
 
-class Interface(NamedElement):
+class Interface(NamedElement, Renderer):
     @staticmethod
     def load(name, rootdir='.'):
         filename = os.path.join(rootdir,
@@ -28,5 +29,4 @@
         super(Interface, self).__init__(**kwargs)
 
     def markdown(self, loader):
-        template = loader.get_template("interface.mako.md")
-        return template.render(interface=self, loader=loader)
+        return self.render(loader, "interface.mako.md", interface=self)
diff --git a/tools/sdbusplus/method.py b/tools/sdbusplus/method.py
index b4142cb..f8e2efd 100644
--- a/tools/sdbusplus/method.py
+++ b/tools/sdbusplus/method.py
@@ -1,7 +1,8 @@
 from .property import Property
 from .namedelement import NamedElement
+from .renderer import Renderer
 
-class Method(NamedElement):
+class Method(NamedElement, Renderer):
     def __init__(self, **kwargs):
         self.parameters = [ Property(**p) for p in
             kwargs.pop('parameters', []) ]
@@ -12,5 +13,4 @@
         super(Method, self).__init__(**kwargs)
 
     def markdown(self, loader):
-        template = loader.get_template("method.mako.md")
-        return template.render(method=self, loader=loader)
+        return self.render(loader, "method.mako.md", method=self)
diff --git a/tools/sdbusplus/property.py b/tools/sdbusplus/property.py
index 5b25869..869eef6 100644
--- a/tools/sdbusplus/property.py
+++ b/tools/sdbusplus/property.py
@@ -1,6 +1,7 @@
 from .namedelement import NamedElement
+from .renderer import Renderer
 
-class Property(NamedElement):
+class Property(NamedElement, Renderer):
     def __init__(self, **kwargs):
         self.typeName = kwargs.pop('type', None)
         self.defaultValue = kwargs.pop('default', None)
@@ -8,5 +9,4 @@
         super(Property, self).__init__(**kwargs)
 
     def markdown(self, loader):
-        template = loader.get_template("property.mako.md")
-        return template.render(property=self, loader=loader).strip()
+        return self.render(loader, "property.mako.md", property=self).strip()
diff --git a/tools/sdbusplus/renderer.py b/tools/sdbusplus/renderer.py
new file mode 100644
index 0000000..24e83c8
--- /dev/null
+++ b/tools/sdbusplus/renderer.py
@@ -0,0 +1,7 @@
+class Renderer(object):
+    def __init__(self, **kwargs):
+        super(Renderer, self).__init__(**kwargs)
+
+    def render(self, loader, template, **kwargs):
+        t = loader.get_template(template)
+        return t.render(loader=loader, **kwargs)
diff --git a/tools/sdbusplus/signal.py b/tools/sdbusplus/signal.py
index 3afe759..42dcdce 100644
--- a/tools/sdbusplus/signal.py
+++ b/tools/sdbusplus/signal.py
@@ -1,7 +1,8 @@
 from .property import Property
 from .namedelement import NamedElement
+from .renderer import Renderer
 
-class Signal(NamedElement):
+class Signal(NamedElement, Renderer):
     def __init__(self, **kwargs):
         self.properties = [ Property(**p) for p in
             kwargs.pop('properties', []) ]
@@ -9,5 +10,4 @@
         super(Signal, self).__init__(**kwargs)
 
     def markdown(self, loader):
-        template = loader.get_template("signal.mako.md")
-        return template.render(signal=self, loader=loader)
+        return self.render(loader, "signal.mako.md", signal=self)
