diff --git a/cmd/tree.go b/cmd/tree.go
index 5061bb9..885f34a 100644
--- a/cmd/tree.go
+++ b/cmd/tree.go
@@ -6,6 +6,7 @@
 	"go/build"
 	"os"
 	"path/filepath"
+	"sort"
 	"strings"
 
 	"github.com/Masterminds/cookoo"
@@ -29,32 +30,68 @@
 	}
 
 	fmt.Println(myName)
-
-	// Start with *.go
-	// Do a breadth-first search of subdirectories, excluding _*, .*, testdata,
-	// and vendor.
-	/*
-		deps := walkDeps(basedir, myName)
-		for _, name := range deps {
-			found := findPkg(name, basedir)
-			msg := found.Path
-			if found.PType == ptypeUnknown {
-				msg = "glide get " + found.Name
-			}
-			if !showcore && found.PType == ptypeGoroot {
-				continue
-			}
-			fmt.Printf("\t%s\t(%s)\n", found.Name, msg)
-		}
-	*/
 	displayTree(basedir, myName, 1, showcore)
-
-	// Now look up all of the external dependencies.
-
-	// Make it pretty.
 	return nil, nil
 }
 
+// ListDeps lists all of the dependencies of the current project.
+//
+// Params:
+//
+// Returns:
+//
+func ListDeps(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) {
+	basedir := p.Get("dir", ".").(string)
+	myName := guessPackageName(basedir)
+
+	var err error
+	basedir, err = filepath.Abs(basedir)
+	if err != nil {
+		return nil, err
+	}
+
+	direct := map[string]bool{}
+	d := walkDeps(basedir, myName)
+	for _, i := range d {
+		listDeps(direct, i, basedir)
+	}
+
+	sortable := make([]string, len(direct))
+	i := 0
+	for k, _ := range direct {
+		sortable[i] = k
+		i++
+	}
+
+	sort.Strings(sortable)
+
+	for _, k := range sortable {
+		dec := "no"
+		if direct[k] {
+			dec = "yes"
+		}
+		fmt.Printf("%s (Present: %s)\n", k, dec)
+	}
+
+	return nil, nil
+}
+
+func listDeps(info map[string]bool, name, path string) {
+	found := findPkg(name, path)
+	switch found.PType {
+	case ptypeUnknown:
+		info[name] = false
+		break
+	case ptypeGoroot:
+		break
+	default:
+		info[name] = true
+		for _, i := range walkDeps(found.Path, found.Name) {
+			listDeps(info, i, found.Path)
+		}
+	}
+}
+
 func displayTree(basedir, myName string, level int, core bool) {
 	deps := walkDeps(basedir, myName)
 	for _, name := range deps {
diff --git a/glide.go b/glide.go
index 1daf147..ce59609 100644
--- a/glide.go
+++ b/glide.go
@@ -321,6 +321,13 @@
 			},
 		},
 		{
+			Name:  "list",
+			Usage: "List prints all dependencies that Glide could discover.",
+			Action: func(c *cli.Context) {
+				setupHandler(c, "list", cxt, router)
+			},
+		},
+		{
 			Name:  "guess",
 			Usage: "Guess dependencies for existing source.",
 			Description: `This looks through existing source and dependencies,
@@ -488,6 +495,11 @@
 		Includes("@ready").
 		Does(cmd.Tree, "tree").
 		Using("conf").From("cxt:cfg")
+	reg.Route("list", "Print a dependency graph.").
+		Includes("@startup").
+		Includes("@ready").
+		Does(cmd.ListDeps, "list").
+		Using("conf").From("cxt:cfg")
 
 	reg.Route("nv", "No Vendor").
 		Includes("@startup").
