diff --git a/clients/shell/src/chat/vdl/chat.vdl.go b/clients/shell/src/chat/vdl/chat.vdl.go
index 7351307..db5c5f6 100644
--- a/clients/shell/src/chat/vdl/chat.vdl.go
+++ b/clients/shell/src/chat/vdl/chat.vdl.go
@@ -28,31 +28,17 @@
 }
 
 // ChatClient returns a client stub for Chat.
-func ChatClient(name string, opts ...rpc.BindOpt) ChatClientStub {
-	var client rpc.Client
-	for _, opt := range opts {
-		if clientOpt, ok := opt.(rpc.Client); ok {
-			client = clientOpt
-		}
-	}
-	return implChatClientStub{name, client}
+func ChatClient(name string) ChatClientStub {
+	return implChatClientStub{name}
 }
 
 type implChatClientStub struct {
-	name   string
-	client rpc.Client
-}
-
-func (c implChatClientStub) c(ctx *context.T) rpc.Client {
-	if c.client != nil {
-		return c.client
-	}
-	return v23.GetClient(ctx)
+	name string
 }
 
 func (c implChatClientStub) SendMessage(ctx *context.T, i0 string, opts ...rpc.CallOpt) (err error) {
 	var call rpc.ClientCall
-	if call, err = c.c(ctx).StartCall(ctx, c.name, "SendMessage", []interface{}{i0}, opts...); err != nil {
+	if call, err = v23.GetClient(ctx).StartCall(ctx, c.name, "SendMessage", []interface{}{i0}, opts...); err != nil {
 		return
 	}
 	err = call.Finish()
