diff --git a/src/pkg/flag/flag.go b/src/pkg/flag/flag.go
index 38b65d1..f13f7a4 100644
--- a/src/pkg/flag/flag.go
+++ b/src/pkg/flag/flag.go
@@ -286,6 +286,9 @@
 	if !ok {
 		return false
 	}
+	if f.actual == nil {
+		f.actual = make(map[string]*Flag)
+	}
 	f.actual[name] = flag
 	return true
 }
@@ -559,6 +562,9 @@
 		fmt.Fprintf(os.Stderr, "%s flag redefined: %s\n", f.name, name)
 		panic("flag redefinition") // Happens only if flags are declared with identical names
 	}
+	if f.formal == nil {
+		f.formal = make(map[string]*Flag)
+	}
 	f.formal[name] = flag
 }
 
@@ -586,6 +592,8 @@
 func (f *FlagSet) usage() {
 	if f == commandLine {
 		Usage()
+	} else if f.Usage == nil {
+		defaultUsage(f)
 	} else {
 		f.Usage()
 	}
@@ -657,6 +665,9 @@
 			return false, f.failf("invalid value %q for flag: -%s", value, name)
 		}
 	}
+	if f.actual == nil {
+		f.actual = make(map[string]*Flag)
+	}
 	f.actual[name] = flag
 	return true, nil
 }
@@ -713,10 +724,15 @@
 func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {
 	f := &FlagSet{
 		name:          name,
-		actual:        make(map[string]*Flag),
-		formal:        make(map[string]*Flag),
 		errorHandling: errorHandling,
 	}
-	f.Usage = func() { defaultUsage(f) }
 	return f
 }
+
+// Init sets the name and error handling property for a flag set.
+// By default, the zero FlagSet uses an empty name and the
+// ContinueOnError error handling policy.
+func (f *FlagSet) Init(name string, errorHandling ErrorHandling) {
+	f.name = name
+	f.errorHandling = errorHandling
+}
diff --git a/src/pkg/flag/flag_test.go b/src/pkg/flag/flag_test.go
index 19c0dea..f135316 100644
--- a/src/pkg/flag/flag_test.go
+++ b/src/pkg/flag/flag_test.go
@@ -180,7 +180,8 @@
 }
 
 func TestUserDefined(t *testing.T) {
-	flags := NewFlagSet("test", ContinueOnError)
+	var flags FlagSet
+	flags.Init("test", ContinueOnError)
 	var v flagVar
 	flags.Var(&v, "v", "usage")
 	if err := flags.Parse([]string{"-v", "1", "-v", "2", "-v=3"}); err != nil {
