diff --git a/command.go b/command.go
index a30f560..aab34e6 100644
--- a/command.go
+++ b/command.go
@@ -112,9 +112,9 @@
 	return nil
 }
 
-// Find an option that is part of the command, or any of its
-// parent commands, by matching its long name
-// (including the option namespace).
+// FindOptionByLongName finds an option that is part of the command, or any of
+// its parent commands, by matching its long name (including the option
+// namespace).
 func (c *Command) FindOptionByLongName(longName string) (option *Option) {
 	for option == nil && c != nil {
 		option = c.Group.FindOptionByLongName(longName)
@@ -125,9 +125,9 @@
 	return option
 }
 
-// Find an option that is part of the command, or any of its
-// parent commands, by matching its long name
-// (including the option namespace).
+// FindOptionByShortName finds an option that is part of the command, or any of
+// its parent commands, by matching its long name (including the option
+// namespace).
 func (c *Command) FindOptionByShortName(shortName rune) (option *Option) {
 	for option == nil && c != nil {
 		option = c.Group.FindOptionByShortName(shortName)
diff --git a/example_test.go b/example_test.go
index f7be2bb..4321ed8 100644
--- a/example_test.go
+++ b/example_test.go
@@ -41,7 +41,7 @@
 
 		// Example of positional arguments
 		Args struct {
-			Id   string
+			ID   string
 			Num  int
 			Rest []string
 		} `positional-args:"yes" required:"yes"`
@@ -92,7 +92,7 @@
 	fmt.Printf("PtrSlice: [%v %v]\n", *opts.PtrSlice[0], *opts.PtrSlice[1])
 	fmt.Printf("IntMap: [a:%v b:%v]\n", opts.IntMap["a"], opts.IntMap["b"])
 	fmt.Printf("Filename: %v\n", opts.Filename)
-	fmt.Printf("Args.Id: %s\n", opts.Args.Id)
+	fmt.Printf("Args.ID: %s\n", opts.Args.ID)
 	fmt.Printf("Args.Num: %d\n", opts.Args.Num)
 	fmt.Printf("Args.Rest: %v\n", opts.Args.Rest)
 
@@ -104,7 +104,7 @@
 	// PtrSlice: [hello world]
 	// IntMap: [a:1 b:5]
 	// Filename: hello.go
-	// Args.Id: id
+	// Args.ID: id
 	// Args.Num: 10
 	// Args.Rest: [remaining1 remaining2]
 }
diff --git a/group.go b/group.go
index 6472420..b1ef6ed 100644
--- a/group.go
+++ b/group.go
@@ -110,16 +110,16 @@
 	return option
 }
 
-// Find an option that is part of the group, or any of its subgroups,
-// by matching its long name (including the option namespace).
+// FindOptionByLongName finds an option that is part of the group, or any of its
+// subgroups, by matching its long name (including the option namespace).
 func (g *Group) FindOptionByLongName(longName string) *Option {
 	return g.findOption(func(option *Option) bool {
 		return option.LongNameWithNamespace() == longName
 	})
 }
 
-// Find an option that is part of the group, or any of its subgroups,
-// by matching its short name.
+// FindOptionByShortName finds an option that is part of the group, or any of
+// its subgroups, by matching its short name.
 func (g *Group) FindOptionByShortName(shortName rune) *Option {
 	return g.findOption(func(option *Option) bool {
 		return option.ShortName == shortName
diff --git a/parser_test.go b/parser_test.go
index d82fe35..9f527b7 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -215,28 +215,33 @@
 	}
 }
 
-// envRestorer keeps a copy of a set of env variables and can restore the env from them
-type envRestorer struct {
+// EnvRestorer keeps a copy of a set of env variables and can restore the env from them
+type EnvRestorer struct {
 	env map[string]string
 }
 
-func (r *envRestorer) Restore() {
+func (r *EnvRestorer) Restore() {
 	os.Clearenv()
+
 	for k, v := range r.env {
 		os.Setenv(k, v)
 	}
 }
 
 // EnvSnapshot returns a snapshot of the currently set env variables
-func EnvSnapshot() *envRestorer {
-	r := envRestorer{make(map[string]string)}
+func EnvSnapshot() *EnvRestorer {
+	r := EnvRestorer{make(map[string]string)}
+
 	for _, kv := range os.Environ() {
 		parts := strings.SplitN(kv, "=", 2)
+
 		if len(parts) != 2 {
 			panic("got a weird env variable: " + kv)
 		}
+
 		r.env[parts[0]] = parts[1]
 	}
+
 	return &r
 }
 
