diff --git a/.travis.yml b/.travis.yml
index c5d28cd44b78594fffc76a6a20c3ffe13414eb76..ea5017c71d661884648afd4aaa0ceae7970acc00 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,7 +7,7 @@ go:
   - 1.9
   - '1.10'
 
-go_import_path: github.com/coreos/dex
+go_import_path: github.com/dexidp/dex
 
 services:
   - postgresql
diff --git a/Dockerfile b/Dockerfile
index 76fb37da78cd35e7f3830b4e93211cc2d9368d2b..1c5321d02b6be8137bfb5dca7bb21d4499d9fd42 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,8 +2,8 @@ FROM golang:1.10.2-alpine
 
 RUN apk add --no-cache --update alpine-sdk
 
-COPY . /go/src/github.com/coreos/dex
-RUN cd /go/src/github.com/coreos/dex && make release-binary
+COPY . /go/src/github.com/dexidp/dex
+RUN cd /go/src/github.com/dexidp/dex && make release-binary
 
 FROM alpine:3.4
 # Dex connectors, such as GitHub and Google logins require root certificates.
diff --git a/Documentation/api.md b/Documentation/api.md
index c0dadbd7f72ca8ff626d03158ad5bea34dd7befb..45c2bd4ec41dfcf4de93e5f638ca33dba4f3bfc1 100644
--- a/Documentation/api.md
+++ b/Documentation/api.md
@@ -31,7 +31,7 @@ $ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
 
 # Download api.proto for a given version.
 $ DEX_VERSION=v2.0.0-alpha.5
-$ wget https://raw.githubusercontent.com/coreos/dex/${DEX_VERSION}/api/api.proto
+$ wget https://raw.githubusercontent.com/dexidp/dex/${DEX_VERSION}/api/api.proto
 
 # Generate the Go client bindings.
 $ protoc --go_out=import_path=dexapi:. api.proto
@@ -39,7 +39,7 @@ $ protoc --go_out=import_path=dexapi:. api.proto
 
 Client programs can then be written using the generated code. A Go client which uses dex's internally generated code might look like the following:
 
-__NOTE:__ Because dex has the `google.golang.org/grpc` package in its `vendor` directory, gRPC code in `github.com/coreos/dex/api` refers to the vendored copy, not copies in a developers GOPATH. Clients must either regenerate the gRPC Go code or vendor dex and remove its `vendor` directory to run this program.
+__NOTE:__ Because dex has the `google.golang.org/grpc` package in its `vendor` directory, gRPC code in `github.com/dexidp/dex/api` refers to the vendored copy, not copies in a developers GOPATH. Clients must either regenerate the gRPC Go code or vendor dex and remove its `vendor` directory to run this program.
 
 ```
 package main
@@ -49,7 +49,7 @@ import (
     "fmt"
     "log"
 
-    "github.com/coreos/dex/api"
+    "github.com/dexidp/dex/api"
     "google.golang.org/grpc"
     "google.golang.org/grpc/credentials"
 )
diff --git a/Documentation/connectors/oidc.md b/Documentation/connectors/oidc.md
index 56bedd90b59c75ff5010baa286cd696d4da68c65..bcfd36eb71d0b07dcf1541dde941ffed3401bbb3 100644
--- a/Documentation/connectors/oidc.md
+++ b/Documentation/connectors/oidc.md
@@ -50,6 +50,6 @@ connectors:
 ```
 
 [oidc-doc]: openid-connect.md
-[issue-863]: https://github.com/coreos/dex/issues/863
-[issue-1065]: https://github.com/coreos/dex/issues/1065
+[issue-863]: https://github.com/dexidp/dex/issues/863
+[issue-1065]: https://github.com/dexidp/dex/issues/1065
 [azure-ad-v1]: https://github.com/coreos/go-oidc/issues/133
diff --git a/Documentation/dev-releases.md b/Documentation/dev-releases.md
index 30adb4d63f36c23e4e702002d03cb656afd981d2..1a3567032c7e5a5662ff7b0ad42e2d0a7bc8b90d 100644
--- a/Documentation/dev-releases.md
+++ b/Documentation/dev-releases.md
@@ -11,7 +11,7 @@ This requires the following tools.
 
 And the following permissions.
 
-* Push access to the github.com/coreos/dex git repo.
+* Push access to the github.com/dexidp/dex git repo.
 * Push access to the quay.io/coreos/dex Docker repo.
 
 ## Tagging the release
@@ -37,13 +37,13 @@ git tag -s v2.0.0 ea4c04fde83bd6c48f4d43862c406deb4ea9dba2
 Push that tag to the CoreOS repo.
 
 ```
-git push git@github.com:coreos/dex.git v2.0.0
+git push git@github.com:dexidp/dex.git v2.0.0
 ```
 
 Draft releases on GitHub and summarize the changes since the last release. See
 previous releases for the expected format.
 
-https://github.com/coreos/dex/releases
+https://github.com/dexidp/dex/releases
 
 ## Minor releases - create a branch
 
@@ -51,7 +51,7 @@ If the release is a minor release (2.1.0, 2.2.0, etc.) create a branch for futur
 
 ```bash
 git checkout -b v2.1.x tags/v2.1.0
-git push git@github.com:coreos/dex.git v2.1.x
+git push git@github.com:dexidp/dex.git v2.1.x
 ```
 
 ## Patch releases - cherry pick required commits
diff --git a/Documentation/getting-started.md b/Documentation/getting-started.md
index da54f83583ab7ec8995d96e6fe072e030e7696c2..9f724dd875ea7484f0e2f1de84baf6a9506aad95 100644
--- a/Documentation/getting-started.md
+++ b/Documentation/getting-started.md
@@ -5,8 +5,8 @@
 Dex requires a Go installation and a GOPATH configured. For setting up a Go workspace, refer to the [official documentation][go-setup]. Clone it down the correct place, and simply type `make` to compile the dex binary.
 
 ```
-$ go get github.com/coreos/dex
-$ cd $GOPATH/src/github.com/coreos/dex
+$ go get github.com/dexidp/dex
+$ cd $GOPATH/src/github.com/dexidp/dex
 $ make
 ```
 
diff --git a/Documentation/integrations.md b/Documentation/integrations.md
index 071dc0a7643a7804c980f21a445a603d70c5da6e..3a9aa8d0d41e501b1383f0ae9b1a0671e2abd095 100644
--- a/Documentation/integrations.md
+++ b/Documentation/integrations.md
@@ -1,5 +1,5 @@
 # Integrations
-This document tracks the libraries and tools that are compatible with dex. [Join the community](https://github.com/coreos/dex/), and help us keep the list up-to-date.
+This document tracks the libraries and tools that are compatible with dex. [Join the community](https://github.com/dexidp/dex/), and help us keep the list up-to-date.
 
 ## Tools
 
diff --git a/Documentation/kubernetes.md b/Documentation/kubernetes.md
index 3e364d3cbe16a3a119e871b3de4febccb1e32d8d..20693c15bc6cadf3d39c9df3e495b8a14be26e63 100644
--- a/Documentation/kubernetes.md
+++ b/Documentation/kubernetes.md
@@ -117,10 +117,10 @@ $ curl -H "Authorization: Bearer $token" -k https://( API server host ):443/api/
 
 [k8s-authz]: http://kubernetes.io/docs/admin/authorization/
 [k8s-oidc]: http://kubernetes.io/docs/admin/authentication/#openid-connect-tokens
-[trusted-peers]: https://godoc.org/github.com/coreos/dex/storage#Client
+[trusted-peers]: https://godoc.org/github.com/dexidp/dex/storage#Client
 [coreos-kubernetes]: https://github.com/coreos/coreos-kubernetes/
 [coreos-baremetal]: https://github.com/coreos/coreos-baremetal/
-[dex-healthz]: https://github.com/coreos/dex/issues/682
+[dex-healthz]: https://github.com/dexidp/dex/issues/682
 [github-oauth2]: https://github.com/settings/applications/new
 [node-port]: http://kubernetes.io/docs/user-guide/services/#type-nodeport
 [coreos-kubernetes]: https://github.com/coreos/coreos-kubernetes
diff --git a/Documentation/oidc-certification-setup.md b/Documentation/oidc-certification-setup.md
index 1fb1959e5e41bd53f7f66eecde8c863de0cf7b0c..f54e17b39e75f2c7cf303f10bc323b19182de60b 100644
--- a/Documentation/oidc-certification-setup.md
+++ b/Documentation/oidc-certification-setup.md
@@ -13,8 +13,8 @@ Issue number | Relates to
 [\#376][dex-issue-376] | userinfo_endpoint
 [\#1052][dex-issue-1052] | auth_time
 
-[dex-issue-376]: https://github.com/coreos/dex/issues/376
-[dex-issue-1052]: https://github.com/coreos/dex/issues/1052
+[dex-issue-376]: https://github.com/dexidp/dex/issues/376
+[dex-issue-1052]: https://github.com/dexidp/dex/issues/1052
 
 ### Setup
 
@@ -159,7 +159,7 @@ OP-OAuth-2nd-Revokes | Incomplete | Unsupported | userinfo_endpoint
 
 Once all test cases pass, submit your results by following instructions listed [on the website][oidc-result-submission].
 
-[dex-install]: https://github.com/coreos/dex/blob/master/Documentation/getting-started.md#building-the-dex-binary
+[dex-install]: https://github.com/dexidp/dex/blob/master/Documentation/getting-started.md#building-the-dex-binary
 [aws-ec2-instance]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.htmlSSH
 [aws-ec2-ssh]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
 [aws-ec2-quick-start]: http://docs.aws.amazon.com/quickstarts/latest/vmlaunch/step-1-launch-instance.html
diff --git a/Documentation/production-users.md b/Documentation/production-users.md
index 55a74c9ab60aad88f385eb08ba4123331c2734e0..8b42713ce7cdac1d6e032677d07448c05b9e5608 100644
--- a/Documentation/production-users.md
+++ b/Documentation/production-users.md
@@ -1,3 +1,3 @@
 # Production users
 
-This document tracks people and use cases for dex in production. [Join the community](https://github.com/coreos/dex/), and help us keep the list up-to-date.
\ No newline at end of file
+This document tracks people and use cases for dex in production. [Join the community](https://github.com/dexidp/dex/), and help us keep the list up-to-date.
\ No newline at end of file
diff --git a/Documentation/proposals/user-object.md b/Documentation/proposals/user-object.md
index 7ebb887031637cae640e5753ffad0f421e582149..e9203d184d191e9e6e8be72ed1c788542eb9562e 100644
--- a/Documentation/proposals/user-object.md
+++ b/Documentation/proposals/user-object.md
@@ -73,7 +73,7 @@ type RemoteIdentity struct {
 
 `UserID` fields will be added to the `AuthRequest`, `AuthCode` and `RefreshToken`
 structs. When a user logs in successfully through a connector
-[here](https://github.com/coreos/dex/blob/95a61454b522edd6643ced36b9d4b9baa8059556/server/handlers.go#L227),
+[here](https://github.com/dexidp/dex/blob/95a61454b522edd6643ced36b9d4b9baa8059556/server/handlers.go#L227),
 the server will attempt to either get the user, or create one if none exists with
 the remote identity.
 
diff --git a/Documentation/storage.md b/Documentation/storage.md
index 91ae7ecad04cbfc26fa074e8f7cad4cebe45a8d7..a1457c82df720ce88b94ac68387d8a600d025039 100644
--- a/Documentation/storage.md
+++ b/Documentation/storage.md
@@ -302,8 +302,8 @@ Each storage implementation bears a large ongoing maintenance cost and needs to
 
 Those who still want to construct a proposal for a new storage should review the following packages:
 
-* `github.com/coreos/dex/storage`: Interface definitions which the storage must implement. __NOTE:__ This package is not stable.
-* `github.com/coreos/dex/storage/conformance`: Conformance tests which storage implementations must pass.
+* `github.com/dexidp/dex/storage`: Interface definitions which the storage must implement. __NOTE:__ This package is not stable.
+* `github.com/dexidp/dex/storage/conformance`: Conformance tests which storage implementations must pass.
 
 ### New storage option requirements
 
@@ -313,7 +313,7 @@ Any proposal to add a new implementation must address the following:
 * Transactional requirements: atomic deletes, updates, etc.
 * Is there an established and reasonable Go client?
 
-[issues-transaction-tests]: https://github.com/coreos/dex/issues/600
+[issues-transaction-tests]: https://github.com/dexidp/dex/issues/600
 [k8s-api]: https://github.com/kubernetes/kubernetes/blob/master/docs/devel/api-conventions.md#concurrency-control-and-consistency
 [psql-conn-options]: https://godoc.org/github.com/lib/pq#hdr-Connection_String_Parameters
 [crd]: https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/
diff --git a/Documentation/v2.md b/Documentation/v2.md
index 5eeea12446fb7ca2b7629ad9a4f8e2f4d1964bf2..6b0c4523f135c971f46746af575529d3030000eb 100644
--- a/Documentation/v2.md
+++ b/Documentation/v2.md
@@ -40,7 +40,7 @@ Notable missing features include:
 
 ## Support for dex v1
 
-Dex v1 will continue to live under the `github.com/coreos/dex` repo on a branch. Bug fixes and minor changes will continue to be accepted, but development of new features by the dex team will largely cease.
+Dex v1 will continue to live under the `github.com/dexidp/dex` repo on a branch. Bug fixes and minor changes will continue to be accepted, but development of new features by the dex team will largely cease.
 
 [k8s-api-docs]: http://kubernetes.io/docs/api/
 [storage-docs]: ./storage.md
diff --git a/Makefile b/Makefile
index f2bd42a78be3d178258ad576eb0702b0146da0de..29947c9d83737edbe9edbcc10215f4e8750fc092 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 PROJ=dex
-ORG_PATH=github.com/coreos
+ORG_PATH=github.com/dexidp
 REPO_PATH=$(ORG_PATH)/$(PROJ)
 export PATH := $(PWD)/bin:$(PATH)
 
@@ -33,10 +33,9 @@ release-binary:
 	@go build -o /go/bin/dex -v -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/dex
 
 .PHONY: revendor
-revendor: bin/license-bill-of-materials
+revendor:
 	@glide up -v
 	@glide-vc --use-lock-file --no-tests --only-code
-	@./bin/license-bill-of-materials ./cmd/dex ./cmd/example-app > bill-of-materials.json
 
 test:
 	@go test -v -i $(shell go list ./... | grep -v '/vendor/')
@@ -76,9 +75,6 @@ bin/protoc: scripts/get-protoc
 bin/protoc-gen-go:
 	@go install -v $(REPO_PATH)/vendor/github.com/golang/protobuf/protoc-gen-go
 
-bin/license-bill-of-materials:
-	@CGO_ENABLED=1 go install -v $(REPO_PATH)/vendor/github.com/coreos/license-bill-of-materials
-
 .PHONY: check-go-version
 check-go-version:
 	@./scripts/check-go-version
diff --git a/README.md b/README.md
index 0b3a5950eab882d1589b14f4c883e8b74957556b..33a941ffa36a02ee0f65926f1cae613c9358a306 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
 # dex - A federated OpenID Connect provider
 
-[![Travis](https://api.travis-ci.org/coreos/dex.svg)](https://travis-ci.org/coreos/dex)
-[![GoDoc](https://godoc.org/github.com/coreos/dex?status.svg)](https://godoc.org/github.com/coreos/dex)
-[![Go Report Card](https://goreportcard.com/badge/github.com/coreos/dex)](https://goreportcard.com/report/github.com/coreos/dex)
+[![Travis](https://api.travis-ci.org/dexidp/dex.svg)](https://travis-ci.org/dexidp/dex)
+[![GoDoc](https://godoc.org/github.com/dexidp/dex?status.svg)](https://godoc.org/github.com/dexidp/dex)
+[![Go Report Card](https://goreportcard.com/badge/github.com/dexidp/dex)](https://goreportcard.com/report/github.com/dexidp/dex)
 
 ![logo](Documentation/logos/dex-horizontal-color.png)
 
@@ -114,8 +114,8 @@ Due to their public nature, GitHub and mailing lists are NOT appropriate places
 [tectonic]: https://tectonic.com/
 [tectonic-console]: https://tectonic.com/enterprise/docs/latest/usage/index.html#tectonic-console
 [go-oidc]: https://github.com/coreos/go-oidc
-[issue-1065]: https://github.com/coreos/dex/issues/1065
-[release-notes]: https://github.com/coreos/dex/releases
-[issues]: https://github.com/coreos/dex/issues
+[issue-1065]: https://github.com/dexidp/dex/issues/1065
+[release-notes]: https://github.com/dexidp/dex/releases
+[issues]: https://github.com/dexidp/dex/issues
 [dex-dev]: https://groups.google.com/forum/#!forum/dex-dev
 [disclosure]: https://coreos.com/security/disclosure/
diff --git a/bill-of-materials.json b/bill-of-materials.json
deleted file mode 100644
index 1d1e52f10e5c58ee0779ea4d9f69dccc042dd0ae..0000000000000000000000000000000000000000
--- a/bill-of-materials.json
+++ /dev/null
@@ -1,348 +0,0 @@
-[
-	{
-		"project": "github.com/beevik/etree",
-		"licenses": [
-			{
-				"type": "BSD 2-clause \"Simplified\" License",
-				"confidence": 0.9658536585365853
-			}
-		]
-	},
-	{
-		"project": "github.com/beorn7/perks/quantile",
-		"licenses": [
-			{
-				"type": "MIT License",
-				"confidence": 0.9891304347826086
-			}
-		]
-	},
-	{
-		"project": "github.com/cockroachdb/cockroach-go/crdb",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 0.9988925802879292
-			}
-		]
-	},
-	{
-		"project": "github.com/coreos/dex",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/coreos/etcd",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/coreos/go-oidc",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/felixge/httpsnoop",
-		"licenses": [
-			{
-				"type": "MIT License",
-				"confidence": 0.9891304347826086
-			}
-		]
-	},
-	{
-		"project": "github.com/ghodss/yaml",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.8357142857142857
-			}
-		]
-	},
-	{
-		"project": "github.com/go-sql-driver/mysql",
-		"licenses": [
-			{
-				"type": "Mozilla Public License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/golang/protobuf",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.92
-			}
-		]
-	},
-	{
-		"project": "github.com/gorilla/handlers",
-		"licenses": [
-			{
-				"type": "BSD 2-clause \"Simplified\" License",
-				"confidence": 0.9852216748768473
-			}
-		]
-	},
-	{
-		"project": "github.com/gorilla/mux",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "github.com/grpc-ecosystem/go-grpc-prometheus",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/gtank/cryptopasta",
-		"licenses": [
-			{
-				"type": "Creative Commons Zero v1.0 Universal",
-				"confidence": 0.9642857142857143
-			}
-		]
-	},
-	{
-		"project": "github.com/jonboulle/clockwork",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/lib/pq",
-		"licenses": [
-			{
-				"type": "MIT License",
-				"confidence": 0.9891304347826086
-			}
-		]
-	},
-	{
-		"project": "github.com/mattn/go-sqlite3",
-		"licenses": [
-			{
-				"type": "MIT License",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/matttproud/golang_protobuf_extensions/pbutil",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 0.9988925802879292
-			}
-		]
-	},
-	{
-		"project": "github.com/pquerna/cachecontrol",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/prometheus/client_golang/prometheus",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/prometheus/client_model/go",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/prometheus/common",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/prometheus/procfs",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/russellhaering/goxmldsig",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 0.9573241061130334
-			}
-		]
-	},
-	{
-		"project": "github.com/sirupsen/logrus",
-		"licenses": [
-			{
-				"type": "MIT License",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "github.com/spf13/cobra",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 0.9573241061130334
-			}
-		]
-	},
-	{
-		"project": "github.com/spf13/pflag",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "golang.org/x/crypto",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "golang.org/x/net",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "golang.org/x/oauth2",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "golang.org/x/text",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "google.golang.org/genproto/googleapis/rpc/status",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "google.golang.org/grpc",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.979253112033195
-			}
-		]
-	},
-	{
-		"project": "gopkg.in/asn1-ber.v1",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "gopkg.in/ldap.v2",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "gopkg.in/square/go-jose.v2",
-		"licenses": [
-			{
-				"type": "Apache License 2.0",
-				"confidence": 1
-			}
-		]
-	},
-	{
-		"project": "gopkg.in/square/go-jose.v2/json",
-		"licenses": [
-			{
-				"type": "BSD 3-clause \"New\" or \"Revised\" License",
-				"confidence": 0.9663865546218487
-			}
-		]
-	},
-	{
-		"project": "gopkg.in/yaml.v2",
-		"licenses": [
-			{
-				"type": "GNU Lesser General Public License v3.0",
-				"confidence": 0.9528301886792453
-			},
-			{
-				"type": "MIT License",
-				"confidence": 0.8975609756097561
-			}
-		]
-	}
-]
diff --git a/cmd/dex/config.go b/cmd/dex/config.go
index 416991abee059cd70dec1e6071f3af319e87069b..dde369783e5367c0052e249f94a208e890b12c99 100644
--- a/cmd/dex/config.go
+++ b/cmd/dex/config.go
@@ -9,12 +9,12 @@ import (
 	"github.com/sirupsen/logrus"
 	"golang.org/x/crypto/bcrypt"
 
-	"github.com/coreos/dex/server"
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/etcd"
-	"github.com/coreos/dex/storage/kubernetes"
-	"github.com/coreos/dex/storage/memory"
-	"github.com/coreos/dex/storage/sql"
+	"github.com/dexidp/dex/server"
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/etcd"
+	"github.com/dexidp/dex/storage/kubernetes"
+	"github.com/dexidp/dex/storage/memory"
+	"github.com/dexidp/dex/storage/sql"
 )
 
 // Config is the config format for the main application.
diff --git a/cmd/dex/config_test.go b/cmd/dex/config_test.go
index f5913cdec4fc0d0d228c8eded84eb4e12393e862..974e9c41d5015f30b2d7647c3b97749e42d46749 100644
--- a/cmd/dex/config_test.go
+++ b/cmd/dex/config_test.go
@@ -3,12 +3,13 @@ package main
 import (
 	"testing"
 
-	"github.com/coreos/dex/connector/mock"
-	"github.com/coreos/dex/connector/oidc"
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/sql"
 	"github.com/ghodss/yaml"
 	"github.com/kylelemons/godebug/pretty"
+
+	"github.com/dexidp/dex/connector/mock"
+	"github.com/dexidp/dex/connector/oidc"
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/sql"
 )
 
 var _ = yaml.YAMLToJSON
diff --git a/cmd/dex/serve.go b/cmd/dex/serve.go
index 3b0a0d7f4a311d667aac7822382bac61ae01527e..dcc0c35239873387d363dc161fc71d898f4bf9ea 100644
--- a/cmd/dex/serve.go
+++ b/cmd/dex/serve.go
@@ -22,9 +22,9 @@ import (
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials"
 
-	"github.com/coreos/dex/api"
-	"github.com/coreos/dex/server"
-	"github.com/coreos/dex/storage"
+	"github.com/dexidp/dex/api"
+	"github.com/dexidp/dex/server"
+	"github.com/dexidp/dex/storage"
 )
 
 func commandServe() *cobra.Command {
diff --git a/cmd/dex/version.go b/cmd/dex/version.go
index 1e92c4dcab847e9c0d9cac79cabb872a2d3cf35c..b74cb016e684aa59b6b269bf664838f1910de6b1 100644
--- a/cmd/dex/version.go
+++ b/cmd/dex/version.go
@@ -4,8 +4,9 @@ import (
 	"fmt"
 	"runtime"
 
-	"github.com/coreos/dex/version"
 	"github.com/spf13/cobra"
+
+	"github.com/dexidp/dex/version"
 )
 
 func commandVersion() *cobra.Command {
diff --git a/connector/authproxy/authproxy.go b/connector/authproxy/authproxy.go
index e367c4f91f8375c5335f2f0c14adbf9973ca6459..b4f3958d7ba60e8ecd4e07aee4758292bddcf253 100644
--- a/connector/authproxy/authproxy.go
+++ b/connector/authproxy/authproxy.go
@@ -8,8 +8,9 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/coreos/dex/connector"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/connector"
 )
 
 // Config holds the configuration parameters for a connector which returns an
diff --git a/connector/github/github.go b/connector/github/github.go
index 3ab15282cea65eff34f32d600303f5816f3e2678..642f4121cc79319a3a6adfc62e6c926313e67ee0 100644
--- a/connector/github/github.go
+++ b/connector/github/github.go
@@ -19,8 +19,9 @@ import (
 	"golang.org/x/oauth2"
 	"golang.org/x/oauth2/github"
 
-	"github.com/coreos/dex/connector"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/connector"
 )
 
 const (
diff --git a/connector/gitlab/gitlab.go b/connector/gitlab/gitlab.go
index 66b17495c43dce194eed457a4746949744653b46..5d1fc156f28e9fc1a709e7e9abab3a1918136563 100644
--- a/connector/gitlab/gitlab.go
+++ b/connector/gitlab/gitlab.go
@@ -11,9 +11,10 @@ import (
 	"regexp"
 	"strconv"
 
-	"github.com/coreos/dex/connector"
 	"github.com/sirupsen/logrus"
 	"golang.org/x/oauth2"
+
+	"github.com/dexidp/dex/connector"
 )
 
 const (
diff --git a/connector/ldap/ldap.go b/connector/ldap/ldap.go
index fd187e959bdba12223ee8c8e086a4b63c014bf39..8c9e480dc5ce1f14bec91ad0d07501d62f7a8d6a 100644
--- a/connector/ldap/ldap.go
+++ b/connector/ldap/ldap.go
@@ -12,8 +12,9 @@ import (
 
 	"gopkg.in/ldap.v2"
 
-	"github.com/coreos/dex/connector"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/connector"
 )
 
 // Config holds the configuration parameters for the LDAP connector. The LDAP
diff --git a/connector/ldap/ldap_test.go b/connector/ldap/ldap_test.go
index 23ad593bbd0058fbdd56b51abb027bc0164dc321..95c2e0b34776d0134a2586eeda4a5751d39416ae 100644
--- a/connector/ldap/ldap_test.go
+++ b/connector/ldap/ldap_test.go
@@ -16,7 +16,7 @@ import (
 	"github.com/kylelemons/godebug/pretty"
 	"github.com/sirupsen/logrus"
 
-	"github.com/coreos/dex/connector"
+	"github.com/dexidp/dex/connector"
 )
 
 const envVar = "DEX_LDAP_TESTS"
diff --git a/connector/linkedin/linkedin.go b/connector/linkedin/linkedin.go
index ba85eefc64012ed57abb216045db35ffc5439f37..9ab67e57c849efdeec981509ffd297e9f61a4b60 100644
--- a/connector/linkedin/linkedin.go
+++ b/connector/linkedin/linkedin.go
@@ -11,8 +11,9 @@ import (
 
 	"golang.org/x/oauth2"
 
-	"github.com/coreos/dex/connector"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/connector"
 )
 
 const (
diff --git a/connector/microsoft/microsoft.go b/connector/microsoft/microsoft.go
index 7ea672fa147ad98223365ccc5ac85c7c05b950f3..ad6b3e73047a77fb41b806d0658ab3bd88a9058b 100644
--- a/connector/microsoft/microsoft.go
+++ b/connector/microsoft/microsoft.go
@@ -14,8 +14,9 @@ import (
 
 	"golang.org/x/oauth2"
 
-	"github.com/coreos/dex/connector"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/connector"
 )
 
 const (
diff --git a/connector/mock/connectortest.go b/connector/mock/connectortest.go
index 4a8b1257a40d8c0b193e6425ccaa3b72afe1b377..e6eb5f01b87deb46f2acfa1a1f2b12c8df051e88 100644
--- a/connector/mock/connectortest.go
+++ b/connector/mock/connectortest.go
@@ -8,8 +8,9 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/coreos/dex/connector"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/connector"
 )
 
 // NewCallbackConnector returns a mock connector which requires no user interaction. It always returns
diff --git a/connector/oidc/oidc.go b/connector/oidc/oidc.go
index f0d8daf704ac7f3f6be9b9f851941753ff1e58c5..4468edc4776a2341b6580aea86fe1bd711d4bc12 100644
--- a/connector/oidc/oidc.go
+++ b/connector/oidc/oidc.go
@@ -14,7 +14,7 @@ import (
 	"github.com/sirupsen/logrus"
 	"golang.org/x/oauth2"
 
-	"github.com/coreos/dex/connector"
+	"github.com/dexidp/dex/connector"
 )
 
 // Config holds configuration options for OpenID Connect logins.
@@ -41,7 +41,7 @@ type Config struct {
 // Domains that don't support basic auth. golang.org/x/oauth2 has an internal
 // list, but it only matches specific URLs, not top level domains.
 var brokenAuthHeaderDomains = []string{
-	// See: https://github.com/coreos/dex/issues/859
+	// See: https://github.com/dexidp/dex/issues/859
 	"okta.com",
 	"oktapreview.com",
 }
diff --git a/connector/saml/saml.go b/connector/saml/saml.go
index 02b3fad7ab22f7af20ce1ef66bc6a9a33b5e54cc..8210a6416b973f325c4de7f72c69314a87cb7c8c 100644
--- a/connector/saml/saml.go
+++ b/connector/saml/saml.go
@@ -17,7 +17,7 @@ import (
 	"github.com/russellhaering/goxmldsig/etreeutils"
 	"github.com/sirupsen/logrus"
 
-	"github.com/coreos/dex/connector"
+	"github.com/dexidp/dex/connector"
 )
 
 const (
diff --git a/connector/saml/saml_test.go b/connector/saml/saml_test.go
index a162eedf7e6cb9703a8857603a31f67653cee879..2f3194736670c293cadcddc575d9271ebae92718 100644
--- a/connector/saml/saml_test.go
+++ b/connector/saml/saml_test.go
@@ -14,7 +14,7 @@ import (
 	dsig "github.com/russellhaering/goxmldsig"
 	"github.com/sirupsen/logrus"
 
-	"github.com/coreos/dex/connector"
+	"github.com/dexidp/dex/connector"
 )
 
 // responseTest maps a SAML 2.0 response object to a set of expected values.
diff --git a/examples/grpc-client/client.go b/examples/grpc-client/client.go
index 31100b3c2f6853bc6c733c49f1351a150ebdaf67..41bc4c8502464e211a0ad9a1ecd5dd4577ce16e7 100644
--- a/examples/grpc-client/client.go
+++ b/examples/grpc-client/client.go
@@ -9,9 +9,10 @@ import (
 	"io/ioutil"
 	"log"
 
-	"github.com/coreos/dex/api"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials"
+
+	"github.com/dexidp/dex/api"
 )
 
 func newDexClient(hostAndPort, caPath, clientCrt, clientKey string) (api.DexClient, error) {
diff --git a/glide.lock b/glide.lock
index d23a53859044ae63512454157be91addd890c00e..f4077196c54d401dcfa77d5568109502bbab7bc8 100644
--- a/glide.lock
+++ b/glide.lock
@@ -1,5 +1,5 @@
-hash: dda54feb39d5947ad20e9d583ccad9be02343dac0f52752944b7cd39668af7a4
-updated: 2017-12-20T16:05:04.690191111+01:00
+hash: c41e5b1fbd68f04f14b6e9b2ebab8bf18b857b3dc3a5754e4adf7c1884981de7
+updated: 2018-09-05T08:40:39.486766558+02:00
 imports:
 - name: github.com/beevik/etree
   version: 4cd0dd976db869f817248477718071a28e978df0
@@ -24,8 +24,6 @@ imports:
   - pkg/transport
 - name: github.com/coreos/go-oidc
   version: be73733bb8cc830d0205609b95d125215f8e9c70
-- name: github.com/coreos/license-bill-of-materials
-  version: d70207c33a3c79a1c0479b208f8b7ab6215144c7
 - name: github.com/felixge/httpsnoop
   version: eadd4fad6aac69ae62379194fe0219f3dbc80fd3
 - name: github.com/ghodss/yaml
diff --git a/glide.yaml b/glide.yaml
index b3145b548ba6654839c5db6745a0fe38a4efe16d..c08d735916253441f4b0becf2b3718448eba18c3 100644
--- a/glide.yaml
+++ b/glide.yaml
@@ -7,7 +7,7 @@
 # * Create a separate block for each dependency group.
 # * Keep updates to "vendor/" in a separate commit from actual changes.
 
-package: github.com/coreos/dex
+package: github.com/dexidp/dex
 import:
 
 - package: github.com/spf13/cobra
@@ -133,9 +133,9 @@ import:
   - proto
   - protoc-gen-go
   - protoc-gen-go/grpc
-  - protoc-gen-go/descriptor        
-  - protoc-gen-go/plugin            
-  - protoc-gen-go/generator   
+  - protoc-gen-go/descriptor
+  - protoc-gen-go/plugin
+  - protoc-gen-go/generator
 - package: google.golang.org/genproto
   version: 411e09b969b1170a9f0c467558eb4c4c110d9c77
 
@@ -155,10 +155,6 @@ import:
 - package: github.com/jonboulle/clockwork
   version: bcac9884e7502bb2b474c0339d889cb981a2f27f
 
-# License bill of materials generator.
-- package: github.com/coreos/license-bill-of-materials
-  version: d70207c33a3c79a1c0479b208f8b7ab6215144c7
-
 # monitoring packages
 - package: github.com/beorn7/perks/quantile
   version: 3ac7bf7a47d159a033b107610db8a1b6575507a4
diff --git a/server/api.go b/server/api.go
index 6aecef592abeabdb10912cf017711d235019a4c5..3367ac80f79534d65ab8eaa06d3895ec7d87567e 100644
--- a/server/api.go
+++ b/server/api.go
@@ -10,11 +10,12 @@ import (
 	// https://github.com/grpc/grpc-go/issues/711
 	"golang.org/x/net/context"
 
-	"github.com/coreos/dex/api"
-	"github.com/coreos/dex/server/internal"
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/version"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/api"
+	"github.com/dexidp/dex/server/internal"
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/version"
 )
 
 // apiVersion increases every time a new call is added to the API. Clients should use this info
diff --git a/server/api_test.go b/server/api_test.go
index 697d8d76d8f7a96e312266f72f0a0f5cf6119fcf..aabfde8b20a43102f1bb926b59169b619a4aee80 100644
--- a/server/api_test.go
+++ b/server/api_test.go
@@ -7,12 +7,13 @@ import (
 	"testing"
 	"time"
 
-	"github.com/coreos/dex/api"
-	"github.com/coreos/dex/server/internal"
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/memory"
 	"github.com/sirupsen/logrus"
 	"google.golang.org/grpc"
+
+	"github.com/dexidp/dex/api"
+	"github.com/dexidp/dex/server/internal"
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/memory"
 )
 
 // apiClient is a test gRPC client. When constructed, it runs a server in
@@ -276,7 +277,7 @@ func TestRefreshToken(t *testing.T) {
 
 	// Try to delete again.
 	//
-	// See https://github.com/coreos/dex/issues/1055
+	// See https://github.com/dexidp/dex/issues/1055
 	resp, err = client.RevokeRefresh(ctx, &revokeReq)
 	if err != nil {
 		t.Fatalf("Unable to revoke refresh tokens for user: %v", err)
diff --git a/server/handlers.go b/server/handlers.go
index 430253c3b32d448038c79fbbc8ab795079467148..1e02998d6005a0cd1b89294cbb3686bd27b66e41 100644
--- a/server/handlers.go
+++ b/server/handlers.go
@@ -15,9 +15,9 @@ import (
 	"github.com/gorilla/mux"
 	jose "gopkg.in/square/go-jose.v2"
 
-	"github.com/coreos/dex/connector"
-	"github.com/coreos/dex/server/internal"
-	"github.com/coreos/dex/storage"
+	"github.com/dexidp/dex/connector"
+	"github.com/dexidp/dex/server/internal"
+	"github.com/dexidp/dex/storage"
 )
 
 func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) {
@@ -159,7 +159,7 @@ func (s *Server) handleAuthorization(w http.ResponseWriter, r *http.Request) {
 	// so users don't hit "not found" database errors if they wait at the login
 	// screen too long.
 	//
-	// See: https://github.com/coreos/dex/issues/646
+	// See: https://github.com/dexidp/dex/issues/646
 	authReq.Expiry = s.now().Add(24 * time.Hour) // Totally arbitrary value.
 	if err := s.storage.CreateAuthRequest(authReq); err != nil {
 		s.logger.Errorf("Failed to create authorization request: %v", err)
diff --git a/server/oauth2.go b/server/oauth2.go
index 7967b1bca8050f75a95a9887dbcd930c74803bb2..b5d992ca8d175d927c1a3f2eb3494dfd32f9fe2d 100644
--- a/server/oauth2.go
+++ b/server/oauth2.go
@@ -21,9 +21,9 @@ import (
 
 	jose "gopkg.in/square/go-jose.v2"
 
-	"github.com/coreos/dex/connector"
-	"github.com/coreos/dex/server/internal"
-	"github.com/coreos/dex/storage"
+	"github.com/dexidp/dex/connector"
+	"github.com/dexidp/dex/server/internal"
+	"github.com/dexidp/dex/storage"
 )
 
 // TODO(ericchiang): clean this file up and figure out more idiomatic error handling.
@@ -150,7 +150,7 @@ func signatureAlgorithm(jwk *jose.JSONWebKey) (alg jose.SignatureAlgorithm, err
 		// value. In the future, we might want to make this configurable on a
 		// per client basis. For example allowing PS256 or ECDSA variants.
 		//
-		// See https://github.com/coreos/dex/issues/692
+		// See https://github.com/dexidp/dex/issues/692
 		return jose.RS256, nil
 	case *ecdsa.PrivateKey:
 		// We don't actually support ECDSA keys yet, but they're tested for
diff --git a/server/oauth2_test.go b/server/oauth2_test.go
index dcf4947b3313df53cc76fe0a895fb1aafe20c5e9..8cad77a8c4ad4b5b35706bf2f67102a0da979d88 100644
--- a/server/oauth2_test.go
+++ b/server/oauth2_test.go
@@ -10,7 +10,7 @@ import (
 
 	jose "gopkg.in/square/go-jose.v2"
 
-	"github.com/coreos/dex/storage"
+	"github.com/dexidp/dex/storage"
 )
 
 func TestParseAuthorizationRequest(t *testing.T) {
diff --git a/server/rotation.go b/server/rotation.go
index a628bfa7c7bd6f2655c5fda99c18f7c8fedd275d..bb857450d663dda5466b72c3625941dbed3d1e7d 100644
--- a/server/rotation.go
+++ b/server/rotation.go
@@ -12,8 +12,9 @@ import (
 
 	"gopkg.in/square/go-jose.v2"
 
-	"github.com/coreos/dex/storage"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
 )
 
 var errAlreadyRotated = errors.New("keys already rotated by another server instance")
diff --git a/server/rotation_test.go b/server/rotation_test.go
index 9d236b707ceeffa34e64946d70586c5ca31afd37..66c269cefef1fc920a183c7027c6b3cd3401960c 100644
--- a/server/rotation_test.go
+++ b/server/rotation_test.go
@@ -6,9 +6,10 @@ import (
 	"testing"
 	"time"
 
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/memory"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/memory"
 )
 
 func signingKeyID(t *testing.T, s storage.Storage) string {
diff --git a/server/server.go b/server/server.go
index 3b586d8e4452237c941f567a00fa064e8329c1dc..d96f562d24b97da5f4c0876a268b41232c1e2862 100644
--- a/server/server.go
+++ b/server/server.go
@@ -22,17 +22,17 @@ import (
 	"github.com/prometheus/client_golang/prometheus"
 	"github.com/sirupsen/logrus"
 
-	"github.com/coreos/dex/connector"
-	"github.com/coreos/dex/connector/authproxy"
-	"github.com/coreos/dex/connector/github"
-	"github.com/coreos/dex/connector/gitlab"
-	"github.com/coreos/dex/connector/ldap"
-	"github.com/coreos/dex/connector/linkedin"
-	"github.com/coreos/dex/connector/microsoft"
-	"github.com/coreos/dex/connector/mock"
-	"github.com/coreos/dex/connector/oidc"
-	"github.com/coreos/dex/connector/saml"
-	"github.com/coreos/dex/storage"
+	"github.com/dexidp/dex/connector"
+	"github.com/dexidp/dex/connector/authproxy"
+	"github.com/dexidp/dex/connector/github"
+	"github.com/dexidp/dex/connector/gitlab"
+	"github.com/dexidp/dex/connector/ldap"
+	"github.com/dexidp/dex/connector/linkedin"
+	"github.com/dexidp/dex/connector/microsoft"
+	"github.com/dexidp/dex/connector/mock"
+	"github.com/dexidp/dex/connector/oidc"
+	"github.com/dexidp/dex/connector/saml"
+	"github.com/dexidp/dex/storage"
 )
 
 // LocalConnector is the local passwordDB connector which is an internal
diff --git a/server/server_test.go b/server/server_test.go
index c1046afe93a4d6dd3e6f022971a221c303548d9d..536387c40d41047f5f91ba80c2bcca49d527c934 100644
--- a/server/server_test.go
+++ b/server/server_test.go
@@ -13,7 +13,6 @@ import (
 	"net/http/httputil"
 	"net/url"
 	"os"
-	"path/filepath"
 	"reflect"
 	"sort"
 	"strings"
@@ -29,10 +28,10 @@ import (
 	"golang.org/x/oauth2"
 	jose "gopkg.in/square/go-jose.v2"
 
-	"github.com/coreos/dex/connector"
-	"github.com/coreos/dex/connector/mock"
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/memory"
+	"github.com/dexidp/dex/connector"
+	"github.com/dexidp/dex/connector/mock"
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/memory"
 )
 
 func mustLoad(s string) *rsa.PrivateKey {
@@ -91,7 +90,7 @@ func newTestServer(ctx context.Context, t *testing.T, updateConfig func(c *Confi
 		Issuer:  s.URL,
 		Storage: memory.New(logger),
 		Web: WebConfig{
-			Dir: filepath.Join(os.Getenv("GOPATH"), "src/github.com/coreos/dex/web"),
+			Dir: "../web",
 		},
 		Logger:             logger,
 		PrometheusRegistry: prometheus.NewRegistry(),
diff --git a/storage/conformance/conformance.go b/storage/conformance/conformance.go
index eb038b148df1a1894081d7498021097da0a1c098..5606def8ef857af5a89a7ad5d77c9c3ed993066e 100644
--- a/storage/conformance/conformance.go
+++ b/storage/conformance/conformance.go
@@ -13,7 +13,7 @@ import (
 
 	"golang.org/x/crypto/bcrypt"
 
-	"github.com/coreos/dex/storage"
+	"github.com/dexidp/dex/storage"
 
 	"github.com/kylelemons/godebug/pretty"
 )
diff --git a/storage/conformance/transactions.go b/storage/conformance/transactions.go
index 3478460d0d0aadc2ef04a5252f801e5ce0fbfdc0..4b268e0fbda2e9668e89b6d1e18ad4c8bd7b795c 100644
--- a/storage/conformance/transactions.go
+++ b/storage/conformance/transactions.go
@@ -8,7 +8,7 @@ import (
 
 	"golang.org/x/crypto/bcrypt"
 
-	"github.com/coreos/dex/storage"
+	"github.com/dexidp/dex/storage"
 )
 
 // RunTransactionTests runs a test suite aimed a verifying the transaction
diff --git a/storage/etcd/config.go b/storage/etcd/config.go
index ad273968638c0464c9b32d7beedfd2cc206b5045..66cb04c6e0227ff8a1727b9082c007e730a0ab6c 100644
--- a/storage/etcd/config.go
+++ b/storage/etcd/config.go
@@ -3,11 +3,12 @@ package etcd
 import (
 	"time"
 
-	"github.com/coreos/dex/storage"
 	"github.com/coreos/etcd/clientv3"
 	"github.com/coreos/etcd/clientv3/namespace"
 	"github.com/coreos/etcd/pkg/transport"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
 )
 
 var (
diff --git a/storage/etcd/etcd.go b/storage/etcd/etcd.go
index 7ad35ea5ed43da4b5bf9c83e39e82564c52c2b2e..e323f5ab9f97d138f2325f8957293cf4f4a664fd 100644
--- a/storage/etcd/etcd.go
+++ b/storage/etcd/etcd.go
@@ -7,9 +7,10 @@ import (
 	"strings"
 	"time"
 
-	"github.com/coreos/dex/storage"
 	"github.com/coreos/etcd/clientv3"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
 )
 
 const (
diff --git a/storage/etcd/etcd_test.go b/storage/etcd/etcd_test.go
index 7029e4ca6920496ad115357e4cb8541749354b10..bd41253649b7d83c9828b1f2531588974e5f081d 100644
--- a/storage/etcd/etcd_test.go
+++ b/storage/etcd/etcd_test.go
@@ -9,10 +9,11 @@ import (
 	"testing"
 	"time"
 
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/conformance"
 	"github.com/coreos/etcd/clientv3"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/conformance"
 )
 
 func withTimeout(t time.Duration, f func()) {
diff --git a/storage/etcd/types.go b/storage/etcd/types.go
index acca7f379520475759a789540ee4d3361ea86828..8d34e0da4813e205ac9f69b8b727cb69f5ddefcb 100644
--- a/storage/etcd/types.go
+++ b/storage/etcd/types.go
@@ -3,8 +3,9 @@ package etcd
 import (
 	"time"
 
-	"github.com/coreos/dex/storage"
 	jose "gopkg.in/square/go-jose.v2"
+
+	"github.com/dexidp/dex/storage"
 )
 
 // AuthCode is a mirrored struct from storage with JSON struct tags
diff --git a/storage/kubernetes/client.go b/storage/kubernetes/client.go
index c17b637693eb92d9431975feab7e63eb6d7ec225..f95acaffa7ce2842645600e76678cf7bc39cadfe 100644
--- a/storage/kubernetes/client.go
+++ b/storage/kubernetes/client.go
@@ -27,8 +27,8 @@ import (
 	"github.com/sirupsen/logrus"
 	"golang.org/x/net/http2"
 
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/kubernetes/k8sapi"
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/kubernetes/k8sapi"
 )
 
 type client struct {
diff --git a/storage/kubernetes/storage.go b/storage/kubernetes/storage.go
index 0b99a8b18c83ec56adcc5c3e0550bdd69c3c18e1..fa72e717da6d0687546bc6532599416868dd76f1 100644
--- a/storage/kubernetes/storage.go
+++ b/storage/kubernetes/storage.go
@@ -7,9 +7,10 @@ import (
 	"strings"
 	"time"
 
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/kubernetes/k8sapi"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/kubernetes/k8sapi"
 )
 
 const (
diff --git a/storage/kubernetes/storage_test.go b/storage/kubernetes/storage_test.go
index 58340f70577667434ec09e7a49b58e6ae7cf1e3f..27d65416f19aa88de9155464e943e064e92b2046 100644
--- a/storage/kubernetes/storage_test.go
+++ b/storage/kubernetes/storage_test.go
@@ -5,9 +5,10 @@ import (
 	"os"
 	"testing"
 
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/conformance"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/conformance"
 )
 
 const testKubeConfigEnv = "DEX_KUBECONFIG"
diff --git a/storage/kubernetes/types.go b/storage/kubernetes/types.go
index aa2965312feea4b66aac585a767301f40bac6d02..5324998e38fedb3c6c8739c51f22ef80599e47f9 100644
--- a/storage/kubernetes/types.go
+++ b/storage/kubernetes/types.go
@@ -6,8 +6,8 @@ import (
 
 	jose "gopkg.in/square/go-jose.v2"
 
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/kubernetes/k8sapi"
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/kubernetes/k8sapi"
 )
 
 var tprMeta = k8sapi.TypeMeta{
diff --git a/storage/memory/memory.go b/storage/memory/memory.go
index ed80778b636d194bce17551555dea38e05233c70..d8817fbda523a54510b135002015494998f5654e 100644
--- a/storage/memory/memory.go
+++ b/storage/memory/memory.go
@@ -6,8 +6,9 @@ import (
 	"sync"
 	"time"
 
-	"github.com/coreos/dex/storage"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
 )
 
 // New returns an in memory storage.
diff --git a/storage/memory/memory_test.go b/storage/memory/memory_test.go
index 6628e50ccb456e7bc76a900b7bd65c3601380a12..84a8826ef2c72753c82cb7a201c82f7415c97a26 100644
--- a/storage/memory/memory_test.go
+++ b/storage/memory/memory_test.go
@@ -4,9 +4,10 @@ import (
 	"os"
 	"testing"
 
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/conformance"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/conformance"
 )
 
 func TestStorage(t *testing.T) {
diff --git a/storage/memory/static_test.go b/storage/memory/static_test.go
index df990ebb2f3b2860b8e19bcddc0af0343bf2bff3..8513e0ee897ab597c84047bfc9376f3e2e273d8f 100644
--- a/storage/memory/static_test.go
+++ b/storage/memory/static_test.go
@@ -6,8 +6,9 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/coreos/dex/storage"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
 )
 
 func TestStaticClients(t *testing.T) {
diff --git a/storage/sql/config.go b/storage/sql/config.go
index 2a70234fe90666592c0c9474b4ac9b79872b6434..ec001b2cc11a3ef6eb8245e6573a4ace0f96a170 100644
--- a/storage/sql/config.go
+++ b/storage/sql/config.go
@@ -6,10 +6,11 @@ import (
 	"net/url"
 	"strconv"
 
-	"github.com/coreos/dex/storage"
 	"github.com/lib/pq"
 	sqlite3 "github.com/mattn/go-sqlite3"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
 )
 
 const (
diff --git a/storage/sql/config_test.go b/storage/sql/config_test.go
index 13b2508e4c8f7f69fd467ccd08e909a9e4dc18be..75b81b678bde3e48597ba5c6c329e563b48e8a50 100644
--- a/storage/sql/config_test.go
+++ b/storage/sql/config_test.go
@@ -7,9 +7,10 @@ import (
 	"testing"
 	"time"
 
-	"github.com/coreos/dex/storage"
-	"github.com/coreos/dex/storage/conformance"
 	"github.com/sirupsen/logrus"
+
+	"github.com/dexidp/dex/storage"
+	"github.com/dexidp/dex/storage/conformance"
 )
 
 func withTimeout(t time.Duration, f func()) {
diff --git a/storage/sql/crud.go b/storage/sql/crud.go
index 17886b91d01431a88ce3385a9683a654bf8d2f8f..d7c055ab186c69f2714c241c738abfca8279ae22 100644
--- a/storage/sql/crud.go
+++ b/storage/sql/crud.go
@@ -9,7 +9,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/coreos/dex/storage"
+	"github.com/dexidp/dex/storage"
 )
 
 // TODO(ericchiang): The update, insert, and select methods queries are all
diff --git a/vendor/github.com/coreos/license-bill-of-materials/LICENSE b/vendor/github.com/coreos/license-bill-of-materials/LICENSE
deleted file mode 100644
index 2c68650fa845bd3a32578b533942ff35e14d10d5..0000000000000000000000000000000000000000
--- a/vendor/github.com/coreos/license-bill-of-materials/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015 Patrick Mézard
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/github.com/coreos/license-bill-of-materials/license-bill-of-materials.go b/vendor/github.com/coreos/license-bill-of-materials/license-bill-of-materials.go
deleted file mode 100644
index 7ee70685a924e6f9c2d91bd85978a8b071764bb1..0000000000000000000000000000000000000000
--- a/vendor/github.com/coreos/license-bill-of-materials/license-bill-of-materials.go
+++ /dev/null
@@ -1,733 +0,0 @@
-package main
-
-import (
-	"bufio"
-	"bytes"
-	"encoding/json"
-	"flag"
-	"fmt"
-	"io/ioutil"
-	"log"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"regexp"
-	"sort"
-	"strconv"
-	"strings"
-
-	"github.com/coreos/license-bill-of-materials/assets"
-)
-
-// Template holds pre-constructed license template info
-type Template struct {
-	Title    string
-	Nickname string
-	Words    map[string]int
-}
-
-func parseTemplate(content string) (*Template, error) {
-	t := Template{}
-	text := []byte{}
-	state := 0
-	scanner := bufio.NewScanner(strings.NewReader(content))
-	for scanner.Scan() {
-		line := strings.TrimSpace(scanner.Text())
-		if state == 0 {
-			if line == "---" {
-				state = 1
-			}
-		} else if state == 1 {
-			if line == "---" {
-				state = 2
-			} else {
-				if strings.HasPrefix(line, "title:") {
-					t.Title = strings.TrimSpace(line[len("title:"):])
-				} else if strings.HasPrefix(line, "nickname:") {
-					t.Nickname = strings.TrimSpace(line[len("nickname:"):])
-				}
-			}
-		} else if state == 2 {
-			text = append(text, scanner.Bytes()...)
-			text = append(text, []byte("\n")...)
-		}
-	}
-	t.Words = makeWordSet(text)
-	return &t, scanner.Err()
-}
-
-func loadTemplates() ([]*Template, error) {
-	templates := []*Template{}
-	for _, a := range assets.Assets {
-		templ, err := parseTemplate(a.Content)
-		if err != nil {
-			return nil, err
-		}
-		templates = append(templates, templ)
-	}
-	return templates, nil
-}
-
-var (
-	reWords     = regexp.MustCompile(`[\w']+`)
-	reCopyright = regexp.MustCompile(
-		`(?i)\s*Copyright (?:©|\(c\)|\xC2\xA9)?\s*(?:\d{4}|\[year\]).*`)
-)
-
-func cleanLicenseData(data []byte) []byte {
-	data = bytes.ToLower(data)
-	data = reCopyright.ReplaceAll(data, nil)
-	return data
-}
-
-func makeWordSet(data []byte) map[string]int {
-	words := map[string]int{}
-	data = cleanLicenseData(data)
-	matches := reWords.FindAll(data, -1)
-	for i, m := range matches {
-		s := string(m)
-		if _, ok := words[s]; !ok {
-			// Non-matching words are likely in the license header, to mention
-			// copyrights and authors. Try to preserve the initial sequences,
-			// to display them later.
-			words[s] = i
-		}
-	}
-	return words
-}
-
-// Word holds word and word position in a license
-type Word struct {
-	Text string
-	Pos  int
-}
-
-type sortedWords []Word
-
-func (s sortedWords) Len() int {
-	return len(s)
-}
-
-func (s sortedWords) Swap(i, j int) {
-	s[i], s[j] = s[j], s[i]
-}
-
-func (s sortedWords) Less(i, j int) bool {
-	return s[i].Pos < s[j].Pos
-}
-
-// MatchResult represents a matched template and matching metrics
-type MatchResult struct {
-	Template     *Template
-	Score        float64
-	ExtraWords   []string
-	MissingWords []string
-}
-
-func sortAndReturnWords(words []Word) []string {
-	sort.Sort(sortedWords(words))
-	tokens := []string{}
-	for _, w := range words {
-		tokens = append(tokens, w.Text)
-	}
-	return tokens
-}
-
-// matchTemplates returns the best license template matching supplied data,
-// its score between 0 and 1 and the list of words appearing in license but not
-// in the matched template.
-func matchTemplates(license []byte, templates []*Template) MatchResult {
-	bestScore := float64(-1)
-	var bestTemplate *Template
-	bestExtra := []Word{}
-	bestMissing := []Word{}
-	words := makeWordSet(license)
-	for _, t := range templates {
-		extra := []Word{}
-		missing := []Word{}
-		common := 0
-		for w, pos := range words {
-			_, ok := t.Words[w]
-			if ok {
-				common++
-			} else {
-				extra = append(extra, Word{
-					Text: w,
-					Pos:  pos,
-				})
-			}
-		}
-		for w, pos := range t.Words {
-			if _, ok := words[w]; !ok {
-				missing = append(missing, Word{
-					Text: w,
-					Pos:  pos,
-				})
-			}
-		}
-		score := 2 * float64(common) / (float64(len(words)) + float64(len(t.Words)))
-		if score > bestScore {
-			bestScore = score
-			bestTemplate = t
-			bestMissing = missing
-			bestExtra = extra
-		}
-	}
-	return MatchResult{
-		Template:     bestTemplate,
-		Score:        bestScore,
-		ExtraWords:   sortAndReturnWords(bestExtra),
-		MissingWords: sortAndReturnWords(bestMissing),
-	}
-}
-
-// fixEnv returns a copy of the process environment where GOPATH is adjusted to
-// supplied value. It returns nil if gopath is empty.
-func fixEnv(gopath string) []string {
-	if gopath == "" {
-		return nil
-	}
-	kept := []string{
-		"GOPATH=" + gopath,
-	}
-	for _, env := range os.Environ() {
-		if !strings.HasPrefix(env, "GOPATH=") {
-			kept = append(kept, env)
-		}
-	}
-	return kept
-}
-
-// MissingError reports on missing licenses
-type MissingError struct {
-	Err string
-}
-
-func (err *MissingError) Error() string {
-	return err.Err
-}
-
-// expandPackages takes a list of package or package expressions and invoke go
-// list to expand them to packages. In particular, it handles things like "..."
-// and ".".
-func expandPackages(gopath string, pkgs []string) ([]string, error) {
-	args := []string{"list"}
-	args = append(args, pkgs...)
-	cmd := exec.Command("go", args...)
-	cmd.Env = fixEnv(gopath)
-	out, err := cmd.CombinedOutput()
-	if err != nil {
-		output := string(out)
-		if strings.Contains(output, "cannot find package") ||
-			strings.Contains(output, "no buildable Go source files") {
-			return nil, &MissingError{Err: output}
-		}
-		return nil, fmt.Errorf("'go %s' failed with:\n%s",
-			strings.Join(args, " "), output)
-	}
-	names := []string{}
-	for _, s := range strings.Split(string(out), "\n") {
-		s = strings.TrimSpace(s)
-		if s != "" {
-			names = append(names, s)
-		}
-	}
-	return names, nil
-}
-
-func listPackagesAndDeps(gopath string, pkgs []string) ([]string, error) {
-	pkgs, err := expandPackages(gopath, pkgs)
-	if err != nil {
-		return nil, err
-	}
-	args := []string{"list", "-f", "{{range .Deps}}{{.}}|{{end}}"}
-	args = append(args, pkgs...)
-	cmd := exec.Command("go", args...)
-	cmd.Env = fixEnv(gopath)
-	out, err := cmd.CombinedOutput()
-	if err != nil {
-		output := string(out)
-		if strings.Contains(output, "cannot find package") ||
-			strings.Contains(output, "no buildable Go source files") {
-			return nil, &MissingError{Err: output}
-		}
-		return nil, fmt.Errorf("'go %s' failed with:\n%s",
-			strings.Join(args, " "), output)
-	}
-	deps := []string{}
-	seen := map[string]bool{}
-	for _, s := range strings.Split(string(out), "|") {
-		s = strings.TrimSpace(s)
-		if s != "" && !seen[s] {
-			deps = append(deps, s)
-			seen[s] = true
-		}
-	}
-	for _, pkg := range pkgs {
-		if !seen[pkg] {
-			seen[pkg] = true
-			deps = append(deps, pkg)
-		}
-	}
-	sort.Strings(deps)
-	return deps, nil
-}
-
-func listStandardPackages(gopath string) ([]string, error) {
-	return expandPackages(gopath, []string{"std", "cmd"})
-}
-
-// PkgError reports on missing packages
-type PkgError struct {
-	Err string
-}
-
-// PkgInfo holds identifying package info
-type PkgInfo struct {
-	Name       string
-	Dir        string
-	Root       string
-	ImportPath string
-	Error      *PkgError
-}
-
-func getPackagesInfo(gopath string, pkgs []string) ([]*PkgInfo, error) {
-	args := []string{"list", "-e", "-json"}
-	// TODO: split the list for platforms which do not support massive argument
-	// lists.
-	args = append(args, pkgs...)
-	cmd := exec.Command("go", args...)
-	cmd.Env = fixEnv(gopath)
-	out, err := cmd.CombinedOutput()
-	if err != nil {
-		return nil, fmt.Errorf("go %s failed with:\n%s",
-			strings.Join(args, " "), string(out))
-	}
-	infos := make([]*PkgInfo, 0, len(pkgs))
-	decoder := json.NewDecoder(bytes.NewBuffer(out))
-	var derr error
-	for _, pkg := range pkgs {
-		info := &PkgInfo{}
-		derr = decoder.Decode(info)
-		if derr != nil {
-			return nil, fmt.Errorf("could not retrieve package information for %s", pkg)
-		}
-		if pkg != info.ImportPath {
-			return nil, fmt.Errorf("package information mismatch: asked for %s, got %s",
-				pkg, info.ImportPath)
-		}
-		if info.Error != nil && info.Name == "" {
-			info.Name = info.ImportPath
-		}
-		infos = append(infos, info)
-	}
-	return infos, err
-}
-
-var (
-	reLicense = regexp.MustCompile(`(?i)^(?:` +
-		`((?:un)?licen[sc]e(?:\.[^.]+)?)|` +
-		`(copy(?:ing|right)(?:\.[^.]+)?)|` +
-		`)$`)
-)
-
-// scoreLicenseName returns a factor between 0 and 1 weighting how likely
-// supplied filename is a license file.
-func scoreLicenseName(name string) int8 {
-	m := reLicense.FindStringSubmatch(name)
-	switch {
-	case m == nil:
-		break
-	case m[1] != "" || m[2] != "":
-		return 1
-	}
-	return 0
-}
-
-// findLicenses looks for license files in package import path, and down to
-// parent directories until a file is found or $GOPATH/src is reached. It
-// returns a slice of paths all viable files, or a slice containing one empty
-// string if none were found.
-func findLicenses(info *PkgInfo) ([]string, error) {
-	path := info.ImportPath
-	for ; path != "."; path = filepath.Dir(path) {
-		fis, err := ioutil.ReadDir(filepath.Join(info.Root, "src", path))
-		if err != nil {
-			return []string{""}, err
-		}
-		allViableNames := make([]string, 0)
-		for _, fi := range fis {
-			if !fi.Mode().IsRegular() {
-				continue
-			}
-			score := scoreLicenseName(fi.Name())
-			if score == 1 {
-				allViableNames = append(allViableNames, filepath.Join(path, fi.Name()))
-			}
-		}
-		if len(allViableNames) > 0 {
-			return allViableNames, nil
-		}
-	}
-	return []string{""}, nil
-}
-
-// GoPackage represents a top-level package, ex. colors/blue
-type GoPackage struct {
-	PackageName string
-	RawLicenses []*RawLicense
-	Err         string
-}
-
-// RawLicense holds template-matched file data
-type RawLicense struct {
-	Path         string
-	Score        float64
-	Template     *Template
-	ExtraWords   []string
-	MissingWords []string
-}
-
-func listPackagesWithLicenses(gopath string, pkgs []string) ([]GoPackage, error) {
-	templates, err := loadTemplates()
-	if err != nil {
-		return nil, err
-	}
-	deps, err := listPackagesAndDeps(gopath, pkgs)
-	if err != nil {
-		if _, ok := err.(*MissingError); ok {
-			return nil, err
-		}
-		return nil, fmt.Errorf("could not list %s dependencies: %s",
-			strings.Join(pkgs, " "), err)
-	}
-	std, err := listStandardPackages(gopath)
-	if err != nil {
-		return nil, fmt.Errorf("could not list standard packages: %s", err)
-	}
-	stdSet := map[string]bool{}
-	for _, n := range std {
-		stdSet[n] = true
-	}
-	infos, err := getPackagesInfo(gopath, deps)
-	if err != nil {
-		return nil, err
-	}
-
-	// Cache matched licenses by path. Useful for package with a lot of
-	// subpackages like bleve.
-	matched := map[string]MatchResult{}
-
-	gPackages := []GoPackage{}
-	for _, info := range infos {
-		if info.Error != nil {
-			gPackages = append(gPackages, GoPackage{
-				PackageName: info.Name,
-				Err:         info.Error.Err,
-				RawLicenses: []*RawLicense{{Path: ""}},
-			})
-			continue
-		}
-		if stdSet[info.ImportPath] {
-			continue
-		}
-		paths, err := findLicenses(info)
-		if err != nil {
-			return nil, err
-		}
-		rawLicenseInfos := []*RawLicense{}
-		gPackage := GoPackage{PackageName: info.ImportPath}
-		for _, path := range paths {
-			rl := RawLicense{Path: path}
-			if path != "" {
-				fpath := filepath.Join(info.Root, "src", path)
-				m, ok := matched[fpath]
-				if !ok {
-					data, err := ioutil.ReadFile(fpath)
-					if err != nil {
-						return nil, err
-					}
-					m = matchTemplates(data, templates)
-					matched[fpath] = m
-				}
-				rl.Score = m.Score
-				rl.Template = m.Template
-				rl.ExtraWords = m.ExtraWords
-				rl.MissingWords = m.MissingWords
-			}
-			rawLicenseInfos = append(rawLicenseInfos, &rl)
-		}
-		gPackage.RawLicenses = rawLicenseInfos
-		gPackages = append(gPackages, gPackage)
-	}
-	return gPackages, nil
-}
-
-// longestCommonPrefix returns the longest common prefix over import path
-// components of supplied licenses.
-func longestCommonPrefix(gPackages []GoPackage) string {
-	type Node struct {
-		Name     string
-		Children map[string]*Node
-		Shared   int
-	}
-	// Build a prefix tree. Not super efficient, but easy to do.
-	root := &Node{
-		Children: map[string]*Node{},
-		Shared:   len(gPackages),
-	}
-	for _, l := range gPackages {
-		n := root
-		for _, part := range strings.Split(l.PackageName, "/") {
-			c := n.Children[part]
-			if c == nil {
-				c = &Node{
-					Name:     part,
-					Children: map[string]*Node{},
-				}
-				n.Children[part] = c
-			}
-			c.Shared++
-			n = c
-		}
-	}
-	n := root
-	prefix := []string{}
-	for {
-		if len(n.Children) != 1 {
-			break
-		}
-		for _, c := range n.Children {
-			if c.Shared == len(gPackages) {
-				// Handle case where there are subpackages:
-				// prometheus/procfs
-				// prometheus/procfs/xfs
-				prefix = append(prefix, c.Name)
-			}
-			n = c
-			break
-		}
-	}
-	return strings.Join(prefix, "/")
-}
-
-// groupPackagesByLicense returns the input packages after grouping them by license
-// path and find their longest import path common prefix. Entries with empty
-// paths are left unchanged.
-func groupPackagesByLicense(gPackages []GoPackage) ([]GoPackage, error) {
-	paths := map[string][]GoPackage{}
-	for _, gp := range gPackages {
-		for _, rl := range gp.RawLicenses {
-			if rl.Path == "" {
-				continue
-			}
-			paths[rl.Path] = append(paths[rl.Path], gp)
-		}
-	}
-	for k, v := range paths {
-		if len(v) <= 1 {
-			continue
-		}
-		prefix := longestCommonPrefix(v)
-		if prefix == "" {
-			return nil, fmt.Errorf(
-				"packages share the same license but not common prefix: %v", v)
-		}
-		gp := v[0]
-		gp.PackageName = prefix
-		paths[k] = []GoPackage{gp}
-	}
-	kept := []GoPackage{}
-	// Ensures only one package with multiple licenses is appended to the list of
-	// kept packages
-	seen := make(map[string]bool)
-	for _, gp := range gPackages {
-		if len(gp.RawLicenses) == 0 {
-			kept = append(kept, gp)
-			continue
-		}
-		for _, rl := range gp.RawLicenses {
-			if rl.Path == "" {
-				kept = append(kept, gp)
-				continue
-			}
-			if v, ok := paths[rl.Path]; ok {
-				if _, ok := seen[v[0].PackageName]; !ok {
-					kept = append(kept, v[0])
-					delete(paths, rl.Path)
-					seen[v[0].PackageName] = true
-				}
-			}
-		}
-	}
-	return kept, nil
-}
-
-type projectAndLicenses struct {
-	Project  string    `json:"project"`
-	Licenses []license `json:"licenses,omitempty"`
-	Error    string    `json:"error,omitempty"`
-}
-
-type license struct {
-	Type       string  `json:"type,omitempty"`
-	Confidence float64 `json:"confidence,omitempty"`
-}
-
-func licensesToProjectAndLicenses(gPackages []GoPackage) (c []projectAndLicenses, e []projectAndLicenses) {
-	for _, gp := range gPackages {
-		if gp.Err != "" {
-			e = append(e, projectAndLicenses{
-				Project: removeVendor(gp.PackageName),
-				Error:   gp.Err,
-			})
-			continue
-		}
-		nt := 0
-		for _, rl := range gp.RawLicenses {
-			if rl.Template == nil {
-				nt++
-			}
-		}
-		if len(gp.RawLicenses) == nt {
-			e = append(e, projectAndLicenses{
-				Project: removeVendor(gp.PackageName),
-				Error:   "No license detected",
-			})
-			continue
-		}
-		ls := []license{}
-		for _, rl := range gp.RawLicenses {
-			if rl.Template.Title != "" {
-				ls = append(ls, license{
-					Type:       rl.Template.Title,
-					Confidence: rl.Score,
-				})
-			}
-		}
-		c = append(c, projectAndLicenses{
-			Project:  removeVendor(gp.PackageName),
-			Licenses: ls,
-		})
-	}
-	return c, e
-}
-
-func removeVendor(s string) string {
-	v := "/vendor/"
-	i := strings.Index(s, v)
-	if i == -1 {
-		return s
-	}
-	return s[i+len(v):]
-}
-
-func truncateFloat(f float64) float64 {
-	nf := fmt.Sprintf("%.3f", f)
-
-	var err error
-	f, err = strconv.ParseFloat(nf, 64)
-	if err != nil {
-		panic("unexpected parse float error")
-	}
-	return f
-}
-
-func pkgsToLicenses(pkgs []string, overrides string) (pls []projectAndLicenses, ne []projectAndLicenses) {
-	fplm := make(map[string][]string)
-	if err := json.Unmarshal([]byte(overrides), &pls); err != nil {
-		log.Fatal(err)
-	}
-	for _, pl := range pls {
-		for _, l := range pl.Licenses {
-			fplm[pl.Project] = append(fplm[pl.Project], l.Type)
-		}
-	}
-
-	licenses, err := listPackagesWithLicenses("", pkgs)
-	if err != nil {
-		log.Fatal(err)
-	}
-	if licenses, err = groupPackagesByLicense(licenses); err != nil {
-		log.Fatal(err)
-	}
-	c, e := licensesToProjectAndLicenses(licenses)
-
-	// detected licenses
-	pls = nil
-	ls := []license{}
-	for _, pl := range c {
-		if fl, ok := fplm[pl.Project]; ok {
-			for _, l := range fl {
-				ls = append(ls, license{
-					Type:       l,
-					Confidence: 1.0,
-				})
-			}
-			pl = projectAndLicenses{
-				Project:  pl.Project,
-				Licenses: ls,
-			}
-			delete(fplm, pl.Project)
-		}
-		pls = append(pls, pl)
-	}
-	// force add undetected licenses given by overrides
-	ls = nil
-	for proj, fl := range fplm {
-		for _, l := range fl {
-			ls = append(ls, license{
-				Type:       l,
-				Confidence: 1.0,
-			})
-		}
-		pls = append(pls, projectAndLicenses{
-			Project:  proj,
-			Licenses: ls,
-		})
-	}
-	// missing / error license
-	for _, pl := range e {
-		if _, ok := fplm[pl.Project]; !ok {
-			ne = append(ne, pl)
-		}
-	}
-
-	sort.Slice(pls, func(i, j int) bool { return pls[i].Project < pls[j].Project })
-	sort.Slice(ne, func(i, j int) bool { return ne[i].Project < ne[j].Project })
-	return pls, ne
-}
-
-func main() {
-	of := flag.String("override-file", "", "a file to overwrite licenses")
-	flag.Parse()
-	if flag.NArg() < 1 {
-		log.Fatal("expect at least one package argument")
-	}
-
-	overrides := "[]"
-	if len(*of) != 0 {
-		b, err := ioutil.ReadFile(*of)
-		if err != nil {
-			log.Fatal(err)
-		}
-		overrides = string(b)
-	}
-
-	c, ne := pkgsToLicenses(flag.Args(), overrides)
-	b, err := json.MarshalIndent(c, "", "	")
-	if err != nil {
-		log.Fatal(err)
-	}
-	fmt.Println(string(b))
-
-	if len(ne) != 0 {
-		fmt.Println("")
-		b, err := json.MarshalIndent(ne, "", "	")
-		if err != nil {
-			log.Fatal(err)
-		}
-		fmt.Println(string(b))
-		os.Exit(1)
-	}
-}