diff --git a/README.md b/README.md
index 23702fd..47b1798 100644
--- a/README.md
+++ b/README.md
@@ -7,41 +7,41 @@
 
 ## What is Viper?
 
-Viper is a complete configuration solution for go applications. It has
-been designed to work within an application to handle all types of
-configuration. It supports
+Viper is a complete configuration solution for go applications. It is designed
+to work within an application, and can handle all types of configuration needs
+and formats. It supports:
 
 * setting defaults
-* reading from json, toml and yaml config files
+* reading from JSON, TOML, and YAML config files
 * reading from environment variables
-* reading from remote config systems (Etcd or Consul), watching changes
+* reading from remote config systems (Etcd or Consul), and watching changes
 * reading from command line flags
 * reading from buffer
 * setting explicit values
 
-It can be thought of as a registry for all of your applications
+Viper can be thought of as a registry for all of your applications
 configuration needs.
 
 ## Why Viper?
 
-When building a modern application, you don’t want to have to worry about
+When building a modern application, you don’t want to worry about
 configuration file formats; you want to focus on building awesome software.
 Viper is here to help with that.
 
 Viper does the following for you:
 
-1. Find, load and marshal a configuration file in JSON, TOML or YAML.
+1. Find, load, and marshal a configuration file in JSON, TOML, or YAML.
 2. Provide a mechanism to set default values for your different
    configuration options.
-3. Provide a mechanism to set override values for options specified
-   through command line flags.
-4. Provide an alias system to easily rename parameters without breaking
-   existing code.
-5. Make it easy to tell the difference between when a user has provided
-   a command line or config file which is the same as the default.
+3. Provide a mechanism to set override values for options specified through
+   command line flags.
+4. Provide an alias system to easily rename parameters without breaking existing
+   code.
+5. Make it easy to tell the difference between when a user has provided a
+   command line or config file which is the same as the default.
 
-Viper uses the following precedence order. Each item takes precedence
-over the item below it:
+Viper uses the following precedence order. Each item takes precedence over the
+item below it:
 
  * explicit call to Set
  * flag
@@ -56,10 +56,9 @@
 
 ### Establishing Defaults
 
-A good configuration system will support default values. A default value
-is not required for a key, but can establish a default to be used in the
-event that the key hasn’t be set via config file, environment variable,
-remote configuration or flag.
+A good configuration system will support default values. A default value is not
+required for a key, but it's useful in the event that a key hasn’t be set via
+config file, environment variable, remote configuration or flag.
 
 Examples:
 
@@ -71,10 +70,9 @@
 
 ### Reading Config Files
 
-If you want to support a config file, Viper requires a minimal
-configuration so it knows where to look for the config file. Viper
-supports json, toml and yaml files. Viper can search multiple paths, but
-currently a single viper only supports a single config file.
+Viper requires minimal configuration so it knows where to look for config files.
+Viper supports JSON, TOML and YAML files. Viper can search multiple paths, but
+currently a single Viper instance only supports a single configuration file.
 
 ```go
 viper.SetConfigName("config") // name of config file (without extension)
@@ -88,14 +86,14 @@
 
 ### Reading Config from io.Reader
 
-Viper predefined many configuration sources, such as files, environment variables, flags and 
-remote K/V store. But you are not bound to them. You can also implement your own way to
-require configuration and feed it to viper.
+Viper predefines many configuration sources such as files, environment
+variables, flags, and remote K/V store, but you are not bound to them. You can
+also implement your own required configuration source and feed it to viper.
 
 ```go
 viper.SetConfigType("yaml") // or viper.SetConfigType("YAML")
 
-// any approach to require this configuration into your program. 
+// any approach to require this configuration into your program.
 var yamlExample = []byte(`
 Hacker: true
 name: steve
@@ -142,44 +140,43 @@
 ### Working with Environment Variables
 
 Viper has full support for environment variables. This enables 12 factor
-applications out of the box. There are four methods that exist to aid
-with working with ENV:
+applications out of the box. There are four methods that exist to aid working
+with ENV:
 
- * AutomaticEnv()
- * BindEnv(string...) : error
- * SetEnvPrefix(string)
- * SetEnvReplacer(string...) *strings.Replacer
+ * `AutomaticEnv()`
+ * `BindEnv(string...) : error`
+ * `SetEnvPrefix(string)`
+ * `SetEnvReplacer(string...) *strings.Replacer`
 
 _When working with ENV variables, it’s important to recognize that Viper
 treats ENV variables as case sensitive._
 
-Viper provides a mechanism to try to ensure that ENV variables are
-unique. By using SetEnvPrefix, you can tell Viper to use add a prefix
-while reading from the environment variables. Both BindEnv and
-AutomaticEnv will use this prefix.
+Viper provides a mechanism to try to ensure that ENV variables are unique. By
+using `SetEnvPrefix`, you can tell Viper to use add a prefix while reading from
+the environment variables. Both `BindEnv` and `AutomaticEnv` will use this
+prefix.
 
-BindEnv takes one or two parameters. The first parameter is the key
-name, the second is the name of the environment variable. The name of
-the environment variable is case sensitive. If the ENV variable name is
-not provided, then Viper will automatically assume that the key name
-matches the ENV variable name but the ENV variable is IN ALL CAPS. When
-you explicitly provide the ENV variable name, it **does not**
-automatically add the prefix.
+`BindEnv` takes one or two parameters. The first parameter is the key name, the
+second is the name of the environment variable. The name of the environment
+variable is case sensitive. If the ENV variable name is not provided, then
+Viper will automatically assume that the key name matches the ENV variable name,
+but the ENV variable is IN ALL CAPS. When you explicitly provide the ENV
+variable name, it **does not** automatically add the prefix.
 
-One important thing to recognize when working with ENV variables is that
-the value will be read each time it is accessed. It does not fix the
-value when the BindEnv is called.
+One important thing to recognize when working with ENV variables is that the
+value will be read each time it is accessed. Viper does not fix the value when
+the `BindEnv` is called.
 
-AutomaticEnv is a powerful helper especially when combined with
-SetEnvPrefix. When called, Viper will check for an environment variable
-any time a viper.Get request is made. It will apply the following rules.
-It will check for a environment variable with a name matching the key
-uppercased and prefixed with the EnvPrefix if set.
+`AutomaticEnv` is a powerful helper especially when combined with
+`SetEnvPrefix`. When called, Viper will check for an environment variable any
+time a `viper.Get` request is made. It will apply the following rules. It will
+check for a environment variable with a name matching the key uppercased and
+prefixed with the `EnvPrefix` if set.
 
-SetEnvReplacer allows you to use a `strings.Replacer` object to rewrite Env keys
-to an extent. This is useful if you want to use `-` or something in your Get()
-calls, but want your environmental variables to use `_` delimiters. An example
-of using it can be found in `viper_test.go`.
+`SetEnvReplacer` allows you to use a `strings.Replacer` object to rewrite Env
+keys to an extent. This is useful if you want to use `-` or something in your
+`Get()` calls, but want your environmental variables to use `_` delimiters. An
+example of using it can be found in `viper_test.go`.
 
 #### Env example
 
@@ -194,14 +191,14 @@
 
 ### Working with Flags
 
-Viper has the ability to bind to flags. Specifically, Viper supports
-Pflags as used in the [Cobra](https://github.com/spf13/cobra) library.
+Viper has the ability to bind to flags. Specifically, Viper supports `Pflags`
+as used in the [Cobra](https://github.com/spf13/cobra) library.
 
-Like BindEnv, the value is not set when the binding method is called, but
-when it is accessed. This means you can bind as early as you want, even
-in an init() function.
+Like `BindEnv`, the value is not set when the binding method is called, but when
+it is accessed. This means you can bind as early as you want, even in an
+`init()` function.
 
-The BindPFlag() method provides this functionality.
+The `BindPFlag()` method provides this functionality.
 
 Example:
 
@@ -212,25 +209,26 @@
 
 ### Remote Key/Value Store Support
 
-To enable remote support in Viper, do a blank import of the `viper/remote` package:
+To enable remote support in Viper, do a blank import of the `viper/remote`
+package:
 
 `import _ github.com/spf13/viper/remote`
 
-Viper will read a config string (as JSON, TOML, or YAML) retrieved from a
-path in a Key/Value store such as Etcd or Consul.  These values take precedence
-over default values, but are overriden by configuration values retrieved from disk,
+Viper will read a config string (as JSON, TOML, or YAML) retrieved from a path
+in a Key/Value store such as Etcd or Consul.  These values take precedence over
+default values, but are overridden by configuration values retrieved from disk,
 flags, or environment variables.
 
-Viper uses [crypt](https://github.com/xordataexchange/crypt) to retrieve configuration
-from the K/V store, which means that you can store your configuration values
-encrypted and have them automatically decrypted if you have the correct
-gpg keyring.  Encryption is optional.
+Viper uses [crypt](https://github.com/xordataexchange/crypt) to retrieve
+configuration from the K/V store, which means that you can store your
+configuration values encrypted and have them automatically decrypted if you have
+the correct gpg keyring.  Encryption is optional.
 
 You can use remote configuration in conjunction with local configuration, or
 independently of it.
 
-`crypt` has a command-line helper that you can use to put configurations
-in your K/V store. `crypt` defaults to etcd on http://127.0.0.1:4001.
+`crypt` has a command-line helper that you can use to put configurations in your
+K/V store. `crypt` defaults to etcd on http://127.0.0.1:4001.
 
 ```bash
 $ go get github.com/xordataexchange/crypt/bin/crypt
@@ -243,8 +241,8 @@
 $ crypt get -plaintext /config/hugo.json
 ```
 
-See the `crypt` documentation for examples of how to set encrypted values, or how
-to use Consul.
+See the `crypt` documentation for examples of how to set encrypted values, or
+how to use Consul.
 
 ### Remote Key/Value Store Example - Unencrypted
 
@@ -298,24 +296,24 @@
 
 ## Getting Values From Viper
 
-In Viper, there are a few ways to get a value depending on what type of value you want to retrieved.
+In Viper, there are a few ways to get a value depending on the value's type.
 The following functions and methods exist:
 
- * Get(key string) : interface{}
- * GetBool(key string) : bool
- * GetFloat64(key string) : float64
- * GetInt(key string) : int
- * GetString(key string) : string
- * GetStringMap(key string) : map[string]interface{}
- * GetStringMapString(key string) : map[string]string
- * GetStringSlice(key string) : []string
- * GetTime(key string) : time.Time
- * GetDuration(key string) : time.Duration
- * IsSet(key string) : bool
+ * `Get(key string) : interface{}`
+ * `GetBool(key string) : bool`
+ * `GetFloat64(key string) : float64`
+ * `GetInt(key string) : int`
+ * `GetString(key string) : string`
+ * `GetStringMap(key string) : map[string]interface{}`
+ * `GetStringMapString(key string) : map[string]string`
+ * `GetStringSlice(key string) : []string`
+ * `GetTime(key string) : time.Time`
+ * `GetDuration(key string) : time.Duration`
+ * `IsSet(key string) : bool`
 
-One important thing to recognize is that each Get function will return
-its zero value if it’s not found. To check if a given key exists, the IsSet()
-method has been provided.
+One important thing to recognize is that each Get function will return a zero
+value if it’s not found. To check if a given key exists, the `IsSet()` method
+has been provided.
 
 Example:
 ```go
@@ -326,8 +324,8 @@
 ```
 ### Accessing nested keys
 
-The accessor methods also accept formatted paths to deeply nested keys. 
-For example, if the following JSON file is loaded:
+The accessor methods also accept formatted paths to deeply nested keys. For
+example, if the following JSON file is loaded:
 
 ```json
 {
@@ -355,18 +353,19 @@
 GetString("datastore.metric.host") // (returns "127.0.0.1")
 ```
 
-This obeys the precendense rules established above; the search for the root key
-(in this examole, `datastore`) will cascade through the remaining configuration registries
-until found. The search for the subkeys (`metric` and `host`), however, will not.
+This obeys the precedence rules established above; the search for the root key
+(in this example, `datastore`) will cascade through the remaining configuration
+registries until found. The search for the sub-keys (`metric` and `host`),
+however, will not.
 
 For example, if the `metric` key was not defined in the configuration loaded
 from file, but was defined in the defaults, Viper would return the zero value.
 
-On the other hand, if the primary key was not defined, Viper would go through the
-remaining registries looking for it.
+On the other hand, if the primary key was not defined, Viper would go through
+the remaining registries looking for it.
 
-Lastly, if there exists a key that matches the delimited key path, its value will
-be returned instead. E.g. 
+Lastly, if there exists a key that matches the delimited key path, its value
+will be returned instead. E.g.
 
 ```json
 {
@@ -392,12 +391,13 @@
 
 ### Marshaling
 
-You also have the option of Marshaling all or a specific value to a struct, map, etc.
+You also have the option of Marshaling all or a specific value to a struct, map,
+etc.
 
 There are two methods to do this:
 
- * Marshal(rawVal interface{}) : error
- * MarshalKey(key string, rawVal interface{}) : error
+ * `Marshal(rawVal interface{}) : error`
+ * `MarshalKey(key string, rawVal interface{}) : error`
 
 Example:
 
@@ -418,19 +418,19 @@
 ## Viper or Vipers?
 
 Viper comes ready to use out of the box. There is no configuration or
-initialization needed to begin using Viper. Since most applications will
-want to use a single central repository for their configuration, the
-viper package provides this. It is similar to a singleton.
+initialization needed to begin using Viper. Since most applications will want
+to use a single central repository for their configuration, the viper package
+provides this. It is similar to a singleton.
 
-In all of the examples above, they demonstrate using viper in its
-singleton style approach.
+In all of the examples above, they demonstrate using viper in it's singleton
+style approach.
 
 ### Working with multiple vipers
 
-You can also create many different vipers for use in your application.
-Each will have it’s own unique set of configurations and values. Each
-can read from a different config file, key value store, etc. All of the
-functions that viper package supports are mirrored as methods on a viper.
+You can also create many different vipers for use in your application. Each will
+have it’s own unique set of configurations and values. Each can read from a
+different config file, key value store, etc. All of the functions that viper
+package supports are mirrored as methods on a viper.
 
 Example:
 
@@ -444,8 +444,8 @@
 //...
 ```
 
-When working with multiple vipers, it is up to the user to keep track of
-the different vipers.
+When working with multiple vipers, it is up to the user to keep track of the
+different vipers.
 
 ## Q & A
 
@@ -453,13 +453,13 @@
 
 A: Ini files are pretty awful. There’s no standard format, and they are hard to
 validate. Viper is designed to work with JSON, TOML or YAML files. If someone
-really wants to add this feature, I’d be happy to merge it. It’s easy to
-specify which formats your application will permit.
+really wants to add this feature, I’d be happy to merge it. It’s easy to specify
+which formats your application will permit.
 
 Q: Why is it called “Viper”?
 
-A: Viper is designed to be a [companion](http://en.wikipedia.org/wiki/Viper_(G.I._Joe)) to
-[Cobra](https://github.com/spf13/cobra). While both can operate completely
+A: Viper is designed to be a [companion](http://en.wikipedia.org/wiki/Viper_(G.I._Joe))
+to [Cobra](https://github.com/spf13/cobra). While both can operate completely
 independently, together they make a powerful pair to handle much of your
 application foundation needs.
 
