diff --git a/go/src/v.io/x/mojo/proxy/fake_service.go b/go/src/v.io/x/mojo/proxy/fake_service.go
index fd0e31d..78a86df 100644
--- a/go/src/v.io/x/mojo/proxy/fake_service.go
+++ b/go/src/v.io/x/mojo/proxy/fake_service.go
@@ -256,7 +256,10 @@
 	}
 
 	// Now produce the *bindings.Message that we will send to the other side.
-	inType := transcoder.MojomStructToVDLType(mm.Parameters, desc)
+	inType, err := transcoder.MojomStructToVDLType(mm.Parameters, desc)
+	if err != nil {
+		return nil, err
+	}
 	message, err := encodeMessageFromVom(header, argptrs, inType)
 	if err != nil {
 		return nil, err
@@ -277,7 +280,10 @@
 	}
 
 	// Decode the *vdl.Value from the mojom bytes and mojom type.
-	outType := transcoder.MojomStructToVDLType(*mm.ResponseParams, desc)
+	outType, err := transcoder.MojomStructToVDLType(*mm.ResponseParams, desc)
+	if err != nil {
+		return nil, err
+	}
 	var outVdlValue *vdl.Value
 	if err := transcoder.MojomToVdl(outMessage.Payload, outType, &outVdlValue); err != nil {
 		return nil, fmt.Errorf("transcoder.MojoToVom failed: %v", err)
diff --git a/go/src/v.io/x/mojo/proxy/proxy.go b/go/src/v.io/x/mojo/proxy/proxy.go
index f9df689..c0d1179 100644
--- a/go/src/v.io/x/mojo/proxy/proxy.go
+++ b/go/src/v.io/x/mojo/proxy/proxy.go
@@ -162,10 +162,16 @@
 func (s *messageReceiver) call(name, method string, value []byte, inParamsType mojom_types.MojomStruct, outParamsType *mojom_types.MojomStruct) ([]byte, error) {
 	s.ctx.Infof("server: %s.%s: %#v", name, method, inParamsType)
 
-	inVType := transcoder.MojomStructToVDLType(inParamsType, s.header.desc)
+	inVType, err := transcoder.MojomStructToVDLType(inParamsType, s.header.desc)
+	if err != nil {
+		return nil, err
+	}
 	var outVType *vdl.Type
 	if outParamsType != nil {
-		outVType = transcoder.MojomStructToVDLType(*outParamsType, s.header.desc)
+		outVType, err = transcoder.MojomStructToVDLType(*outParamsType, s.header.desc)
+		if err != nil {
+			return nil, err
+		}
 	}
 
 	// Decode the vdl.Value from the mojom bytes and mojom type.
diff --git a/mojom/mojom/examples/echo.mojom b/mojom/mojom/examples/echo.mojom
index f0881d5..d3e7b75 100644
--- a/mojom/mojom/examples/echo.mojom
+++ b/mojom/mojom/examples/echo.mojom
@@ -19,7 +19,8 @@
   string str;
 };
 
+[ServiceName="mojo::examples::RemoteEcho"]
 interface RemoteEcho {
   EchoString(string value) => (string value);
   EchoX(array<bool> arg1, aInArg arg2) => (outArgTypes out);
-};
\ No newline at end of file
+};
diff --git a/mojom/mojom/examples/fortune.mojom b/mojom/mojom/examples/fortune.mojom
index cf04ef7..f67ec5a 100644
--- a/mojom/mojom/examples/fortune.mojom
+++ b/mojom/mojom/examples/fortune.mojom
@@ -5,7 +5,8 @@
 [JavaPackage="org.chromium.mojo.examples.fortune"]
 module mojo.examples;
 
+[ServiceName="mojo::examples::Fortune"]
 interface Fortune {
   Get() => (string value);
   Add(string wisdom) => ();
-};
\ No newline at end of file
+};
diff --git a/mojom/mojom/v23proxy.mojom b/mojom/mojom/v23proxy.mojom
index 53272b3..b0427d5 100644
--- a/mojom/mojom/v23proxy.mojom
+++ b/mojom/mojom/v23proxy.mojom
@@ -7,6 +7,7 @@
 
 import "mojo/public/interfaces/bindings/mojom_types.mojom";
 
+[ServiceName="v23proxy::V23"]
 interface V23 {
   // Sets up a communication channel between the caller and the mojo application
   // running in a remote process.
