Add an example to the README
diff --git a/README.md b/README.md
index c64665c..d6fcfe5 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,63 @@
+# subcommands #
+
 Subcommands is a Go package that implements a simple way for a single command to
 have many subcommands, each of which takes arguments and so forth.
 
 This is not an official Google product.
+
+## Usage ##
+
+Set up a 'print' subcommand:
+```go
+import (
+	"flag"
+	"fmt"
+	"os"
+	"strings"
+
+	"github.com/google/subcommands"
+	"golang.org/x/net/context"
+)
+
+type printCmd struct {
+	capitalize bool
+}
+
+func (*printCmd) Name() string     { return "print" }
+func (*printCmd) Synopsis() string { return "Print args to stdout." }
+func (*printCmd) Usage() string {
+	return `print [-capitalize] <some text>:
+  Print args to stdout.
+`
+}
+
+func (p *printCmd) SetFlags(f *flag.FlagSet) {
+	f.BoolVar(&p.capitalize, "capitalize", false, "capitalize output")
+}
+
+func (p *printCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus {
+  for _, arg := range f.Args() {
+		if p.capitalize {
+			arg = strings.ToUpper(arg)
+		}
+		fmt.Printf("%s ", arg)
+	}
+  fmt.Println()
+	return subcommands.ExitSuccess
+}
+```
+
+Register using the default Commander, also use some built in subcommands,
+finally run Execute using ExitStatus as the exit code:
+```go
+func main() {
+  subcommands.Register(subcommands.HelpCommand(), "")
+  subcommands.Register(subcommands.FlagsCommand(), "")
+  subcommands.Register(subcommands.CommandsCommand(), "")
+  subcommands.Register(&print{}, "")
+
+  ctx := context.Background()
+	os.Exit(int(subcommands.Execute(ctx)))
+}
+```
+