diff --git a/encoding/textpb/encode.go b/encoding/textpb/encode.go
index 73326d1..9f1da09 100644
--- a/encoding/textpb/encode.go
+++ b/encoding/textpb/encode.go
@@ -46,9 +46,7 @@
 	}
 
 	var nerr errors.NonFatal
-	var v text.Value
-	var err error
-	v, err = o.marshalMessage(m.ProtoReflect())
+	v, err := o.marshalMessage(m.ProtoReflect())
 	if !nerr.Merge(err) {
 		return nil, err
 	}
@@ -99,10 +97,14 @@
 			continue
 		}
 
-		tname := text.ValueOf(fd.Name())
+		name := text.ValueOf(fd.Name())
+		// Use type name for group field name.
+		if fd.Kind() == pref.GroupKind {
+			name = text.ValueOf(fd.MessageType().Name())
+		}
 		pval := knownFields.Get(num)
 		var err error
-		msgFields, err = o.appendField(msgFields, tname, pval, fd)
+		msgFields, err = o.appendField(msgFields, name, pval, fd)
 		if !nerr.Merge(err) {
 			return text.Value{}, err
 		}
@@ -126,14 +128,9 @@
 }
 
 // appendField marshals a protoreflect.Value and appends it to the given [][2]text.Value.
-func (o MarshalOptions) appendField(msgFields [][2]text.Value, tname text.Value, pval pref.Value, fd pref.FieldDescriptor) ([][2]text.Value, error) {
+func (o MarshalOptions) appendField(msgFields [][2]text.Value, name text.Value, pval pref.Value, fd pref.FieldDescriptor) ([][2]text.Value, error) {
 	var nerr errors.NonFatal
 
-	// Use type name for group field name.
-	if fd.Kind() == pref.GroupKind {
-		tname = text.ValueOf(fd.MessageType().Name())
-	}
-
 	if fd.Cardinality() == pref.Repeated {
 		// Map or repeated fields.
 		var items []text.Value
@@ -152,7 +149,7 @@
 
 		// Add each item as key: value field.
 		for _, item := range items {
-			msgFields = append(msgFields, [2]text.Value{tname, item})
+			msgFields = append(msgFields, [2]text.Value{name, item})
 		}
 	} else {
 		// Required or optional fields.
@@ -160,7 +157,7 @@
 		if !nerr.Merge(err) {
 			return msgFields, err
 		}
-		msgFields = append(msgFields, [2]text.Value{tname, tval})
+		msgFields = append(msgFields, [2]text.Value{name, tval})
 	}
 
 	return msgFields, nerr.E
