diff --git a/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go b/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
index c7e5a64..fa4a15f 100644
--- a/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
+++ b/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
@@ -118,7 +118,7 @@
 		target, err := &t.sgPublishSbTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.VDeviceCfg", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *VDeviceCfgTarget) FinishField(_, _ vdl.Target) error {
@@ -133,7 +133,7 @@
 		t.Value.SgPublishSb = ""
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.VDeviceCfg", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *VDeviceCfgTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -293,7 +293,7 @@
 		target, err := &t.devIdTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KDeviceCfg", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *KDeviceCfgTarget) FinishField(_, _ vdl.Target) error {
@@ -305,7 +305,7 @@
 		t.Value.DevId = ""
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KDeviceCfg", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *KDeviceCfgTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -506,7 +506,7 @@
 		target, err := &t.intervalTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.SamplerDef", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *SamplerDefTarget) FinishField(_, _ vdl.Target) error {
@@ -524,7 +524,7 @@
 		t.Value.Interval = time.Duration(0)
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.SamplerDef", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *SamplerDefTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -764,7 +764,7 @@
 		target, err := &t.enabledTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.VStreamDef", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *VStreamDefTarget) FinishField(_, _ vdl.Target) error {
@@ -782,7 +782,7 @@
 		t.Value.Enabled = false
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.VStreamDef", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *VStreamDefTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -988,7 +988,7 @@
 		target, err := &t.streamIdTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KStreamDef", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *KStreamDefTarget) FinishField(_, _ vdl.Target) error {
@@ -1003,7 +1003,7 @@
 		t.Value.StreamId = ""
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KStreamDef", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *KStreamDefTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -1221,7 +1221,7 @@
 		target, err := &t.timestampTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KDataPoint", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *KDataPointTarget) FinishField(_, _ vdl.Target) error {
@@ -1239,7 +1239,7 @@
 		t.Value.Timestamp = time.Time{}
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KDataPoint", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *KDataPointTarget) FinishFields(_ vdl.FieldsTarget) error {
