diff --git a/action/get.go b/action/get.go
index 38e6547..7ad986f 100644
--- a/action/get.go
+++ b/action/get.go
@@ -93,7 +93,7 @@
 // - ensures that this package is not in the ignore list
 // - checks to see if this is already in the dependency list.
 // - splits version of of package name and adds the version attribute
-// - seperates repo from packages
+// - separates repo from packages
 // - sets up insecure repo URLs where necessary
 // - generates a list of subpackages
 func addPkgsToConfig(conf *cfg.Config, names []string, insecure bool) error {
diff --git a/dependency/resolver.go b/dependency/resolver.go
index fc894d6..91f5060 100644
--- a/dependency/resolver.go
+++ b/dependency/resolver.go
@@ -728,7 +728,7 @@
 	// like GOPATH, can be modified while we're running an operation, and
 	// render the cache inaccurate.
 	//
-	// Unfound items (LocUnkown) are never cached because we assume that as
+	// Unfound items (LocUnknown) are never cached because we assume that as
 	// part of the response, the Resolver may fetch that dependency.
 	if i, ok := r.findCache[name]; ok {
 		//msg.Info("Cache hit on %s", name)
diff --git a/msg/msg.go b/msg/msg.go
index 7c9f705..af949e7 100644
--- a/msg/msg.go
+++ b/msg/msg.go
@@ -8,9 +8,9 @@
 	"sync"
 )
 
-// Messanger provides the underlying implementation that displays output to
+// Messenger provides the underlying implementation that displays output to
 // users.
-type Messanger struct {
+type Messenger struct {
 	sync.Mutex
 
 	// Quiet, if true, suppresses chatty levels, like Info.
@@ -38,9 +38,9 @@
 	hasErrored bool
 }
 
-// NewMessanger creates a default Messanger to display output.
-func NewMessanger() *Messanger {
-	m := &Messanger{
+// NewMessenger creates a default Messenger to display output.
+func NewMessenger() *Messenger {
+	m := &Messenger{
 		Quiet:       false,
 		IsDebugging: false,
 		NoColor:     false,
@@ -53,11 +53,11 @@
 	return m
 }
 
-// Default contains a default messanger used by package level functions
-var Default = NewMessanger()
+// Default contains a default Messenger used by package level functions
+var Default = NewMessenger()
 
 // Info logs information
-func (m *Messanger) Info(msg string, args ...interface{}) {
+func (m *Messenger) Info(msg string, args ...interface{}) {
 	if m.Quiet {
 		return
 	}
@@ -65,13 +65,13 @@
 	m.Msg(prefix+msg, args...)
 }
 
-// Info logs information using the Default Messanger
+// Info logs information using the Default Messenger
 func Info(msg string, args ...interface{}) {
 	Default.Info(msg, args...)
 }
 
 // Debug logs debug information
-func (m *Messanger) Debug(msg string, args ...interface{}) {
+func (m *Messenger) Debug(msg string, args ...interface{}) {
 	if m.Quiet || !m.IsDebugging {
 		return
 	}
@@ -79,30 +79,30 @@
 	Msg(prefix+msg, args...)
 }
 
-// Debug logs debug information using the Default Messanger
+// Debug logs debug information using the Default Messenger
 func Debug(msg string, args ...interface{}) {
 	Default.Debug(msg, args...)
 }
 
 // Warn logs a warning
-func (m *Messanger) Warn(msg string, args ...interface{}) {
+func (m *Messenger) Warn(msg string, args ...interface{}) {
 	prefix := m.Color(Yellow, "[WARN] ")
 	m.Msg(prefix+msg, args...)
 }
 
-// Warn logs a warning using the Default Messanger
+// Warn logs a warning using the Default Messenger
 func Warn(msg string, args ...interface{}) {
 	Default.Warn(msg, args...)
 }
 
 // Error logs and error.
-func (m *Messanger) Error(msg string, args ...interface{}) {
+func (m *Messenger) Error(msg string, args ...interface{}) {
 	prefix := m.Color(Red, "[ERROR] ")
 	m.Msg(prefix+msg, args...)
 	m.hasErrored = true
 }
 
-// Error logs and error using the Default Messanger
+// Error logs and error using the Default Messenger
 func Error(msg string, args ...interface{}) {
 	Default.Error(msg, args...)
 }
@@ -110,7 +110,7 @@
 // Die prints an error message and immediately exits the application.
 // If PanicOnDie is set to true a panic will occur instead of os.Exit being
 // called.
-func (m *Messanger) Die(msg string, args ...interface{}) {
+func (m *Messenger) Die(msg string, args ...interface{}) {
 	m.Error(msg, args...)
 	if m.PanicOnDie {
 		panic("trapped a Die() call")
@@ -119,7 +119,7 @@
 }
 
 // Die prints an error message and immediately exits the application using the
-// Default Messanger. If PanicOnDie is set to true a panic will occur instead of
+// Default Messenger. If PanicOnDie is set to true a panic will occur instead of
 // os.Exit being called.
 func Die(msg string, args ...interface{}) {
 	Default.Die(msg, args...)
@@ -130,7 +130,7 @@
 // The default is 1.
 //
 // Returns the old error code.
-func (m *Messanger) ExitCode(e int) int {
+func (m *Messenger) ExitCode(e int) int {
 	m.Lock()
 	old := m.ecode
 	m.ecode = e
@@ -138,7 +138,7 @@
 	return old
 }
 
-// ExitCode sets the exit code used by Die using the Default Messanger.
+// ExitCode sets the exit code used by Die using the Default Messenger.
 //
 // The default is 1.
 //
@@ -149,7 +149,7 @@
 
 // Msg prints a message with optional arguments, that can be printed, of
 // varying types.
-func (m *Messanger) Msg(msg string, args ...interface{}) {
+func (m *Messenger) Msg(msg string, args ...interface{}) {
 	// When operations in Glide are happening concurrently messaging needs to be
 	// locked to avoid displaying one message in the middle of another one.
 	m.Lock()
@@ -169,7 +169,7 @@
 }
 
 // Msg prints a message with optional arguments, that can be printed, of
-// varying types using the Default Messanger.
+// varying types using the Default Messenger.
 func Msg(msg string, args ...interface{}) {
 	Default.Msg(msg, args...)
 }
@@ -179,7 +179,7 @@
 // It does not prefix the message, does not color it, or otherwise decorate it.
 //
 // It does add a line feed.
-func (m *Messanger) Puts(msg string, args ...interface{}) {
+func (m *Messenger) Puts(msg string, args ...interface{}) {
 	// When operations in Glide are happening concurrently messaging needs to be
 	// locked to avoid displaying one message in the middle of another one.
 	m.Lock()
@@ -189,7 +189,7 @@
 	fmt.Fprintln(m.Stdout)
 }
 
-// Puts formats a message and then prints to Stdout using the Default Messanger.
+// Puts formats a message and then prints to Stdout using the Default Messenger.
 //
 // It does not prefix the message, does not color it, or otherwise decorate it.
 //
@@ -201,7 +201,7 @@
 // Print prints exactly the string given.
 //
 // It prints to Stdout.
-func (m *Messanger) Print(msg string) {
+func (m *Messenger) Print(msg string) {
 	// When operations in Glide are happening concurrently messaging needs to be
 	// locked to avoid displaying one message in the middle of another one.
 	m.Lock()
@@ -210,7 +210,7 @@
 	fmt.Fprint(m.Stdout, msg)
 }
 
-// Print prints exactly the string given using the Default Messanger.
+// Print prints exactly the string given using the Default Messenger.
 //
 // It prints to Stdout.
 func Print(msg string) {
@@ -221,11 +221,11 @@
 //
 // This is useful if you want to known if Error was called to exit with a
 // non-zero exit code.
-func (m *Messanger) HasErrored() bool {
+func (m *Messenger) HasErrored() bool {
 	return m.hasErrored
 }
 
-// HasErrored returns if Error has been called on the Default Messanger.
+// HasErrored returns if Error has been called on the Default Messenger.
 //
 // This is useful if you want to known if Error was called to exit with a
 // non-zero exit code.
diff --git a/msg/out.go b/msg/out.go
index 8019d21..8bc2670 100644
--- a/msg/out.go
+++ b/msg/out.go
@@ -20,7 +20,7 @@
 //
 // The following will print the string "Foo" in yellow:
 //     fmt.Print(Color(Yellow, "Foo"))
-func (m *Messanger) Color(code, msg string) string {
+func (m *Messenger) Color(code, msg string) string {
 	if m.NoColor {
 		return msg
 	}
diff --git a/msg/out_windows.go b/msg/out_windows.go
index fa71e2b..0bbcfda 100644
--- a/msg/out_windows.go
+++ b/msg/out_windows.go
@@ -2,7 +2,7 @@
 
 package msg
 
-// The color codes here are for compatability with how Colors are used. Windows
+// The color codes here are for compatibility with how Colors are used. Windows
 // colors have not been implemented yet. See https://github.com/Masterminds/glide/issues/158
 // for more detail.
 const (
@@ -16,6 +16,6 @@
 
 // Color on windows returns no color. See
 // https://github.com/Masterminds/glide/issues/158 if you want to help.
-func (m *Messanger) Color(code, msg string) string {
+func (m *Messenger) Color(code, msg string) string {
 	return msg
 }
diff --git a/repo/installer.go b/repo/installer.go
index dc1faea..93e2548 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -422,7 +422,7 @@
 	// change over the course of setting versions.
 	Use *importCache
 
-	// Cache if importing scan has already occured here.
+	// Cache if importing scan has already occurred here.
 	Imported map[string]bool
 
 	// Where the packages exist to set the version on.
diff --git a/repo/vcs.go b/repo/vcs.go
index c54531f..96432ac 100644
--- a/repo/vcs.go
+++ b/repo/vcs.go
@@ -153,7 +153,7 @@
 
 	cwd := filepath.Join(vend, dep.Name)
 
-	// If there is no refernece configured there is nothing to set.
+	// If there is no reference configured there is nothing to set.
 	if dep.Reference == "" {
 		// Before exiting update the pinned version
 		repo, err := dep.GetRepo(cwd)
@@ -261,7 +261,7 @@
 					continue
 				}
 
-				// Dirty repos have uncomitted changes.
+				// Dirty repos have uncommitted changes.
 				if repo.IsDirty() {
 					continue
 				}
