diff --git a/action/get.go b/action/get.go
index cf08abc..3c900ae 100644
--- a/action/get.go
+++ b/action/get.go
@@ -38,9 +38,9 @@
 	}
 
 	args := vsolver.SolveArgs{
-		N:    vsolver.ProjectName(conf.ProjectName),
-		Root: filepath.Dir(glidefile),
-		M:    conf,
+		Name:     vsolver.ProjectName(conf.ProjectName),
+		Root:     filepath.Dir(glidefile),
+		Manifest: conf,
 	}
 
 	opts := vsolver.SolveOpts{
@@ -52,7 +52,7 @@
 	// don't want a get to just update all deps without the user explictly
 	// making that choice.
 	if gpath.HasLock(base) {
-		args.L, err = LoadLockfile(base, conf)
+		args.Lock, err = LoadLockfile(base, conf)
 		if err != nil {
 			msg.Err("Could not load lockfile; aborting get. Existing dependency versions cannot be safely preserved without a lock file. Error was: %s", err)
 			return
@@ -60,7 +60,7 @@
 	}
 
 	// Create the SourceManager for this run
-	sm, err := vsolver.NewSourceManager(filepath.Join(installer.Home, "cache"), base, false, dependency.Analyzer{})
+	sm, err := vsolver.NewSourceManager(dependency.Analyzer{}, filepath.Join(installer.Home, "cache"), base, false)
 	defer sm.Release()
 	if err != nil {
 		msg.Err(err.Error())
@@ -98,7 +98,7 @@
 
 	gw := safeGroupWriter{
 		conf:        conf,
-		lock:        args.L.(*cfg.Lockfile),
+		lock:        args.Lock.(*cfg.Lockfile),
 		resultLock:  r,
 		sm:          sm,
 		glidefile:   glidefile,
diff --git a/action/install.go b/action/install.go
index 9dffc39..96ade7f 100644
--- a/action/install.go
+++ b/action/install.go
@@ -31,7 +31,7 @@
 	}
 
 	// Create the SourceManager for this run
-	sm, err := vsolver.NewSourceManager(filepath.Join(installer.Home, "cache"), base, false, dependency.Analyzer{})
+	sm, err := vsolver.NewSourceManager(dependency.Analyzer{}, filepath.Join(installer.Home, "cache"), base, false)
 	defer sm.Release()
 	if err != nil {
 		msg.Err(err.Error())
@@ -39,9 +39,9 @@
 	}
 
 	args := vsolver.SolveArgs{
-		N:    vsolver.ProjectName(conf.ProjectName),
-		Root: filepath.Dir(vend),
-		M:    conf,
+		Name:     vsolver.ProjectName(conf.ProjectName),
+		Root:     filepath.Dir(vend),
+		Manifest: conf,
 	}
 
 	opts := vsolver.SolveOpts{
@@ -51,7 +51,7 @@
 
 	var s vsolver.Solver
 	if gpath.HasLock(base) {
-		args.L, err = LoadLockfile(base, conf)
+		args.Lock, err = LoadLockfile(base, conf)
 		if err != nil {
 			msg.Err("Could not load lockfile.")
 			return
@@ -65,7 +65,7 @@
 		digest, err := s.HashInputs()
 
 		// Check if digests match, and warn if they don't
-		if bytes.Equal(digest, args.L.InputHash()) {
+		if bytes.Equal(digest, args.Lock.InputHash()) {
 			if so {
 				msg.Err("glide.yaml is out of sync with glide.lock")
 				return
@@ -75,7 +75,7 @@
 		}
 
 		gw := safeGroupWriter{
-			resultLock:  args.L,
+			resultLock:  args.Lock,
 			vendor:      vend,
 			sm:          sm,
 			stripVendor: sv,
diff --git a/action/update.go b/action/update.go
index 5a13068..ecd00d6 100644
--- a/action/update.go
+++ b/action/update.go
@@ -31,9 +31,9 @@
 	}
 
 	args := vsolver.SolveArgs{
-		N:    vsolver.ProjectName(conf.ProjectName),
-		Root: filepath.Dir(vend),
-		M:    conf,
+		Name:     vsolver.ProjectName(conf.ProjectName),
+		Root:     filepath.Dir(vend),
+		Manifest: conf,
 	}
 
 	opts := vsolver.SolveOpts{
@@ -54,7 +54,7 @@
 	}
 
 	if gpath.HasLock(base) {
-		args.L, err = LoadLockfile(base, conf)
+		args.Lock, err = LoadLockfile(base, conf)
 		if err != nil {
 			msg.Err("Could not load lockfile, aborting: %s", err)
 			return
@@ -62,7 +62,7 @@
 	}
 
 	// Create the SourceManager for this run
-	sm, err := vsolver.NewSourceManager(filepath.Join(installer.Home, "cache"), base, false, dependency.Analyzer{})
+	sm, err := vsolver.NewSourceManager(dependency.Analyzer{}, filepath.Join(installer.Home, "cache"), base, false)
 	defer sm.Release()
 	if err != nil {
 		msg.Err(err.Error())
@@ -84,7 +84,7 @@
 	}
 
 	gw := safeGroupWriter{
-		lock:        args.L.(*cfg.Lockfile),
+		lock:        args.Lock.(*cfg.Lockfile),
 		resultLock:  r,
 		sm:          sm,
 		vendor:      vend,
diff --git a/cfg/config.go b/cfg/config.go
index 34f6e60..221e9ec 100644
--- a/cfg/config.go
+++ b/cfg/config.go
@@ -162,15 +162,15 @@
 	return false
 }
 
-// GetDependencies lists all the normal dependencies described in a glide
-// manifest in a way vsolver will understand.
-func (c *Config) GetDependencies() []vsolver.ProjectDep {
+// DependencyConstraints lists all the non-test dependency constraints
+// described in a glide manifest in a way vsolver will understand.
+func (c *Config) DependencyConstraints() []vsolver.ProjectDep {
 	return depsToVSolver(c.Imports)
 }
 
-// GetDevDependencies lists all the development dependencies described in a glide
-// manifest in a way vsolver will understand.
-func (c *Config) GetDevDependencies() []vsolver.ProjectDep {
+// TestDependencyConstraints lists all the test dependency constraints described
+// in a glide manifest in a way vsolver will understand.
+func (c *Config) TestDependencyConstraints() []vsolver.ProjectDep {
 	return depsToVSolver(c.DevImports)
 }
 
