diff --git a/encoding/protobuf/parse.go b/encoding/protobuf/parse.go
index 3c8713d..9647df4 100644
--- a/encoding/protobuf/parse.go
+++ b/encoding/protobuf/parse.go
@@ -101,16 +101,26 @@
 					failf(x.Position, "unquoting package filed: %v", err)
 				}
 				split := strings.Split(str, ";")
-				p.goPkgPath = split[0]
-				switch len(split) {
-				case 1:
-					p.goPkg = path.Base(str)
-				case 2:
-					p.goPkg = split[1]
+				switch {
+				case strings.Contains(split[0], "."):
+					p.cuePkgPath = split[0]
+					switch len(split) {
+					case 1:
+						p.shortPkgName = path.Base(str)
+					case 2:
+						p.shortPkgName = split[1]
+					default:
+						failf(x.Position, "unexpected ';' in %q", str)
+					}
+					p.file.Name = ast.NewIdent(p.shortPkgName)
+
+				case len(split) == 1:
+					p.shortPkgName = split[0]
+					p.file.Name = ast.NewIdent(p.shortPkgName)
+
 				default:
-					failf(x.Position, "unexpected ';' in %q", str)
+					failf(x.Position, "malformed go_package clause %s", str)
 				}
-				p.file.Name = ast.NewIdent(p.goPkg)
 				// name.AddComment(comment(x.Comment, true))
 				// name.AddComment(comment(x.InlineComment, false))
 			}
@@ -163,10 +173,10 @@
 
 	proto3 bool
 
-	id        string
-	protoPkg  string
-	goPkg     string
-	goPkgPath string
+	id           string
+	protoPkg     string
+	shortPkgName string
+	cuePkgPath   string
 
 	// w bytes.Buffer
 	file   *ast.File
@@ -187,6 +197,23 @@
 	pkg   *protoConverter
 }
 
+func (p *protoConverter) importPath() string {
+	if p.cuePkgPath == "" && p.protoPkg != "" {
+		dir := strings.Replace(p.protoPkg, ".", "/", -1)
+		p.cuePkgPath = path.Join("googleapis.com", dir)
+	}
+	return p.cuePkgPath
+}
+
+func (p *protoConverter) shortName() string {
+	if p.shortPkgName == "" && p.protoPkg != "" {
+		split := strings.Split(p.protoPkg, ".")
+		p.shortPkgName = split[len(split)-1]
+		p.file.Name = ast.NewIdent(p.shortPkgName)
+	}
+	return p.shortPkgName
+}
+
 func (p *protoConverter) toCUEPos(pos scanner.Position) token.Pos {
 	return p.tfile.Pos(pos.Offset, 0)
 }
@@ -297,7 +324,7 @@
 		}
 		if m, ok := p.scope[0][name[:i]]; ok {
 			if m.pkg != nil {
-				p.imported[m.pkg.goPkgPath] = true
+				p.imported[m.pkg.importPath()] = true
 				// TODO: do something more principled.
 			}
 			cueName := strings.Replace(name[i:], ".", "_", -1)
@@ -340,8 +367,8 @@
 	}
 
 	prefix := ""
-	if imp.goPkgPath != p.goPkgPath {
-		prefix = imp.goPkg + "."
+	if imp.importPath() != p.importPath() {
+		prefix = imp.shortName() + "."
 	}
 
 	pkgNamespace := strings.Split(imp.protoPkg, ".")
@@ -354,7 +381,7 @@
 			}
 			if _, ok := p.scope[0][ref]; !ok {
 				pkg := imp
-				if imp.goPkgPath == p.goPkgPath {
+				if imp.importPath() == p.importPath() {
 					pkg = nil
 				}
 				p.scope[0][ref] = mapping{prefix + k, "", pkg}
