docs(readme): update for API change, cleanup

Refs #9.
diff --git a/README.md b/README.md
index 1082b00..d3b5d94 100644
--- a/README.md
+++ b/README.md
@@ -1,57 +1,23 @@
-docopt.go
+docopt-go
 =========
 
 [![Build Status](https://travis-ci.org/docopt/docopt.go.svg?branch=master)](https://travis-ci.org/docopt/docopt.go)
 
-Golang implementation of [docopt](http://docopt.org/) 0.6.1+fix
+An implementation of [docopt](http://docopt.org/) in the
+[Go](http://golang.org/) programming language.
 
-## Installation
+**docopt** helps you create *beautiful* command-line interfaces easily:
 
-import "github.com/docopt/docopt-go" and then run `go get`.
-
-## API
-
-``` go
-func docopt.Parse(doc string, argv []string, help bool, version string, optionsFirst bool)
-(args map[string]interface{}, err error)
-```
-
-Parse `argv` based on command-line interface described in `doc`.
-
-docopt creates your command-line interface based on its description that you pass as `doc`. Such description can contain --options, <positional-argument>, commands, which could be [optional], (required), (mutually | exclusive) or repeated...
-
-### arguments
-
-`doc` Description of your command-line interface.
-
-`argv` Argument vector to be parsed. os.Args[1:] is used if nil.
-
-`help` Set to false to disable automatic help on -h or --help options..
-
-`version` If set to something besides an empty string, the string will be printed
- if --version is in argv.
-
-`optionsFirst` Set to true to require options precede positional arguments,
- i.e. to forbid options and positional arguments intermix..
-
-### return values
-
-`args`, map[string]interface{}. A map, where keys are names of command-line elements such as e.g. "--verbose" and "<path>", and values are the  parsed values of those elements. interface{} can be `bool`, `int`, `string`, `[]string`.
-
-`err`, error. Either *docopt.LanguageError, *docopt.UserError or nil
-
-## Example
-
-``` go
+```go
 package main
 
 import (
-    "fmt"
-    "github.com/docopt/docopt-go"
+	"fmt"
+	"github.com/docopt/docopt-go"
 )
 
 func main() {
-usage := `Naval Fate.
+	  usage := `Naval Fate.
 
 Usage:
   naval_fate ship new <name>...
@@ -68,15 +34,50 @@
   --moored      Moored (anchored) mine.
   --drifting    Drifting mine.`
 
-    arguments, _ := docopt.Parse(usage, nil, true, "Naval Fate 2.0", false)
-    fmt.Println(arguments)
+	  arguments, _ := docopt.Parse(usage, nil, true, "Naval Fate 2.0", false)
+	  fmt.Println(arguments)
 }
 ```
 
+**docopt** parses command-line arguments based on a help message. Don't
+write parser code: a good help message already has all the necessary
+information in it.
+
+## Installation
+
+⚠ Use the alias “docopt-go”. To use docopt in your Go code:
+
+```go
+import "github.com/docopt/docopt-go"
+```
+
+To install docopt according to your `$GOPATH`:
+
+```console
+$ go get github.com/docopt/docopt-go
+```
+
+## API
+
+```go
+func Parse(doc string, argv []string, help bool, version string,
+    optionsFirst bool, exit ...bool) (map[string]interface{}, error)
+```
+Parse `argv` based on the command-line interface described in `doc`.
+
+Given a conventional command-line help message, docopt creates a parser and
+processes the arguments. See
+https://github.com/docopt/docopt#help-message-format for a description of the
+help message format. If `argv` is `nil`, `os.Args[1:]` is used.
+
+docopt returns a map of option names to the values parsed from `argv`, and an
+error or `nil`.
+
 ## Testing
 
-All tests from the python version have been implemented and all are passing.
+All tests from the Python version are implemented and passing
+at [Travis CI](https://travis-ci.org/docopt/docopt.go). New
+language-agnostic tests have been added
+to [test_golang.docopt](test_golang.docopt).
 
-New language agnostic tests have been added to `test_golang.docopt`.
-
-To run them use `go test`.
+To run tests for docopt-go, use `go test`.
diff --git a/docopt.go b/docopt.go
index e513ae5..c44a123 100644
--- a/docopt.go
+++ b/docopt.go
@@ -1,12 +1,14 @@
 // Licensed under terms of MIT license (see LICENSE-MIT)
 // Copyright (c) 2013 Keith Batten, kbatten@gmail.com
 
-// Package docopt creates beautiful command-line interfaces based on the
-// command help message
-//
-// Port of docopt for python
-// https://github.com/docopt/docopt
-// http://docopt.org
+/*
+Package docopt parses command-line arguments based on a help message.
+
+⚠ Use the alias “docopt-go”:
+	import "github.com/docopt/docopt-go"
+or
+	$ go get github.com/github/docopt-go
+*/
 package docopt
 
 import (
@@ -18,73 +20,28 @@
 	"unicode"
 )
 
-// Parse `argv` based on command-line interface described in `doc`.
-//
-// docopt creates your command-line interface based on its
-// description that you pass as `doc`. Such description can contain
-// --options, <positional-argument>, commands, which could be
-// [optional], (required), (mutually | exclusive) or repeated...
-//
-// Parameters:
-//  doc : string
-//   Description of your command-line interface.
-//
-//  argv : list of string or nil
-//   Argument vector to be parsed. os.Args[1:] is used if nil.
-//
-//  help : bool (default: true)
-//   Set to false to disable automatic help on -h or --help options.
-//
-//  version : string
-//   If set to something besides an empty string, the string will be printed
-//   if --version is in argv
-//
-//  optionsFirst : bool (default: false)
-//   Set to true to require options precede positional arguments,
-//   i.e. to forbid options and positional arguments intermix.
-//
-// Returns:
-//  args : map[string]interface{}
-//   A map, where keys are names of command-line elements
-//   such as e.g. "--verbose" and "<path>", and values are the
-//   parsed values of those elements.
-//
-//  err : error, *docopt.LanguageError, *docopt.UserError
-//
-//  os.Exit on user error or help
-//
-// Example:
-//  package main
-//
-//  import (
-//      "fmt"
-//      "github.com/docopt/docopt-go"
-//  )
-//
-//  func main() {
-//      doc := `
-//  Usage:
-//    my_program tcp <host> <port> [--timeout=<seconds>]
-//    my_program serial <port> [--baud=<n>] [--timeout=<seconds>]
-//    my_program (-h | --help | --version)
-//
-//  Options:
-//    -h, --help Show this screen and exit.
-//    --baud=<n> Baudrate [default: 9600]
-//  `
-//      argv := []string{"tcp", "127.0.0.1", "80", "--timeout", "30"}
-//      fmt.Println(docopt.Parse(doc, argv, true, "", false))
-//  }
-//
-// Example output:
-//  {"--baud": "9600",
-//   "--help": false,
-//   "--timeout": "30",
-//   "--version": false,
-//   "<host>": "127.0.0.1",
-//   "<port>": "8"',
-//   "serial": false,
-//   "tcp": true}
+/*
+Parse `argv` based on the command-line interface described in `doc`.
+
+Given a conventional command-line help message, docopt creates a parser and
+processes the arguments. See
+https://github.com/docopt/docopt#help-message-format for a description of the
+help message format. If `argv` is `nil`, `os.Args[1:]` is used.
+
+docopt returns a map of option names to the values parsed from `argv`, and an
+error or `nil`.
+
+Set `help` to `false` to disable automatic help messages on `-h` or `--help`.
+If `version` is a non-empty string, it will be printed when `--version` is
+specified. Set `optionsFirst` to `true` to require that options always come
+before positional arguments; otherwise they can overlap.
+
+By default, docopt calls `os.Exit(0)` if it handled a built-in option such as
+`-h` or `--version`. If the user errored with a wrong command or options,
+docopt exits with a return code of 1. To stop docopt from calling `os.Exit()`
+and to handle your own return codes, pass an optional last parameter of `false`
+for `exit`.
+*/
 func Parse(doc string, argv []string, help bool, version string,
 	optionsFirst bool, exit ...bool) (map[string]interface{}, error) {
 	// if "false" was the (optional) last arg, don't call os.Exit()
@@ -94,11 +51,13 @@
 	}
 	args, output, err := parse(doc, argv, help, version, optionsFirst)
 	if _, ok := err.(*UserError); ok {
+		// the user gave us bad input
 		fmt.Println(output)
 		if exitOk {
 			os.Exit(1)
 		}
 	} else if len(output) > 0 && err == nil {
+		// the user asked for help or `--version`
 		fmt.Println(output)
 		if exitOk {
 			os.Exit(0)
diff --git a/example_test.go b/example_test.go
new file mode 100644
index 0000000..b87a149
--- /dev/null
+++ b/example_test.go
@@ -0,0 +1,37 @@
+package docopt
+
+import (
+	"fmt"
+	"sort"
+)
+
+func ExampleParse() {
+	usage := `Usage:
+  config_example tcp [<host>] [--force] [--timeout=<seconds>]
+  config_example serial <port> [--baud=<rate>] [--timeout=<seconds>]
+  config_example -h | --help | --version`
+	// parse the command line `comfig_example tcp 127.0.0.1 --force`
+	argv := []string{"tcp", "127.0.0.1", "--force"}
+	arguments, _ := Parse(usage, argv, true, "0.1.1rc", false)
+	// sort the keys of the arguments map
+	var keys []string
+	for k := range arguments {
+		keys = append(keys, k)
+	}
+	sort.Strings(keys)
+	// print the argument keys and values
+	for _, k := range keys {
+		fmt.Printf("%9s %v\n", k, arguments[k])
+	}
+	// output:
+	//    --baud <nil>
+	//   --force true
+	//    --help false
+	// --timeout <nil>
+	// --version false
+	//        -h false
+	//    <host> 127.0.0.1
+	//    <port> <nil>
+	//    serial false
+	//       tcp true
+}