diff --git a/cfg/config_test.go b/cfg/config_test.go
index 082a9a4..58e0904 100644
--- a/cfg/config_test.go
+++ b/cfg/config_test.go
@@ -1,35 +1,14 @@
 package cfg
 
 import (
+	"reflect"
 	"testing"
 
+	"github.com/sdboyer/gps"
+
 	"gopkg.in/yaml.v2"
 )
 
-var yml = `
-package: fake/testing
-description: foo bar baz
-homepage: https://example.com
-license: MIT
-owners:
-- name: foo
-  email: bar@example.com
-  homepage: https://example.com
-dependencies:
-- github.com/kylelemons/go-gypsy:
-    version: 1.0.0
-- github.com/Masterminds/convert:
-    repo: git@github.com:Masterminds/convert.git
-    version: a9949121a2e2192ca92fa6dddfeaaa4a4412d955
-- github.com/Masterminds/structable:
-    branch: master
-- github.com/Masterminds/cookoo/convert
-    repo: https://github.com/cookoo/convert.git
-
-testDependencies:
-  - package: github.com/kylelemons/go-gypsy
-`
-
 var lyml = `
 package: fake/testing
 description: foo bar baz
@@ -65,9 +44,133 @@
   - package: github.com/kylelemons/go-gypsy
 `
 
+var yml = `
+package: fake/testing
+description: foo bar baz
+homepage: https://example.com
+license: MIT
+owners:
+- name: foo
+  email: bar@example.com
+  homepage: https://example.com
+dependencies:
+  - package: github.com/kylelemons/go-gypsy
+    version: v1.0.0
+  - package: github.com/Masterminds/convert
+    repo: git@github.com:Masterminds/convert.git
+    version: a9949121a2e2192ca92fa6dddfeaaa4a4412d955
+  - package: github.com/Masterminds/structable
+    branch: master
+  - package: github.com/Masterminds/cookoo
+    repo: git://github.com/Masterminds/cookoo
+  - package: github.com/sdboyer/gps
+    version: ^v1.0.0
+
+testDependencies:
+  - package: github.com/Sirupsen/logrus
+    version: ~v1.0.0
+`
+
+func TestManualConfigFromYaml(t *testing.T) {
+	cfg := &Config{}
+	err := yaml.Unmarshal([]byte(yml), &cfg)
+	if err != nil {
+		t.Errorf("Unable to Unmarshal config yaml")
+	}
+
+	found := make(map[string]bool)
+	for _, i := range cfg.Imports {
+		found[i.Name] = true
+
+		switch i.Name {
+		case "github.com/kylelemons/go-gypsy":
+			ref := gps.NewVersion("v1.0.0")
+			if i.Constraint != ref {
+				t.Errorf("(%s) Expected %q for constraint, got %q", i.Name, ref, i.Constraint)
+			}
+
+		case "github.com/Masterminds/convert":
+			ref := gps.Revision("a9949121a2e2192ca92fa6dddfeaaa4a4412d955")
+			if i.Constraint != ref {
+				t.Errorf("(%s) Expected %q for constraint, got %q", i.Name, ref, i.Constraint)
+			}
+
+			repo := "git@github.com:Masterminds/convert.git"
+			if i.Repository != repo {
+				t.Errorf("(%s) Expected %q for repository, got %q", i.Name, repo, i.Repository)
+			}
+
+		case "github.com/Masterminds/structable":
+			ref := gps.NewBranch("master")
+			if i.Constraint != ref {
+				t.Errorf("(%s) Expected %q for constraint, got %q", i.Name, ref, i.Constraint)
+			}
+
+		case "github.com/Masterminds/cookoo":
+			repo := "git://github.com/Masterminds/cookoo"
+			if i.Repository != repo {
+				t.Errorf("(%s) Expected %q for repository, got %q", i.Name, repo, i.Repository)
+			}
+
+		case "github.com/sdboyer/gps":
+			sv, _ := gps.NewSemverConstraint("^v1.0.0")
+			if !reflect.DeepEqual(sv, i.Constraint) {
+				t.Errorf("(%s) Expected %q for constraint, got %q", i.Name, sv, i.Constraint)
+			}
+		}
+	}
+
+	names := []string{
+		"github.com/Masterminds/convert",
+		"github.com/Masterminds/cookoo",
+		"github.com/Masterminds/structable",
+		"github.com/kylelemons/go-gypsy",
+		"github.com/sdboyer/gps",
+	}
+
+	for _, n := range names {
+		if !found[n] {
+			t.Errorf("Could not find config entry for %s", n)
+
+		}
+	}
+
+	if len(cfg.DevImports) != 1 {
+		t.Errorf("Expected 1 entry in DevImports, got %v", len(cfg.DevImports))
+	} else {
+		ti := cfg.DevImports[0]
+		n := "github.com/Sirupsen/logrus"
+		if ti.Name != n {
+			t.Errorf("Expected test dependency to be %s, got %s", n, ti.Name)
+		}
+
+		sv, _ := gps.NewSemverConstraint("~v1.0.0")
+		if !reflect.DeepEqual(sv, ti.Constraint) {
+			t.Errorf("(test dep: %s) Expected %q for constraint, got %q", ti.Name, sv, ti.Constraint)
+		}
+	}
+
+	if cfg.Name != "fake/testing" {
+		t.Errorf("Inaccurate name found %s", cfg.Name)
+	}
+
+	if cfg.Description != "foo bar baz" {
+		t.Errorf("Inaccurate description found %s", cfg.Description)
+	}
+
+	if cfg.Home != "https://example.com" {
+		t.Errorf("Inaccurate homepage found %s", cfg.Home)
+	}
+
+	if cfg.License != "MIT" {
+		t.Errorf("Inaccurate license found %s", cfg.License)
+	}
+
+}
+
 func TestLegacyManualConfigFromYaml(t *testing.T) {
 	cfg := &lConfig1{}
-	err := yaml.Unmarshal([]byte(yml), &cfg)
+	err := yaml.Unmarshal([]byte(lyml), &cfg)
 	if err != nil {
 		t.Errorf("Unable to Unmarshal config yaml")
 	}
@@ -136,7 +239,7 @@
 }
 
 func TestConfigFromYaml(t *testing.T) {
-	c, legacy, err := ConfigFromYaml([]byte(yml))
+	c, _, err := ConfigFromYaml([]byte(yml))
 	if err != nil {
 		t.Error("ConfigFromYaml failed to parse yaml")
 	}
@@ -147,7 +250,7 @@
 }
 
 func TestHasDependency(t *testing.T) {
-	c, legacy, err := ConfigFromYaml([]byte(yml))
+	c, _, err := ConfigFromYaml([]byte(yml))
 	if err != nil {
 		t.Error("ConfigFromYaml failed to parse yaml for HasDependency")
 	}
diff --git a/glide.lock b/glide.lock
index 9a968e2..a5d5c91 100644
--- a/glide.lock
+++ b/glide.lock
@@ -10,7 +10,7 @@
 - name: github.com/Masterminds/vcs
   version: fbe9fb6ad5b5f35b3e82a7c21123cfc526cbf895
 - name: github.com/sdboyer/gps
-  version: 278a227dfc3d595a33a77ff3f841fd8ca1bc8cd0
+  version: f6e74e8d79b34ee6954d0cc8b770758ec99870ad
 - name: github.com/termie/go-shutil
   version: bcacb06fecaeec8dc42af03c87c6949f4a05c74c
 - name: gopkg.in/yaml.v2
diff --git a/vendor/github.com/sdboyer/gps/constraints.go b/vendor/github.com/sdboyer/gps/constraints.go
index affde86..794100e 100644
--- a/vendor/github.com/sdboyer/gps/constraints.go
+++ b/vendor/github.com/sdboyer/gps/constraints.go
@@ -46,6 +46,11 @@
 	if err != nil {
 		return nil, err
 	}
+	// If we got a simple semver.Version, simplify by returning our
+	// corresponding type
+	if sv, ok := c.(*semver.Version); ok {
+		return semVersion{sv: sv}, nil
+	}
 	return semverConstraint{c: c}, nil
 }
 
