diff --git a/README.md b/README.md
index 39ef0e8..ee5eae4 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@
     - hg
     - svn
 * Support custom local and global plugins (see docs/plugins.md)
-* Repository caching including reuse of packages in the `$GOPATH`
+* Repository caching and data caching for improved performance.
 * Flatten dependencies resolving version differences and avoiding the inclusion
   of a package multiple times.
 * Manage and install dependencies on-demand or vendored in your version control
@@ -37,16 +37,25 @@
 
 ## How It Works
 
-The dependencies for a project are listed in a `glide.yaml` file. This can
-include a version, VCS, repository location (that can be different from the
-package name), etc. When `glide up` is run it downloads the packages (or updates)
-to the `vendor` directory. It then recursively walks through the downloaded
-packages looking for those with a `glide.yaml` file (or Godep, gb, gom, or GPM config
-file) that don't already have a `vendor` directory and installing their
-dependencies to their `vendor` directories. Once Glide has downloaded and figured
-out versions to use in the dependency tree it creates a `glide.lock` file
-containing the complete dependency tree pinned to specific versions. To install
-the correct versions use `glide install`.
+Glide scans the source code of your application or library to determine the needed
+dependencies. To determine the versions and locations (such as aliases for forks)
+Glide reads a `glide.yaml` file with the rules. With this information Glide retrieves
+needed dependencies.
+
+When a dependent package is encountered its imports are scanned to determine
+dependencies of dependencies (transitive dependencies). If the dependent project
+contains a `glide.yaml` file that information is used to help determine the
+dependency rules when fetching from a location or version to use. Configuration
+from Godep, GB, GOM, and GPM is also imported.
+
+The dependencies are exported to the `vendor/` directory where the `go` tools
+can find and use them. A `glide.lock` file is generated containing all the
+dependencies, including transitive ones.
+
+The `glide init` command can be use to setup a new project, `glide update`
+regenerates the dependency versions using scanning and rules, and `glide install`
+will install the versions listed in the `glide.lock` file, skipping scanning,
+unless the `glide.lock` file is not found in which case it will perform an update.
 
 A projects is structured like this:
 
@@ -138,23 +147,35 @@
 
 ```
 $ glide create
-[INFO] Generating a YAML configuration file and guessing the dependencies
-[INFO] Attempting to import from other package managers (use --skip-import to skip)
-[INFO] Found reference to github.com/Sirupsen/logrus
-[INFO] Adding sub-package hooks/syslog to github.com/Sirupsen/logrus
-[INFO] Found reference to github.com/boltdb/bolt
-[INFO] Found reference to github.com/gorilla/websocket
-[INFO] Found reference to github.com/mndrix/ps
-[INFO] Found reference to github.com/spf13/cobra
-[INFO] Found reference to github.com/spf13/pflag
-[INFO] Found reference to github.com/tinylib/msgp/msgp
-[INFO] Found reference to github.com/unrolled/secure
-[INFO] Found reference to github.com/xeipuuv/gojsonschema
-[INFO] Found reference to github.com/zenazn/goji/graceful
-[INFO] Adding sub-package web to github.com/zenazn/goji
-[INFO] Adding sub-package web/mutil to github.com/zenazn/goji
+[INFO]	Generating a YAML configuration file and guessing the dependencies
+[INFO]	Attempting to import from other package managers (use --skip-import to skip)
+[INFO]	Scanning code to look for dependencies
+[INFO]	--> Found reference to github.com/Masterminds/semver
+[INFO]	--> Found reference to github.com/Masterminds/vcs
+[INFO]	--> Found reference to github.com/codegangsta/cli
+[INFO]	--> Found reference to gopkg.in/yaml.v2
+[INFO]	Writing configuration file (glide.yaml)
+[INFO]	Would you like Glide to help you find ways to improve your glide.yaml configuration?
+[INFO]	If you want to revisit this step you can use the config-wizard command at any time.
+[INFO]	Yes (Y) or No (N)?
+n
+[INFO]	You can now edit the glide.yaml file. Consider:
+[INFO]	--> Using versions and ranges. See https://glide.sh/docs/versions/
+[INFO]	--> Adding additional metadata. See https://glide.sh/docs/glide.yaml/
+[INFO]	--> Running the config-wizard command to improve the versions in your configuration
 ```
 
+The `config-wizard`, noted here, can be run here or manually run at a later time.
+This wizard helps you figure out versions and ranges you can use for your
+dependencies.
+
+### glide config-wizard
+
+This runs a wizard that scans your dependencies and retrieves information on them
+to offer up suggestions that you can interactively choose. For example, it can
+discover if a dependency uses semantic versions and help you choose the version
+ranges to use.
+
 ### glide get [package name]
 
 You can download one or more packages to your `vendor` directory and have it added to your
@@ -171,7 +192,7 @@
 
 Download or update all of the libraries listed in the `glide.yaml` file and put
 them in the `vendor` directory. It will also recursively walk through the
-dependency packages doing the same thing if no `vendor` directory exists.
+dependency packages to fetch anything that's needed and read in any configuration.
 
 ```
 $ glide up
@@ -185,6 +206,8 @@
 specified as a range (e.g., `^1.2.3`) it will be set to a specific commit id in
 the `glide.lock` file. That allows for reproducible installs (see `glide install`).
 
+To remove any nested `vendor/` directories from fetched packages see the `-v` flag.
+
 ### glide install
 
 When you want to install the specific versions from the `glide.lock` file use
@@ -204,6 +227,8 @@
 If no `glide.lock` file is present `glide install` will perform an `update` and
 generate a lock file.
 
+To remove any nested `vendor/` directories from fetched packages see the `-v` flag.
+
 ## glide novendor (aliased to nv)
 
 When you run commands like `go test ./...` it will iterate over all the
@@ -223,26 +248,6 @@
 the name of the package you're working on. `glide name` returns the name of the
 package listed in the `glide.yaml` file.
 
-### glide rebuild
-
-Runs `go install` on the packages in the `glide.yaml` file. This
-(along with `glide install` and `glide update`) pays special attention
-to the contents of the `subpackages:` directive in the YAML file.
-
-```
-$ glide rebuild
-[INFO] Building dependencies.
-[INFO] Running go build github.com/kylelemons/go-gypsy/yaml
-[INFO] Running go build github.com/Masterminds/cookoo/cli
-[INFO] Running go build github.com/Masterminds/cookoo
-```
-
-This is useful when you are working with large 3rd party libraries. It
-will create the `.a` files, which can have a positive impact on your
-build times.
-
-**This feature is deprecated and will be removed before Glide 1.0.0**
-
 ### glide tree
 
 Glide includes a few commands that inspect code and give you details
@@ -289,6 +294,8 @@
 places, `glide tree` also prints the location of the package being
 imported.
 
+_This command is deprecated and will be removed in the near future._
+
 ### glide list
 
 Glide's `list` command shows an alphabetized list of all the packages
@@ -321,11 +328,13 @@
 
 ```
 $ glide --version
-glide version 0.8.0
+glide version 0.12.0
 ```
 
 ### glide.yaml
 
+For full details on the `glide.yaml` files see [the documentation](https://glide.sh/docs/glide.yaml).
+
 The `glide.yaml` file does two critical things:
 
 1. It names the current package
@@ -338,7 +347,6 @@
 import:
   - package: github.com/Masterminds/semver
   - package: github.com/Masterminds/cookoo
-    vcs: git
     version: ^1.2.0
     repo: git@github.com:Masterminds/cookoo.git
 ```
@@ -348,7 +356,6 @@
 1. This package is named `github.com/Masterminds/glide`
 2. That this package depends on two libraries.
 
-
 The first library exemplifies a minimal package import. It merely gives
 the fully qualified import path.
 
diff --git a/docs/commands.md b/docs/commands.md
index 3b233db..0449bc5 100644
--- a/docs/commands.md
+++ b/docs/commands.md
@@ -4,25 +4,40 @@
 
 ## glide create (aliased to init)
 
-Initializes a new workspace. Among other things, this creates a `glide.yaml` file while attempting to guess the packages and versions to put in it. For example, if your project is using Godep it will use the versions specified there. Glide is smart enough to scan your codebase and detect the imports being used whether they are specified with another package manager or not.
+Initialize a new workspace. Among other things, this creates a `glide.yaml` file
+while attempting to guess the packages and versions to put in it. For example,
+if your project is using Godep it will use the versions specified there. Glide
+is smart enough to scan your codebase and detect the imports being used whether
+they are specified with another package manager or not.
 
-    $ glide init
-    [INFO] Generating a YAML configuration file and guessing the dependencies
-    [INFO] Attempting to import from other package managers (use --skip-import to skip)
-    [INFO] Found reference to github.com/BurntSushi/toml
-    [INFO] Found reference to github.com/Masterminds/semver
-    [INFO] Found reference to github.com/Masterminds/sprig
-    [INFO] Found reference to github.com/Masterminds/vcs
-    [INFO] Found reference to github.com/aokoli/goutils
-    [INFO] Found reference to github.com/codegangsta/cli
-    [INFO] Found reference to github.com/deis/pkg/prettyprint
-    [INFO] Found reference to github.com/ghodss/yaml
-    [INFO] Found reference to github.com/google/go-github/github
-    [INFO] Found reference to github.com/pborman/uuid
-    [INFO] Found reference to golang.org/x/crypto/nacl/box
-    [INFO] Adding sub-package ssh/terminal to golang.org/x/crypto
-    [INFO] Found reference to gopkg.in/yaml.v2
-    ...
+    $ glide create
+    [INFO]	Generating a YAML configuration file and guessing the dependencies
+    [INFO]	Attempting to import from other package managers (use --skip-import to skip)
+    [INFO]	Scanning code to look for dependencies
+    [INFO]	--> Found reference to github.com/Masterminds/semver
+    [INFO]	--> Found reference to github.com/Masterminds/vcs
+    [INFO]	--> Found reference to github.com/codegangsta/cli
+    [INFO]	--> Found reference to gopkg.in/yaml.v2
+    [INFO]	Writing configuration file (glide.yaml)
+    [INFO]	Would you like Glide to help you find ways to improve your glide.yaml configuration?
+    [INFO]	If you want to revisit this step you can use the config-wizard command at any time.
+    [INFO]	Yes (Y) or No (N)?
+    n
+    [INFO]	You can now edit the glide.yaml file. Consider:
+    [INFO]	--> Using versions and ranges. See https://glide.sh/docs/versions/
+    [INFO]	--> Adding additional metadata. See https://glide.sh/docs/glide.yaml/
+    [INFO]	--> Running the config-wizard command to improve the versions in your configuration
+
+The `config-wizard`, noted here, can be run here or manually run at a later time.
+This wizard helps you figure out versions and ranges you can use for your
+dependencies.
+
+### glide config-wizard
+
+This runs a wizard that scans your dependencies and retrieves information on them
+to offer up suggestions that you can interactively choose. For example, it can
+discover if a dependency uses semantic versions and help you choose the version
+ranges to use.
 
 ## glide get [package name]
 
@@ -37,29 +52,25 @@
 
     $ glide get github.com/Masterminds/cookoo#^1.2.3
 
-The version is separated from the package name by an anchor (`#`).
+The version is separated from the package name by an anchor (`#`). If no version or range is specified and the dependency uses Semantic Versions Glide will prompt you to ask if you want to use them.
 
 ## glide update (aliased to up)
 
-Download or update all of the libraries listed in the `glide.yaml` file and put them in the `vendor` directory. It will also recursively walk through the dependency packages doing the same thing if no `vendor` directory exists.
+Download or update all of the libraries listed in the `glide.yaml` file and put
+them in the `vendor` directory. It will also recursively walk through the
+dependency packages to fetch anything that's needed and read in any configuration.
 
     $ glide up
 
-This will recurse over the packages looking for other projects managed by Glide, Godep, GB, Gom, and GPM. When one is found those packages will be installed as needed.
+This will recurse over the packages looking for other projects managed by Glide,
+Godep, gb, gom, and GPM. When one is found those packages will be installed as needed.
 
-A `glide.lock` file will be created or updated with the dependencies pinned to specific versions. For example, if in the `glide.yaml` file a version was specified as a range (e.g., `^1.2.3`) it will be set to a specific commit id in the `glide.lock` file. That allows for reproducible installs (see `glide install`).
+A `glide.lock` file will be created or updated with the dependencies pinned to
+specific versions. For example, if in the `glide.yaml` file a version was
+specified as a range (e.g., `^1.2.3`) it will be set to a specific commit id in
+the `glide.lock` file. That allows for reproducible installs (see `glide install`).
 
-If you want to use `glide up` to help you managed dependencies that are checked into your version control consider the flags:
-
-* `--update-vendored` (aliased to `-u`) to update the vendored dependencies. If Glide detects a vendored dependency it will update it and leave it in a vendored state. Note, any tertiary dependencies will not be automatically vendored with this flag.
-* `--strip-vcs` (aliased to `-s`) to strip VCS metadata (e.g., `.git` directories) from the `vendor` folder.
-* `--strip-vendor` (aliased to `-v`) to strip nested `vendor/` directories.
-
-For example, you can use the command:
-
-    $ glide up -u -s
-
-This will tell Glide to update the vendored packages and remove any VCS directories from transitive dependencies that were picked up as well.
+To remove any nested `vendor/` directories from fetched packages see the `-v` flag.
 
 ## glide install
 
@@ -73,6 +84,8 @@
 
 If no `glide.lock` file is present `glide install` will perform an `update` and generates a lock file.
 
+To remove any nested `vendor/` directories from fetched packages see the `-v` flag.
+
 ## glide novendor (aliased to nv)
 
 When you run commands like `go test ./...` it will iterate over all the subdirectories including the `vendor` directory. When you are testing your application you may want to test your application files without running all the tests of your dependencies and their dependencies. This is where the `novendor` command comes in. It lists all of the directories except `vendor`.
@@ -89,32 +102,59 @@
 
 Glide's `list` command shows an alphabetized list of all the packages that a project imports.
 
-```
-$ glide list
-INSTALLED packages:
-	vendor/github.com/Masterminds/cookoo
-	vendor/github.com/Masterminds/cookoo/fmt
-	vendor/github.com/Masterminds/cookoo/io
-	vendor/github.com/Masterminds/cookoo/web
-	vendor/github.com/Masterminds/semver
-	vendor/github.com/Masterminds/vcs
-	vendor/github.com/codegangsta/cli
-	vendor/gopkg.in/yaml.v2
-```
+    $ glide list
+    INSTALLED packages:
+    	vendor/github.com/Masterminds/cookoo
+    	vendor/github.com/Masterminds/cookoo/fmt
+    	vendor/github.com/Masterminds/cookoo/io
+    	vendor/github.com/Masterminds/cookoo/web
+    	vendor/github.com/Masterminds/semver
+    	vendor/github.com/Masterminds/vcs
+    	vendor/github.com/codegangsta/cli
+    	vendor/gopkg.in/yaml.v2
 
 ## glide help
 
 Print the glide help.
 
-```
-$ glide help
-```
+    $ glide help
 
 ## glide --version
 
 Print the version and exit.
 
-```
-$ glide --version
-glide version 0.9.0
-```
+    $ glide --version
+    glide version 0.12.0
+
+## glide mirror
+
+Mirrors provide the ability to replace a repo location with
+another location that's a mirror of the original. This is useful when you want
+to have a cache for your continuous integration (CI) system or if you want to
+work on a dependency in a local location.
+
+The mirrors are stored in an `mirrors.yaml` file in your `GLIDE_HOME`.
+
+The three commands to manager mirrors are `list`, `set`, and `remove`.
+
+Use `set` in the form:
+
+    glide mirror set [original] [replacement]
+
+or
+
+    glide mirror set [original] [replacement] --vcs [type]
+
+for example,
+
+   glide mirror set https://github.com/example/foo https://git.example.com/example/foo.git
+
+   glide mirror set https://github.com/example/foo file:///path/to/local/repo --vcs git
+
+Use `remove` in the form:
+
+   glide mirror remove [original]
+
+for example,
+
+   glide mirror remove https://github.com/example/foo
diff --git a/docs/getting-started.md b/docs/getting-started.md
index 7d2a7c6..26c9fa7 100644
--- a/docs/getting-started.md
+++ b/docs/getting-started.md
@@ -10,6 +10,8 @@
 
 When this is complete you'll have a `glide.yaml` file populated with the projects being used. You can open up this file and even edit it to add information such as versions.
 
+Running `glide init` will also ask if you would like to use a wizard to discover information about your dependencies versions and use versions or ranges. Each decision is interactive and your choice.
+
 ## Updating Dependencies
 
 To fetch the dependencies and set them to any versions specified in the `glide.yaml` file use the following command:
@@ -22,6 +24,8 @@
 
 Glide will then create a `glide.lock` file. This file contains the entire dependency tree pinned to specific commit ids. This file, as we'll see in a moment, can be used to recreate the exact dependency tree and versions used.
 
+If you want to remove nested `vendor/` directories from within dependencies use the `--strip-vendor` or `-v` flag.
+
 ### Dependency Flattening
 
 All of the dependencies Glide fetches are into the top level `vendor/` folder for a project. Go provides the ability for each package to have a `vendor/` folder. Glide only uses a top level folder for two reasons:
@@ -29,6 +33,8 @@
 1. Each import location will be compiled into the binary. If the same dependency is imported into three `vendor/` folders it will be in the compiled binary tree times. This can quickly lead to binary bloat.
 2. Instances of types created in a dependency in one `vendor/` folder are not compatible with the same dependency in other locations. Even if they are the same version. Go sees them as different packages because they are in different locations. This is a problem for database drivers, loggers, and many other things. If you [try to pass an instance created from one location of a package to another you'll encounter errors](https://github.com/mattfarina/golang-broken-vendor).
 
+If a dependency has a `vendor/` directory of its own Glide does not remove it by default. The resolution in the `go` toolchain will use these nested versions if they are present. To remove them use the `--strip-vendor` or `-v` flag on the `up` or `install` commands.
+
 ## Installing Dependencies
 
 If you want to install the dependencies needed by a project use the `install` command like so:
@@ -55,3 +61,5 @@
     $ glide get github.com/Masterminds/semver#~1.2.0
 
 The `#` is used as a separator between the dependency name and a version to use. The version can be a semantic version, version range, branch, tag, or commit id.
+
+If no version or range is specified and the dependency uses Semantic Versions Glide will prompt you to ask if you want to use them.
diff --git a/docs/index.md b/docs/index.md
index 00419e8..c9791bf 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -16,6 +16,7 @@
 
 There are a few ways to install Glide.
 
-1. Download a [versioned release](https://github.com/Masterminds/glide/releases). Glide releases are semantically versioned.
-2. Use a system package manager to install Glide. For example, using `brew install glide` can be used if you're using [Homebrew](http://brew.sh) on Mac.
-3. The latest development snapshot can be installed with `go get`. For example, `go get -u github.com/Masterminds/glide`. This is not a release version.
+1. Use the shell script to try an automatically install it. `curl https://glide.sh/get | sh`
+2. Download a [versioned release](https://github.com/Masterminds/glide/releases). Glide releases are semantically versioned.
+3. Use a system package manager to install Glide. For example, using `brew install glide` can be used if you're using [Homebrew](http://brew.sh) on Mac.
+4. The latest development snapshot can be installed with `go get`. For example, `go get -u github.com/Masterminds/glide`. This is not a release version.
diff --git a/glide.go b/glide.go
index 77c39a7..0c34030 100644
--- a/glide.go
+++ b/glide.go
@@ -1,39 +1,21 @@
-// Glide is a command line utility that manages Go project dependencies and
-// your GOPATH.
+// Glide is a command line utility that manages Go project dependencies.
 //
-// Dependencies are managed via a glide.yaml in the root of a project. The yaml
-//
-// Params:
-// 	- filename (string): The name of the glide YAML file. Default is glide.yaml.
-// 	- project (string): The name of the project. Default is 'main'.
-// file lets you specify projects, versions (tags, branches, or references),
-// and even alias one location in as other one. Aliasing is useful when supporting
-// forks without needing to rewrite the imports in a codebase.
+// Configureation of where to start is managed via a glide.yaml in the root of a
+// project. The yaml
 //
 // A glide.yaml file looks like:
 //
 //		package: github.com/Masterminds/glide
 //		imports:
-//			- package: github.com/Masterminds/cookoo
-//			  vcs: git
-//			  ref: 1.1.0
-//			  subpackages: **
-//			- package: github.com/kylelemons/go-gypsy
-//			  subpackages: yaml
+//		- package: github.com/Masterminds/cookoo
+//		- package: github.com/kylelemons/go-gypsy
+//		  subpackages:
+//		  - yaml
 //
 // Glide puts dependencies in a vendor directory. Go utilities require this to
-// be in your GOPATH. Glide makes this easy. Use the `glide in` command to enter
-// a shell (your default) with the GOPATH set to the projects vendor directory.
-// To leave this shell simply exit it.
+// be in your GOPATH. Glide makes this easy.
 //
-// If your .bashrc, .zshrc, or other startup shell sets your GOPATH you many need
-// to optionally set it using something like:
-//
-//		if [ "" = "${GOPATH}" ]; then
-//		  export GOPATH="/some/dir"
-//		fi
-//
-// For more information use the `glide help` command or see https://github.com/Masterminds/glide
+// For more information use the `glide help` command or see https://glide.sh
 package main
 
 import (
@@ -52,25 +34,23 @@
 	"os"
 )
 
-var version = "0.11.0-dev"
+var version = "0.12.0-dev"
 
-const usage = `The lightweight vendor package manager for your Go projects.
+const usage = `Vendor Package Management for your Go projects.
 
-Each project should have a 'glide.yaml' file in the project directory. Files
-look something like this:
+   Each project should have a 'glide.yaml' file in the project directory. Files
+   look something like this:
 
-	package: github.com/Masterminds/glide
-	imports:
-		- package: github.com/Masterminds/cookoo
-		  vcs: git
-		  ref: 1.1.0
-		  subpackages: **
-		- package: github.com/kylelemons/go-gypsy
-		  subpackages: yaml
-			flatten: true
+       package: github.com/Masterminds/glide
+       imports:
+       - package: github.com/Masterminds/cookoo
+         version: 1.1.0
+       - package: github.com/kylelemons/go-gypsy
+         subpackages:
+         - yaml
 
-NOTE: As of Glide 0.5, the commands 'into', 'gopath', 'status', and 'env'
-no longer exist.
+   For more details on the 'glide.yaml' files see the documentation at
+   https://glide.sh/docs/glide.yaml
 `
 
 // VendorDir default vendor directory name
@@ -92,8 +72,9 @@
 			Usage: "Quiet (no info or debug messages)",
 		},
 		cli.BoolFlag{
-			Name:  "verbose",
-			Usage: "Print detailed informational messages",
+			Name:   "verbose",
+			Usage:  "Print detailed informational messages",
+			Hidden: true,
 		},
 		cli.BoolFlag{
 			Name:  "debug",
@@ -184,27 +165,21 @@
 			Description: `Gets one or more package (like 'go get') and then adds that file
    to the glide.yaml file. Multiple package names can be specified on one line.
 
-   	$ glide get github.com/Masterminds/cookoo/web
+       $ glide get github.com/Masterminds/cookoo/web
 
    The above will install the project github.com/Masterminds/cookoo and add
    the subpackage 'web'.
 
    If a fetched dependency has a glide.yaml file, configuration from Godep,
-   GPM, or GB Glide that configuration will be used to find the dependencies
+   GPM, GOM, or GB Glide that configuration will be used to find the dependencies
    and versions to fetch. If those are not available the dependent packages will
    be fetched as either a version specified elsewhere or the latest version.
 
    When adding a new dependency Glide will perform an update to work out the
-   the versions to use from the dependency tree. This will generate an updated
-   glide.lock file with specific locked versions to use.
+   the versions for the dependencies of this dependency (transitive ones). This
+   will generate an updated glide.lock file with specific locked versions to use.
 
-   If you are storing the outside dependencies in your version control system
-   (VCS), also known as vendoring, there are a few flags that may be useful.
-   The '--update-vendored' flag will cause Glide to update packages when VCS
-   information is unavailable. This can be used with the '--strip-vcs' flag which
-   will strip VCS data found in the vendor directory. This is useful for
-   removing VCS data from transitive dependencies and initial setups. The
-   '--strip-vendor' flag will remove any nested 'vendor' folders and
+   The '--strip-vendor' flag will remove any nested 'vendor' folders and
    'Godeps/_workspace' folders after an update (along with undoing any Godep
    import rewriting). Note, The Godeps specific functionality is deprecated and
    will be removed when most Godeps users have migrated to using the vendor
@@ -261,7 +236,7 @@
 				},
 				cli.BoolFlag{
 					Name:  "strip-vendor, v",
-					Usage: "Removes nested vendor and Godeps/_workspace directories. Requires --strip-vcs.",
+					Usage: "Removes nested vendor and Godeps/_workspace directories.",
 				},
 				cli.BoolFlag{
 					Name:  "non-interactive",
@@ -320,11 +295,7 @@
 			ShortName: "rm",
 			Usage:     "Remove a package from the glide.yaml file, and regenerate the lock file.",
 			Description: `This takes one or more package names, and removes references from the glide.yaml file.
-   This will rebuild the glide lock file with the following constraints:
-
-   - Dependencies are re-negotiated. Any that are no longer used are left out of the lock.
-   - Minor version re-nogotiation is performed on remaining dependencies.
-   - No updates are peformed. You may want to run 'glide up' to accomplish that.`,
+   This will rebuild the glide lock file re-resolving the depencies.`,
 			Flags: []cli.Flag{
 				cli.BoolFlag{
 					Name:  "delete,d",
@@ -446,7 +417,7 @@
 		{
 			Name:  "rebuild",
 			Usage: "Rebuild ('go build') the dependencies",
-			Description: `This rebuilds the packages' '.a' files. On some systems
+			Description: `(Deprecated) This rebuilds the packages' '.a' files. On some systems
 	this can improve performance on subsequent 'go run' and 'go build' calls.`,
 			Action: func(c *cli.Context) error {
 				action.Rebuild()
@@ -506,7 +477,7 @@
 				},
 				cli.BoolFlag{
 					Name:  "strip-vendor, v",
-					Usage: "Removes nested vendor and Godeps/_workspace directories. Requires --strip-vcs.",
+					Usage: "Removes nested vendor and Godeps/_workspace directories.",
 				},
 				cli.BoolFlag{
 					Name:  "skip-test",
@@ -549,19 +520,19 @@
 			Name:      "update",
 			ShortName: "up",
 			Usage:     "Update a project's dependencies",
-			Description: `This uses the native VCS of each package to try to
-   pull the most applicable updates. Packages with fixed refs (Versions or
-   tags) will not be updated. Packages with no ref or with a branch ref will
-   be updated as expected.
+			Description: `This updates the dependencies by scanning the codebase
+   to determine the needed dependencies and fetching them following the rules
+   in the glide.yaml file. When no rules exist the tip of the default branch
+   is used. For more details see https://glide.sh/docs/glide.yaml
 
    If a dependency has a glide.yaml file, update will read that file and
-   update those dependencies accordingly. Those dependencies are maintained in
+   use the information contained there. Those dependencies are maintained in
    a the top level 'vendor/' directory. 'vendor/foo/bar' will have its
    dependencies stored in 'vendor/'. This behavior can be disabled with
    '--no-recursive'. When this behavior is skipped a glide.lock file is not
    generated because the full dependency tree cannot be known.
 
-   Glide will also import Godep, GB, and GPM files as it finds them in dependencies.
+   Glide will also import Godep, GB, GOM, and GPM files as it finds them in dependencies.
    It will create a glide.yaml file from the Godeps data, and then update. This
    has no effect if '--no-recursive' is set.
 
@@ -624,7 +595,7 @@
 				},
 				cli.BoolFlag{
 					Name:  "strip-vendor, v",
-					Usage: "Removes nested vendor and Godeps/_workspace directories. Requires --strip-vcs.",
+					Usage: "Removes nested vendor and Godeps/_workspace directories.",
 				},
 				cli.BoolFlag{
 					Name:  "skip-test",
@@ -672,13 +643,16 @@
 		},
 		{
 			Name:  "tree",
-			Usage: "Tree prints the dependencies of this project as a tree.",
+			Usage: "(Deprecated) Tree prints the dependencies of this project as a tree.",
 			Description: `This scans a project's source files and builds a tree
    representation of the import graph.
 
    It ignores testdata/ and directories that begin with . or _. Packages in
    vendor/ are only included if they are referenced by the main project or
-   one of its dependencies.`,
+   one of its dependencies.
+
+   Note, for large projects this can display a large list tens of thousands of
+   lines long.`,
 			Action: func(c *cli.Context) error {
 				action.Tree(".", false)
 				return nil
@@ -771,7 +745,7 @@
 			Usage: "Manage mirrors",
 			Description: `Mirrors provide the ability to replace a repo location with
    another location that's a mirror of the original. This is useful when you want
-   to have a cache for your continious integration (CI) system or if you want to
+   to have a cache for your continuous integration (CI) system or if you want to
    work on a dependency in a local location.
 
    The mirrors are stored in an mirrors.yaml file in your GLIDE_HOME.
