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 0c21eab..413b252 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
@@ -48,30 +48,12 @@
 		return err
 	}
 	if x.Desc != "" {
-		if err := enc.NextField("Desc"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.Desc); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("Desc", vdl.StringType, x.Desc); err != nil {
 			return err
 		}
 	}
 	if x.SgPublishSb != "" {
-		if err := enc.NextField("SgPublishSb"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.SgPublishSb); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("SgPublishSb", vdl.StringType, x.SgPublishSb); err != nil {
 			return err
 		}
 	}
@@ -134,16 +116,7 @@
 		return err
 	}
 	if x.DevId != "" {
-		if err := enc.NextField("DevId"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.DevId); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("DevId", vdl.StringType, x.DevId); err != nil {
 			return err
 		}
 	}
@@ -214,16 +187,7 @@
 		return err
 	}
 	if x.Script != "" {
-		if err := enc.NextField("Script"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.Script); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("Script", vdl.StringType, x.Script); err != nil {
 			return err
 		}
 	}
@@ -335,16 +299,7 @@
 		return err
 	}
 	if x.Desc != "" {
-		if err := enc.NextField("Desc"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.Desc); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("Desc", vdl.StringType, x.Desc); err != nil {
 			return err
 		}
 	}
@@ -357,16 +312,7 @@
 		}
 	}
 	if x.Enabled {
-		if err := enc.NextField("Enabled"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.BoolType); err != nil {
-			return err
-		}
-		if err := enc.EncodeBool(x.Enabled); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueBool("Enabled", vdl.BoolType, x.Enabled); err != nil {
 			return err
 		}
 	}
@@ -434,30 +380,12 @@
 		return err
 	}
 	if x.DevId != "" {
-		if err := enc.NextField("DevId"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.DevId); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("DevId", vdl.StringType, x.DevId); err != nil {
 			return err
 		}
 	}
 	if x.StreamId != "" {
-		if err := enc.NextField("StreamId"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.StreamId); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("StreamId", vdl.StringType, x.StreamId); err != nil {
 			return err
 		}
 	}
@@ -533,30 +461,12 @@
 		return err
 	}
 	if x.DevId != "" {
-		if err := enc.NextField("DevId"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.DevId); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("DevId", vdl.StringType, x.DevId); err != nil {
 			return err
 		}
 	}
 	if x.StreamId != "" {
-		if err := enc.NextField("StreamId"); err != nil {
-			return err
-		}
-		if err := enc.StartValue(vdl.StringType); err != nil {
-			return err
-		}
-		if err := enc.EncodeString(x.StreamId); err != nil {
-			return err
-		}
-		if err := enc.FinishValue(); err != nil {
+		if err := enc.NextFieldValueString("StreamId", vdl.StringType, x.StreamId); err != nil {
 			return err
 		}
 	}
@@ -672,16 +582,7 @@
 	if err := enc.StartValue(__VDLType_union_9); err != nil {
 		return err
 	}
-	if err := enc.NextField("Value"); err != nil {
-		return err
-	}
-	if err := enc.StartValue(vdl.Float64Type); err != nil {
-		return err
-	}
-	if err := enc.EncodeFloat(x.Value); err != nil {
-		return err
-	}
-	if err := enc.FinishValue(); err != nil {
+	if err := enc.NextFieldValueFloat("Value", vdl.Float64Type, x.Value); err != nil {
 		return err
 	}
 	if err := enc.NextField(""); err != nil {
@@ -694,16 +595,7 @@
 	if err := enc.StartValue(__VDLType_union_9); err != nil {
 		return err
 	}
-	if err := enc.NextField("Error"); err != nil {
-		return err
-	}
-	if err := enc.StartValue(vdl.StringType); err != nil {
-		return err
-	}
-	if err := enc.EncodeString(x.Value); err != nil {
-		return err
-	}
-	if err := enc.FinishValue(); err != nil {
+	if err := enc.NextFieldValueString("Error", vdl.StringType, x.Value); err != nil {
 		return err
 	}
 	if err := enc.NextField(""); err != nil {
