diff --git a/cmd/cue/cmd/common.go b/cmd/cue/cmd/common.go
index 4a03a17..e852780 100644
--- a/cmd/cue/cmd/common.go
+++ b/cmd/cue/cmd/common.go
@@ -25,6 +25,7 @@
 	"cuelang.org/go/cue/build"
 	"cuelang.org/go/cue/errors"
 	"cuelang.org/go/cue/load"
+	"cuelang.org/go/cue/parser"
 	"github.com/spf13/cobra"
 )
 
@@ -38,15 +39,19 @@
 var cwd = "////"
 
 // printHeader is a hacky and unprincipled way to sanatize the package path.
-func printHeader(w io.Writer, inst *cue.Instance) {
-	head := strings.Replace(inst.Dir, cwd, ".", 1)
+func printHeader(w io.Writer, dir string) {
+	head := strings.Replace(dir, cwd, ".", 1)
 	fmt.Fprintf(w, "--- %s\n", head)
 }
 
 func exitIfErr(cmd *cobra.Command, inst *cue.Instance, err error, fatal bool) {
+	exitOnErr(cmd, inst.Dir, err, fatal)
+}
+
+func exitOnErr(cmd *cobra.Command, file string, err error, fatal bool) {
 	if err != nil {
 		w := &bytes.Buffer{}
-		printHeader(w, inst)
+		printHeader(w, file)
 		errors.Print(w, err)
 
 		// TODO: do something more principled than this.
@@ -69,7 +74,7 @@
 
 var (
 	config = &load.Config{
-		Context: build.NewContext(),
+		Context: build.NewContext(build.ParseOptions(parser.ParseComments)),
 	}
 )
 
diff --git a/cmd/cue/cmd/import.go b/cmd/cue/cmd/import.go
index 05f016d..cf6dadb 100644
--- a/cmd/cue/cmd/import.go
+++ b/cmd/cue/cmd/import.go
@@ -17,7 +17,6 @@
 import (
 	"bytes"
 	"encoding/json"
-	"errors"
 	"fmt"
 	"io"
 	"io/ioutil"
@@ -32,6 +31,7 @@
 	"cuelang.org/go/cue"
 	"cuelang.org/go/cue/ast"
 	"cuelang.org/go/cue/encoding"
+	"cuelang.org/go/cue/errors"
 	"cuelang.org/go/cue/format"
 	"cuelang.org/go/cue/literal"
 	"cuelang.org/go/cue/load"
@@ -266,7 +266,7 @@
 
 	var group errgroup.Group
 
-	group.Go(func() error {
+	group.Go(func() (err error) {
 		if len(args) > 0 && len(filepath.Ext(args[0])) > len(".") {
 			for _, a := range args {
 				group.Go(func() error { return handleFile(cmd, *fPackage, a) })
@@ -311,13 +311,11 @@
 	})
 
 	err := group.Wait()
-	if err != nil {
-		return fmt.Errorf("Import failed: %v", err)
-	}
+	exitOnErr(cmd, "", err, true)
 	return nil
 }
 
-func handleFile(cmd *cobra.Command, pkg, filename string) error {
+func handleFile(cmd *cobra.Command, pkg, filename string) (err error) {
 	re, err := regexp.Compile(*name)
 	if err != nil {
 		return err
diff --git a/cmd/cue/cmd/vet.go b/cmd/cue/cmd/vet.go
index cfceecc..27cbeaa 100644
--- a/cmd/cue/cmd/vet.go
+++ b/cmd/cue/cmd/vet.go
@@ -64,7 +64,7 @@
 		}
 		err := inst.Value().Validate(opt...)
 		if *fVerbose || err != nil {
-			printHeader(w, inst)
+			printHeader(w, inst.Dir)
 		}
 		exitIfErr(cmd, inst, err, false)
 	}
