diff --git a/example/calculator-client.cpp b/example/calculator-client.cpp
index 7c9eab2..78c8880 100644
--- a/example/calculator-client.cpp
+++ b/example/calculator-client.cpp
@@ -16,8 +16,7 @@
     // been used to combine multiple interfaces into a single client-proxy.
 
     {
-        auto _ = co_await c.call<int64_t>(ctx, "Multiply", int64_t(7),
-                                          int64_t(6));
+        auto _ = co_await c.multiply(ctx, 7, 6);
         std::cout << "Should be 42: " << _ << std::endl;
     }
 
@@ -27,7 +26,7 @@
     }
 
     {
-        co_await c.call<>(ctx, "Clear");
+        co_await c.clear(ctx);
     }
 
     {
diff --git a/tools/meson.build b/tools/meson.build
index f7406c9..5890316 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -19,6 +19,7 @@
   'sdbusplus/templates/interface.server.cpp.mako',
   'sdbusplus/templates/interface.server.hpp.mako',
   'sdbusplus/templates/method.md.mako',
+  'sdbusplus/templates/method.client.hpp.mako',
   'sdbusplus/templates/method.prototype.hpp.mako',
   'sdbusplus/templates/property.md.mako',
   'sdbusplus/templates/property.prototype.hpp.mako',
diff --git a/tools/sdbusplus/templates/interface.client.hpp.mako b/tools/sdbusplus/templates/interface.client.hpp.mako
index 8400a88..879e415 100644
--- a/tools/sdbusplus/templates/interface.client.hpp.mako
+++ b/tools/sdbusplus/templates/interface.client.hpp.mako
@@ -35,12 +35,9 @@
     // indirectly through sdbusplus::async::client_t.
     ${interface.classname}() = delete;
 
-    // To be replaced by generators...
-    template <typename... Rs, typename... Ss>
-    auto call(sdbusplus::async::context& ctx, auto& method, Ss&&... ss) const
-    {
-        return proxy.template call<Rs...>(ctx, method, std::forward<Ss>(ss)...);
-    }
+    % for m in interface.methods:
+${m.render(loader, "method.client.hpp.mako", method=m, interface=interface)}
+    % endfor
 
     // To be replaced by generators...
     template <typename T>
diff --git a/tools/sdbusplus/templates/method.client.hpp.mako b/tools/sdbusplus/templates/method.client.hpp.mako
new file mode 100644
index 0000000..ca1c5a2
--- /dev/null
+++ b/tools/sdbusplus/templates/method.client.hpp.mako
@@ -0,0 +1,34 @@
+    /** @brief ${ method.name }
+     *  ${ method.description.strip() }
+    % if len(method.parameters) != 0:
+     *
+        % for p in method.parameters:
+     *  @param[in] ${p.camelCase} - ${p.description.strip()}
+        % endfor
+    % endif
+    % if len(method.returns) != 0:
+     *
+        % for r in method.returns:
+     *  @return ${r.camelCase}[${r.cppTypeParam(interface.name)}] \
+- ${r.description.strip()}
+        % endfor
+    % endif
+     */
+    auto ${method.camelCase}(
+            sdbusplus::async::context& ctx\
+    % if len(method.parameters) != 0:
+,
+    % else:
+
+    % endif
+            ${method.get_parameters_str(interface)})
+    {
+        return proxy.template call<${method.returns_as_list(interface)}>(
+            ctx, "${method.name}"\
+    % if len(method.parameters) != 0:
+,
+    % else:
+
+    % endif
+            ${method.parameters_as_list()});
+    }
