diff --git a/helper.go b/helper.go
index 04fa2b7779b17fbe3ae7ed541e1dd9b66fa2deb3..56bdb8bcf28ac4456889d7b074ae0a091f8f5312 100644
--- a/helper.go
+++ b/helper.go
@@ -2,11 +2,20 @@ package jrpc
 
 import "context"
 
-func Do[T any](ctx context.Context, c Conn, method string, args any) (T, error) {
+func Do[T any](ctx context.Context, c Conn, method string, args any) (*T, error) {
 	var t T
-	err := c.Do(ctx, t, method, args)
+	err := c.Do(ctx, &t, method, args)
 	if err != nil {
-		return t, err
+		return nil, err
 	}
-	return t, nil
+	return &t, nil
+}
+
+func Call[T any](ctx context.Context, c Conn, method string, args ...any) (*T, error) {
+	var t T
+	err := c.Call(ctx, &t, method, args)
+	if err != nil {
+		return nil, err
+	}
+	return &t, nil
 }