all: remove xnetcontext

Replaces x/net/context in favour of context. Also
removes a usage of ctxhttp in favour of
req.WithContext in translate-nov2016-gen.go.

Change-Id: I2f7860695a5a1470b1b7ae2f04de1fb0f28d04db
Reviewed-on: https://code-review.googlesource.com/c/35351
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/asset/v1beta1/asset_client.go b/asset/v1beta1/asset_client.go
index ab2ec0f..4ff3bdb 100644
--- a/asset/v1beta1/asset_client.go
+++ b/asset/v1beta1/asset_client.go
@@ -17,13 +17,12 @@
 package asset
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	assetpb "google.golang.org/genproto/googleapis/cloud/asset/v1beta1"
@@ -133,8 +132,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/asset/v1beta1/asset_client_example_test.go b/asset/v1beta1/asset_client_example_test.go
index f18946d..6288dfc 100644
--- a/asset/v1beta1/asset_client_example_test.go
+++ b/asset/v1beta1/asset_client_example_test.go
@@ -17,8 +17,9 @@
 package asset_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/asset/v1beta1"
-	"golang.org/x/net/context"
 	assetpb "google.golang.org/genproto/googleapis/cloud/asset/v1beta1"
 )
 
diff --git a/asset/v1beta1/doc.go b/asset/v1beta1/doc.go
index b33e099..9e6decd 100644
--- a/asset/v1beta1/doc.go
+++ b/asset/v1beta1/doc.go
@@ -23,7 +23,11 @@
 package asset // import "cloud.google.com/go/asset/v1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/asset/v1beta1/mock_test.go b/asset/v1beta1/mock_test.go
index 701b782..7e11118 100644
--- a/asset/v1beta1/mock_test.go
+++ b/asset/v1beta1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/authexample_test.go b/authexample_test.go
index 66a1b8f..aafbe22 100644
--- a/authexample_test.go
+++ b/authexample_test.go
@@ -15,9 +15,10 @@
 package cloud_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/datastore"
 	"cloud.google.com/go/pubsub"
-	"golang.org/x/net/context"
 	"golang.org/x/oauth2/google"
 	"google.golang.org/api/option"
 )
diff --git a/bigquery/benchmarks/bench.go b/bigquery/benchmarks/bench.go
index 021092c..ffa43c3 100644
--- a/bigquery/benchmarks/bench.go
+++ b/bigquery/benchmarks/bench.go
@@ -23,8 +23,9 @@
 	"log"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigquery"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/bigquery/bigquery.go b/bigquery/bigquery.go
index a94bc71..bed6fe3 100644
--- a/bigquery/bigquery.go
+++ b/bigquery/bigquery.go
@@ -20,10 +20,11 @@
 	"net/http"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal"
 	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 	"google.golang.org/api/googleapi"
 	"google.golang.org/api/option"
diff --git a/bigquery/copy.go b/bigquery/copy.go
index 871b97a..44cc68d 100644
--- a/bigquery/copy.go
+++ b/bigquery/copy.go
@@ -15,7 +15,8 @@
 package bigquery
 
 import (
-	"golang.org/x/net/context"
+	"context"
+
 	bq "google.golang.org/api/bigquery/v2"
 )
 
diff --git a/bigquery/dataset.go b/bigquery/dataset.go
index 1fd3e41..a719bd4 100644
--- a/bigquery/dataset.go
+++ b/bigquery/dataset.go
@@ -19,9 +19,10 @@
 	"fmt"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/optional"
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 	"google.golang.org/api/iterator"
 )
diff --git a/bigquery/dataset_test.go b/bigquery/dataset_test.go
index 431b75f..e10b7f2 100644
--- a/bigquery/dataset_test.go
+++ b/bigquery/dataset_test.go
@@ -20,9 +20,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 	itest "google.golang.org/api/iterator/testing"
 )
diff --git a/bigquery/datatransfer/apiv1/ListDataSources_smoke_test.go b/bigquery/datatransfer/apiv1/ListDataSources_smoke_test.go
index 86fdde5..3367617 100644
--- a/bigquery/datatransfer/apiv1/ListDataSources_smoke_test.go
+++ b/bigquery/datatransfer/apiv1/ListDataSources_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/bigquery/datatransfer/apiv1/data_transfer_client.go b/bigquery/datatransfer/apiv1/data_transfer_client.go
index 634cfdb..fea963e 100644
--- a/bigquery/datatransfer/apiv1/data_transfer_client.go
+++ b/bigquery/datatransfer/apiv1/data_transfer_client.go
@@ -17,14 +17,13 @@
 package datatransfer
 
 import (
+	"context"
 	"fmt"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -143,8 +142,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/bigquery/datatransfer/apiv1/data_transfer_client_example_test.go b/bigquery/datatransfer/apiv1/data_transfer_client_example_test.go
index e8ef24b..6d9db24 100644
--- a/bigquery/datatransfer/apiv1/data_transfer_client_example_test.go
+++ b/bigquery/datatransfer/apiv1/data_transfer_client_example_test.go
@@ -17,8 +17,9 @@
 package datatransfer_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/bigquery/datatransfer/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	datatransferpb "google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1"
 )
diff --git a/bigquery/datatransfer/apiv1/doc.go b/bigquery/datatransfer/apiv1/doc.go
index 856e8f9..01a1915 100644
--- a/bigquery/datatransfer/apiv1/doc.go
+++ b/bigquery/datatransfer/apiv1/doc.go
@@ -24,7 +24,11 @@
 package datatransfer // import "cloud.google.com/go/bigquery/datatransfer/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -45,3 +49,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/bigquery/datatransfer/apiv1/mock_test.go b/bigquery/datatransfer/apiv1/mock_test.go
index aa616cd..f406f67 100644
--- a/bigquery/datatransfer/apiv1/mock_test.go
+++ b/bigquery/datatransfer/apiv1/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/bigquery/examples_test.go b/bigquery/examples_test.go
index 6b6af28..3d7c8d4 100644
--- a/bigquery/examples_test.go
+++ b/bigquery/examples_test.go
@@ -19,8 +19,9 @@
 	"os"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigquery"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/bigquery/extract.go b/bigquery/extract.go
index d31ecaa..a77f275 100644
--- a/bigquery/extract.go
+++ b/bigquery/extract.go
@@ -15,8 +15,9 @@
 package bigquery
 
 import (
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 )
 
diff --git a/bigquery/inserter.go b/bigquery/inserter.go
index 16081af..c15091c 100644
--- a/bigquery/inserter.go
+++ b/bigquery/inserter.go
@@ -19,8 +19,9 @@
 	"fmt"
 	"reflect"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 )
 
diff --git a/bigquery/integration_test.go b/bigquery/integration_test.go
index 9172452..71f8bb9 100644
--- a/bigquery/integration_test.go
+++ b/bigquery/integration_test.go
@@ -28,6 +28,8 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/civil"
 	"cloud.google.com/go/httpreplay"
 	"cloud.google.com/go/internal"
@@ -38,7 +40,6 @@
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/googleapi"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
diff --git a/bigquery/iterator.go b/bigquery/iterator.go
index 1633f16..1e738bd 100644
--- a/bigquery/iterator.go
+++ b/bigquery/iterator.go
@@ -18,7 +18,8 @@
 	"fmt"
 	"reflect"
 
-	"golang.org/x/net/context"
+	"context"
+
 	bq "google.golang.org/api/bigquery/v2"
 	"google.golang.org/api/iterator"
 )
diff --git a/bigquery/iterator_test.go b/bigquery/iterator_test.go
index 3c94139..2326fe8 100644
--- a/bigquery/iterator_test.go
+++ b/bigquery/iterator_test.go
@@ -19,8 +19,9 @@
 	"fmt"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/bigquery/job.go b/bigquery/job.go
index f2a7440..c011f55 100644
--- a/bigquery/job.go
+++ b/bigquery/job.go
@@ -19,10 +19,11 @@
 	"fmt"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal"
 	"cloud.google.com/go/internal/trace"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 	"google.golang.org/api/googleapi"
 	"google.golang.org/api/iterator"
diff --git a/bigquery/load.go b/bigquery/load.go
index 38ba765..8e56de2 100644
--- a/bigquery/load.go
+++ b/bigquery/load.go
@@ -17,8 +17,9 @@
 import (
 	"io"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 )
 
diff --git a/bigquery/oc_test.go b/bigquery/oc_test.go
index b652339..4f01e5f 100644
--- a/bigquery/oc_test.go
+++ b/bigquery/oc_test.go
@@ -19,8 +19,9 @@
 import (
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 )
 
 func TestOCTracing(t *testing.T) {
diff --git a/bigquery/params_test.go b/bigquery/params_test.go
index 50cf8ac..8ab39d8 100644
--- a/bigquery/params_test.go
+++ b/bigquery/params_test.go
@@ -22,10 +22,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/civil"
 	"cloud.google.com/go/internal/testutil"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 )
 
diff --git a/bigquery/query.go b/bigquery/query.go
index cdd52d5..e3850c5 100644
--- a/bigquery/query.go
+++ b/bigquery/query.go
@@ -17,8 +17,9 @@
 import (
 	"errors"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 )
 
diff --git a/bigquery/read_test.go b/bigquery/read_test.go
index 90c02c7..3c8a1a0 100644
--- a/bigquery/read_test.go
+++ b/bigquery/read_test.go
@@ -18,9 +18,10 @@
 	"errors"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 	"google.golang.org/api/iterator"
 )
diff --git a/bigquery/table.go b/bigquery/table.go
index 2e184dd..3d2c4ed 100644
--- a/bigquery/table.go
+++ b/bigquery/table.go
@@ -19,9 +19,10 @@
 	"fmt"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/optional"
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	bq "google.golang.org/api/bigquery/v2"
 )
 
diff --git a/bigtable/admin.go b/bigtable/admin.go
index c239570..3f1d999 100644
--- a/bigtable/admin.go
+++ b/bigtable/admin.go
@@ -24,6 +24,8 @@
 	"strings"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigtable/internal/gax"
 	btopt "cloud.google.com/go/bigtable/internal/option"
 	"cloud.google.com/go/iam"
@@ -32,7 +34,6 @@
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/ptypes"
 	durpb "github.com/golang/protobuf/ptypes/duration"
-	"golang.org/x/net/context"
 	"google.golang.org/api/cloudresourcemanager/v1"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
diff --git a/bigtable/admin_test.go b/bigtable/admin_test.go
index a404181..32b3774 100644
--- a/bigtable/admin_test.go
+++ b/bigtable/admin_test.go
@@ -22,9 +22,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/proto"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	btapb "google.golang.org/genproto/googleapis/bigtable/admin/v2"
 )
diff --git a/bigtable/bigtable.go b/bigtable/bigtable.go
index 7cf2c44..0826c8a 100644
--- a/bigtable/bigtable.go
+++ b/bigtable/bigtable.go
@@ -23,10 +23,11 @@
 	"strconv"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigtable/internal/gax"
 	btopt "cloud.google.com/go/bigtable/internal/option"
 	"github.com/golang/protobuf/proto"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	gtransport "google.golang.org/api/transport/grpc"
 	btpb "google.golang.org/genproto/googleapis/bigtable/v2"
diff --git a/bigtable/bigtable_test.go b/bigtable/bigtable_test.go
index 4d7f3a5..568ff92 100644
--- a/bigtable/bigtable_test.go
+++ b/bigtable/bigtable_test.go
@@ -24,9 +24,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	btpb "google.golang.org/genproto/googleapis/bigtable/v2"
 	"google.golang.org/grpc"
diff --git a/bigtable/bttest/example_test.go b/bigtable/bttest/example_test.go
index f979db5..9058d62 100644
--- a/bigtable/bttest/example_test.go
+++ b/bigtable/bttest/example_test.go
@@ -19,9 +19,10 @@
 	"fmt"
 	"log"
 
+	"context"
+
 	"cloud.google.com/go/bigtable"
 	"cloud.google.com/go/bigtable/bttest"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/bigtable/bttest/inmem.go b/bigtable/bttest/inmem.go
index cabd6d6..1ace98c 100644
--- a/bigtable/bttest/inmem.go
+++ b/bigtable/bttest/inmem.go
@@ -42,10 +42,11 @@
 	"sync"
 	"time"
 
+	"context"
+
 	emptypb "github.com/golang/protobuf/ptypes/empty"
 	"github.com/golang/protobuf/ptypes/wrappers"
 	"github.com/google/btree"
-	"golang.org/x/net/context"
 	btapb "google.golang.org/genproto/googleapis/bigtable/admin/v2"
 	btpb "google.golang.org/genproto/googleapis/bigtable/v2"
 	"google.golang.org/genproto/googleapis/longrunning"
diff --git a/bigtable/bttest/inmem_test.go b/bigtable/bttest/inmem_test.go
index 9303a1e..ce647c4 100644
--- a/bigtable/bttest/inmem_test.go
+++ b/bigtable/bttest/inmem_test.go
@@ -23,10 +23,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
-	"golang.org/x/net/context"
 	btapb "google.golang.org/genproto/googleapis/bigtable/admin/v2"
 	btpb "google.golang.org/genproto/googleapis/bigtable/v2"
 	"google.golang.org/grpc"
diff --git a/bigtable/cmd/cbt/cbt.go b/bigtable/cmd/cbt/cbt.go
index 0e4e2cd..e0e8d80 100644
--- a/bigtable/cmd/cbt/cbt.go
+++ b/bigtable/cmd/cbt/cbt.go
@@ -35,9 +35,10 @@
 	"text/template"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigtable"
 	"cloud.google.com/go/bigtable/internal/cbtconfig"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
diff --git a/bigtable/cmd/loadtest/loadtest.go b/bigtable/cmd/loadtest/loadtest.go
index 8d4dc2c..5c04dd1 100644
--- a/bigtable/cmd/loadtest/loadtest.go
+++ b/bigtable/cmd/loadtest/loadtest.go
@@ -31,10 +31,11 @@
 	"sync/atomic"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigtable"
 	"cloud.google.com/go/bigtable/internal/cbtconfig"
 	"cloud.google.com/go/bigtable/internal/stat"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/bigtable/cmd/scantest/scantest.go b/bigtable/cmd/scantest/scantest.go
index d087b38..da18b36 100644
--- a/bigtable/cmd/scantest/scantest.go
+++ b/bigtable/cmd/scantest/scantest.go
@@ -32,10 +32,11 @@
 	"text/tabwriter"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigtable"
 	"cloud.google.com/go/bigtable/internal/cbtconfig"
 	"cloud.google.com/go/bigtable/internal/stat"
-	"golang.org/x/net/context"
 )
 
 var (
diff --git a/bigtable/export_test.go b/bigtable/export_test.go
index bdeb8f5..d2cd192 100644
--- a/bigtable/export_test.go
+++ b/bigtable/export_test.go
@@ -23,8 +23,9 @@
 	"strings"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigtable/bttest"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/bigtable/go18.go b/bigtable/go18.go
index 9b1d632..2389c9c 100644
--- a/bigtable/go18.go
+++ b/bigtable/go18.go
@@ -19,9 +19,10 @@
 import (
 	"fmt"
 
+	"context"
+
 	"go.opencensus.io/plugin/ocgrpc"
 	"go.opencensus.io/trace"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/bigtable/internal/gax/invoke.go b/bigtable/internal/gax/invoke.go
index f5cc99e..453e0e9 100644
--- a/bigtable/internal/gax/invoke.go
+++ b/bigtable/internal/gax/invoke.go
@@ -23,7 +23,8 @@
 	"os"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 )
diff --git a/bigtable/internal/gax/invoke_test.go b/bigtable/internal/gax/invoke_test.go
index 6b006d4..a1d7f54 100644
--- a/bigtable/internal/gax/invoke_test.go
+++ b/bigtable/internal/gax/invoke_test.go
@@ -19,7 +19,8 @@
 	"testing"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/bigtable/not_go18.go b/bigtable/not_go18.go
index b5b58b0..17109ea 100644
--- a/bigtable/not_go18.go
+++ b/bigtable/not_go18.go
@@ -17,7 +17,8 @@
 package bigtable
 
 import (
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/option"
 )
 
diff --git a/bigtable/retry_test.go b/bigtable/retry_test.go
index 3bd93b1..8fb2df5 100644
--- a/bigtable/retry_test.go
+++ b/bigtable/retry_test.go
@@ -20,12 +20,13 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigtable/bttest"
 	"cloud.google.com/go/bigtable/internal/gax"
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/ptypes/wrappers"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	btpb "google.golang.org/genproto/googleapis/bigtable/v2"
 	rpcpb "google.golang.org/genproto/googleapis/rpc/status"
diff --git a/cloudtasks/apiv2beta2/cloud_tasks_client.go b/cloudtasks/apiv2beta2/cloud_tasks_client.go
index 0bc3dfa..0a2d93e 100644
--- a/cloudtasks/apiv2beta2/cloud_tasks_client.go
+++ b/cloudtasks/apiv2beta2/cloud_tasks_client.go
@@ -17,14 +17,13 @@
 package cloudtasks
 
 import (
+	"context"
 	"fmt"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -156,8 +155,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/cloudtasks/apiv2beta2/cloud_tasks_client_example_test.go b/cloudtasks/apiv2beta2/cloud_tasks_client_example_test.go
index b954225..e8c1db7 100644
--- a/cloudtasks/apiv2beta2/cloud_tasks_client_example_test.go
+++ b/cloudtasks/apiv2beta2/cloud_tasks_client_example_test.go
@@ -17,8 +17,9 @@
 package cloudtasks_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/cloudtasks/apiv2beta2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	taskspb "google.golang.org/genproto/googleapis/cloud/tasks/v2beta2"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
diff --git a/cloudtasks/apiv2beta2/doc.go b/cloudtasks/apiv2beta2/doc.go
index aa41e28..3b79f57 100644
--- a/cloudtasks/apiv2beta2/doc.go
+++ b/cloudtasks/apiv2beta2/doc.go
@@ -23,7 +23,11 @@
 package cloudtasks // import "cloud.google.com/go/cloudtasks/apiv2beta2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/cloudtasks/apiv2beta2/mock_test.go b/cloudtasks/apiv2beta2/mock_test.go
index 9119fa9..e3f62aa 100644
--- a/cloudtasks/apiv2beta2/mock_test.go
+++ b/cloudtasks/apiv2beta2/mock_test.go
@@ -25,6 +25,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -36,7 +37,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/cloudtasks/apiv2beta3/cloud_tasks_client.go b/cloudtasks/apiv2beta3/cloud_tasks_client.go
index e261ed2..e956a7e 100644
--- a/cloudtasks/apiv2beta3/cloud_tasks_client.go
+++ b/cloudtasks/apiv2beta3/cloud_tasks_client.go
@@ -17,14 +17,13 @@
 package cloudtasks
 
 import (
+	"context"
 	"fmt"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -148,8 +147,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/cloudtasks/apiv2beta3/cloud_tasks_client_example_test.go b/cloudtasks/apiv2beta3/cloud_tasks_client_example_test.go
index ea791ad..0bc453d 100644
--- a/cloudtasks/apiv2beta3/cloud_tasks_client_example_test.go
+++ b/cloudtasks/apiv2beta3/cloud_tasks_client_example_test.go
@@ -17,8 +17,9 @@
 package cloudtasks_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/cloudtasks/apiv2beta3"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	taskspb "google.golang.org/genproto/googleapis/cloud/tasks/v2beta3"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
diff --git a/cloudtasks/apiv2beta3/doc.go b/cloudtasks/apiv2beta3/doc.go
index b7f5d8d..760cdc8 100644
--- a/cloudtasks/apiv2beta3/doc.go
+++ b/cloudtasks/apiv2beta3/doc.go
@@ -23,7 +23,11 @@
 package cloudtasks // import "cloud.google.com/go/cloudtasks/apiv2beta3"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/cloudtasks/apiv2beta3/mock_test.go b/cloudtasks/apiv2beta3/mock_test.go
index cf85e27..f7d747f 100644
--- a/cloudtasks/apiv2beta3/mock_test.go
+++ b/cloudtasks/apiv2beta3/mock_test.go
@@ -23,6 +23,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -34,7 +35,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/cmd/go-cloud-debug-agent/debuglet.go b/cmd/go-cloud-debug-agent/debuglet.go
index 0088dd1..e55e3fa 100644
--- a/cmd/go-cloud-debug-agent/debuglet.go
+++ b/cmd/go-cloud-debug-agent/debuglet.go
@@ -27,13 +27,14 @@
 	"sync"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/cmd/go-cloud-debug-agent/internal/breakpoints"
 	debuglet "cloud.google.com/go/cmd/go-cloud-debug-agent/internal/controller"
 	"cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug"
 	"cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/local"
 	"cloud.google.com/go/cmd/go-cloud-debug-agent/internal/valuecollector"
 	"cloud.google.com/go/compute/metadata"
-	"golang.org/x/net/context"
 	"golang.org/x/oauth2"
 	"golang.org/x/oauth2/google"
 	cd "google.golang.org/api/clouddebugger/v2"
diff --git a/cmd/go-cloud-debug-agent/internal/controller/client.go b/cmd/go-cloud-debug-agent/internal/controller/client.go
index 84962c5..c8c9bfc 100644
--- a/cmd/go-cloud-debug-agent/internal/controller/client.go
+++ b/cmd/go-cloud-debug-agent/internal/controller/client.go
@@ -23,7 +23,8 @@
 	"log"
 	"sync"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"golang.org/x/oauth2"
 	cd "google.golang.org/api/clouddebugger/v2"
 	"google.golang.org/api/googleapi"
diff --git a/cmd/go-cloud-debug-agent/internal/controller/client_test.go b/cmd/go-cloud-debug-agent/internal/controller/client_test.go
index 63eff5f..5a861a6 100644
--- a/cmd/go-cloud-debug-agent/internal/controller/client_test.go
+++ b/cmd/go-cloud-debug-agent/internal/controller/client_test.go
@@ -21,7 +21,8 @@
 	"strconv"
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"golang.org/x/oauth2"
 	cd "google.golang.org/api/clouddebugger/v2"
 	"google.golang.org/api/googleapi"
diff --git a/compute/metadata/go.mod b/compute/metadata/go.mod
index 9b70560..c350d0e 100644
--- a/compute/metadata/go.mod
+++ b/compute/metadata/go.mod
@@ -1,3 +1 @@
 module cloud.google.com/go/compute/metadata
-
-require golang.org/x/net v0.0.0-20181106065722-10aee1819953
diff --git a/compute/metadata/go.sum b/compute/metadata/go.sum
index a858ce5..e69de29 100644
--- a/compute/metadata/go.sum
+++ b/compute/metadata/go.sum
@@ -1,2 +0,0 @@
-golang.org/x/net v0.0.0-20181106065722-10aee1819953 h1:LuZIitY8waaxUfNIdtajyE/YzA/zyf0YxXG27VpLrkg=
-golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
diff --git a/compute/metadata/metadata.go b/compute/metadata/metadata.go
index 9d0660b..0d929a6 100644
--- a/compute/metadata/metadata.go
+++ b/compute/metadata/metadata.go
@@ -20,6 +20,7 @@
 package metadata // import "cloud.google.com/go/compute/metadata"
 
 import (
+	"context"
 	"encoding/json"
 	"fmt"
 	"io/ioutil"
@@ -31,9 +32,6 @@
 	"strings"
 	"sync"
 	"time"
-
-	"golang.org/x/net/context"
-	"golang.org/x/net/context/ctxhttp"
 )
 
 const (
@@ -143,7 +141,7 @@
 	go func() {
 		req, _ := http.NewRequest("GET", "http://"+metadataIP, nil)
 		req.Header.Set("User-Agent", userAgent)
-		res, err := ctxhttp.Do(ctx, defaultClient.hc, req)
+		res, err := defaultClient.hc.Do(req.WithContext(ctx))
 		if err != nil {
 			resc <- false
 			return
diff --git a/container/apiv1/ListClusters_smoke_test.go b/container/apiv1/ListClusters_smoke_test.go
index a8e1af9..89b0124 100644
--- a/container/apiv1/ListClusters_smoke_test.go
+++ b/container/apiv1/ListClusters_smoke_test.go
@@ -26,8 +26,9 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/container/apiv1/cluster_manager_client.go b/container/apiv1/cluster_manager_client.go
index 335cbe1..01edd99 100644
--- a/container/apiv1/cluster_manager_client.go
+++ b/container/apiv1/cluster_manager_client.go
@@ -19,9 +19,10 @@
 import (
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	containerpb "google.golang.org/genproto/googleapis/container/v1"
diff --git a/container/apiv1/cluster_manager_client_example_test.go b/container/apiv1/cluster_manager_client_example_test.go
index e76586a..8e98f43 100644
--- a/container/apiv1/cluster_manager_client_example_test.go
+++ b/container/apiv1/cluster_manager_client_example_test.go
@@ -17,8 +17,9 @@
 package container_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/container/apiv1"
-	"golang.org/x/net/context"
 	containerpb "google.golang.org/genproto/googleapis/container/v1"
 )
 
diff --git a/container/apiv1/doc.go b/container/apiv1/doc.go
index a963842..0f99505 100644
--- a/container/apiv1/doc.go
+++ b/container/apiv1/doc.go
@@ -25,7 +25,8 @@
 package container // import "cloud.google.com/go/container/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/grpc/metadata"
 )
 
diff --git a/container/apiv1/mock_test.go b/container/apiv1/mock_test.go
index 002f755..01897d9 100644
--- a/container/apiv1/mock_test.go
+++ b/container/apiv1/mock_test.go
@@ -31,9 +31,10 @@
 	"strings"
 	"testing"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/container/container.go b/container/container.go
index 8a26bc5..47b2e2b 100644
--- a/container/container.go
+++ b/container/container.go
@@ -22,7 +22,8 @@
 	"fmt"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	raw "google.golang.org/api/container/v1"
 	"google.golang.org/api/option"
 	htransport "google.golang.org/api/transport/http"
diff --git a/containeranalysis/apiv1beta1/container_analysis_v1_beta1_client.go b/containeranalysis/apiv1beta1/container_analysis_v1_beta1_client.go
index 5d95ec7..1a5dd24 100644
--- a/containeranalysis/apiv1beta1/container_analysis_v1_beta1_client.go
+++ b/containeranalysis/apiv1beta1/container_analysis_v1_beta1_client.go
@@ -17,13 +17,12 @@
 package containeranalysis
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -138,8 +137,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ContainerAnalysisV1Beta1Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/containeranalysis/apiv1beta1/container_analysis_v1_beta1_client_example_test.go b/containeranalysis/apiv1beta1/container_analysis_v1_beta1_client_example_test.go
index 9b7c2ca..c19e767 100644
--- a/containeranalysis/apiv1beta1/container_analysis_v1_beta1_client_example_test.go
+++ b/containeranalysis/apiv1beta1/container_analysis_v1_beta1_client_example_test.go
@@ -17,8 +17,9 @@
 package containeranalysis_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/containeranalysis/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	containeranalysispb "google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
diff --git a/containeranalysis/apiv1beta1/doc.go b/containeranalysis/apiv1beta1/doc.go
index 3f7c8e5..41cba27 100644
--- a/containeranalysis/apiv1beta1/doc.go
+++ b/containeranalysis/apiv1beta1/doc.go
@@ -25,7 +25,11 @@
 package containeranalysis // import "cloud.google.com/go/containeranalysis/apiv1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -46,3 +50,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/containeranalysis/apiv1beta1/grafeas_v1_beta1_client.go b/containeranalysis/apiv1beta1/grafeas_v1_beta1_client.go
index d976a35..b5d2c21 100644
--- a/containeranalysis/apiv1beta1/grafeas_v1_beta1_client.go
+++ b/containeranalysis/apiv1beta1/grafeas_v1_beta1_client.go
@@ -17,13 +17,12 @@
 package containeranalysis
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -156,8 +155,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *GrafeasV1Beta1Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/containeranalysis/apiv1beta1/grafeas_v1_beta1_client_example_test.go b/containeranalysis/apiv1beta1/grafeas_v1_beta1_client_example_test.go
index efa427b..c3ef335 100644
--- a/containeranalysis/apiv1beta1/grafeas_v1_beta1_client_example_test.go
+++ b/containeranalysis/apiv1beta1/grafeas_v1_beta1_client_example_test.go
@@ -17,8 +17,9 @@
 package containeranalysis_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/containeranalysis/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	grafeaspb "google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/grafeas"
 )
diff --git a/containeranalysis/apiv1beta1/mock_test.go b/containeranalysis/apiv1beta1/mock_test.go
index 42d3d2e..bfa61fc 100644
--- a/containeranalysis/apiv1beta1/mock_test.go
+++ b/containeranalysis/apiv1beta1/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/dataproc/apiv1/ListClusters_smoke_test.go b/dataproc/apiv1/ListClusters_smoke_test.go
index 732c4b0..0a1b5c1 100644
--- a/dataproc/apiv1/ListClusters_smoke_test.go
+++ b/dataproc/apiv1/ListClusters_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/dataproc/apiv1/cluster_controller_client.go b/dataproc/apiv1/cluster_controller_client.go
index 2b209cc..bcd8ec6 100644
--- a/dataproc/apiv1/cluster_controller_client.go
+++ b/dataproc/apiv1/cluster_controller_client.go
@@ -17,15 +17,14 @@
 package dataproc
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -145,8 +144,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ClusterControllerClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dataproc/apiv1/cluster_controller_client_example_test.go b/dataproc/apiv1/cluster_controller_client_example_test.go
index 7a99093..f0864dc 100644
--- a/dataproc/apiv1/cluster_controller_client_example_test.go
+++ b/dataproc/apiv1/cluster_controller_client_example_test.go
@@ -17,8 +17,9 @@
 package dataproc_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dataproc/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dataprocpb "google.golang.org/genproto/googleapis/cloud/dataproc/v1"
 )
diff --git a/dataproc/apiv1/doc.go b/dataproc/apiv1/doc.go
index 80c61ee..1d12277 100644
--- a/dataproc/apiv1/doc.go
+++ b/dataproc/apiv1/doc.go
@@ -23,7 +23,11 @@
 package dataproc // import "cloud.google.com/go/dataproc/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/dataproc/apiv1/job_controller_client.go b/dataproc/apiv1/job_controller_client.go
index 4450677..2c0b9a9 100644
--- a/dataproc/apiv1/job_controller_client.go
+++ b/dataproc/apiv1/job_controller_client.go
@@ -17,13 +17,12 @@
 package dataproc
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -125,8 +124,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *JobControllerClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dataproc/apiv1/job_controller_client_example_test.go b/dataproc/apiv1/job_controller_client_example_test.go
index 50c1f26..ba9e90b 100644
--- a/dataproc/apiv1/job_controller_client_example_test.go
+++ b/dataproc/apiv1/job_controller_client_example_test.go
@@ -17,8 +17,9 @@
 package dataproc_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dataproc/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dataprocpb "google.golang.org/genproto/googleapis/cloud/dataproc/v1"
 )
diff --git a/dataproc/apiv1/mock_test.go b/dataproc/apiv1/mock_test.go
index 1f4669f..70d1b81 100644
--- a/dataproc/apiv1/mock_test.go
+++ b/dataproc/apiv1/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/dataproc/apiv1beta2/ListClusters_smoke_test.go b/dataproc/apiv1beta2/ListClusters_smoke_test.go
index d902ab5..020c8a0 100644
--- a/dataproc/apiv1beta2/ListClusters_smoke_test.go
+++ b/dataproc/apiv1beta2/ListClusters_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/dataproc/apiv1beta2/cluster_controller_client.go b/dataproc/apiv1beta2/cluster_controller_client.go
index 28791a9..699c9c2 100644
--- a/dataproc/apiv1beta2/cluster_controller_client.go
+++ b/dataproc/apiv1beta2/cluster_controller_client.go
@@ -17,15 +17,14 @@
 package dataproc
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -145,8 +144,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ClusterControllerClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dataproc/apiv1beta2/cluster_controller_client_example_test.go b/dataproc/apiv1beta2/cluster_controller_client_example_test.go
index 87a5c2b..d56a2c7 100644
--- a/dataproc/apiv1beta2/cluster_controller_client_example_test.go
+++ b/dataproc/apiv1beta2/cluster_controller_client_example_test.go
@@ -17,8 +17,9 @@
 package dataproc_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dataproc/apiv1beta2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dataprocpb "google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2"
 )
diff --git a/dataproc/apiv1beta2/doc.go b/dataproc/apiv1beta2/doc.go
index e372223..e6abfd1 100644
--- a/dataproc/apiv1beta2/doc.go
+++ b/dataproc/apiv1beta2/doc.go
@@ -23,7 +23,11 @@
 package dataproc // import "cloud.google.com/go/dataproc/apiv1beta2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/dataproc/apiv1beta2/job_controller_client.go b/dataproc/apiv1beta2/job_controller_client.go
index 21b21ab..c3e579c 100644
--- a/dataproc/apiv1beta2/job_controller_client.go
+++ b/dataproc/apiv1beta2/job_controller_client.go
@@ -17,13 +17,12 @@
 package dataproc
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -125,8 +124,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *JobControllerClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dataproc/apiv1beta2/job_controller_client_example_test.go b/dataproc/apiv1beta2/job_controller_client_example_test.go
index f70e44d..e7983b9 100644
--- a/dataproc/apiv1beta2/job_controller_client_example_test.go
+++ b/dataproc/apiv1beta2/job_controller_client_example_test.go
@@ -17,8 +17,9 @@
 package dataproc_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dataproc/apiv1beta2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dataprocpb "google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2"
 )
diff --git a/dataproc/apiv1beta2/mock_test.go b/dataproc/apiv1beta2/mock_test.go
index 4b81617..0c33fec 100644
--- a/dataproc/apiv1beta2/mock_test.go
+++ b/dataproc/apiv1beta2/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/dataproc/apiv1beta2/workflow_template_client.go b/dataproc/apiv1beta2/workflow_template_client.go
index 68e60a4..da22912 100644
--- a/dataproc/apiv1beta2/workflow_template_client.go
+++ b/dataproc/apiv1beta2/workflow_template_client.go
@@ -17,15 +17,14 @@
 package dataproc
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -145,8 +144,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *WorkflowTemplateClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dataproc/apiv1beta2/workflow_template_client_example_test.go b/dataproc/apiv1beta2/workflow_template_client_example_test.go
index 0743b21..3bb051f 100644
--- a/dataproc/apiv1beta2/workflow_template_client_example_test.go
+++ b/dataproc/apiv1beta2/workflow_template_client_example_test.go
@@ -17,8 +17,9 @@
 package dataproc_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dataproc/apiv1beta2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dataprocpb "google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2"
 )
diff --git a/datastore/client.go b/datastore/client.go
index 73f8e12..5571483 100644
--- a/datastore/client.go
+++ b/datastore/client.go
@@ -17,10 +17,11 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/internal"
 	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/datastore/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/datastore/datastore.go b/datastore/datastore.go
index d52631e..a45d7ed 100644
--- a/datastore/datastore.go
+++ b/datastore/datastore.go
@@ -21,8 +21,9 @@
 	"os"
 	"reflect"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	gtransport "google.golang.org/api/transport/grpc"
 	pb "google.golang.org/genproto/googleapis/datastore/v1"
diff --git a/datastore/datastore_test.go b/datastore/datastore_test.go
index f048d62..e78d189 100644
--- a/datastore/datastore_test.go
+++ b/datastore/datastore_test.go
@@ -24,10 +24,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/datastore/v1"
 	"google.golang.org/grpc"
 )
diff --git a/datastore/example_test.go b/datastore/example_test.go
index cdb5d20..ab4ada8 100644
--- a/datastore/example_test.go
+++ b/datastore/example_test.go
@@ -19,8 +19,9 @@
 	"log"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/datastore"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/datastore/integration_test.go b/datastore/integration_test.go
index b99671d..2278873 100644
--- a/datastore/integration_test.go
+++ b/datastore/integration_test.go
@@ -29,9 +29,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/rpcreplay"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
diff --git a/datastore/key.go b/datastore/key.go
index fdcee83..a6cc535 100644
--- a/datastore/key.go
+++ b/datastore/key.go
@@ -22,8 +22,9 @@
 	"strconv"
 	"strings"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/datastore/v1"
 )
 
diff --git a/datastore/oc_test.go b/datastore/oc_test.go
index 6c4ab40..df6049c 100644
--- a/datastore/oc_test.go
+++ b/datastore/oc_test.go
@@ -19,8 +19,9 @@
 import (
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 )
 
 func TestOCTracing(t *testing.T) {
diff --git a/datastore/query.go b/datastore/query.go
index 11ab927..34aced1 100644
--- a/datastore/query.go
+++ b/datastore/query.go
@@ -23,9 +23,10 @@
 	"strconv"
 	"strings"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
 	wrapperspb "github.com/golang/protobuf/ptypes/wrappers"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	pb "google.golang.org/genproto/googleapis/datastore/v1"
 )
diff --git a/datastore/query_test.go b/datastore/query_test.go
index d0ffbcf..14ff5f8 100644
--- a/datastore/query_test.go
+++ b/datastore/query_test.go
@@ -21,10 +21,11 @@
 	"sort"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/datastore/v1"
 	"google.golang.org/grpc"
 )
diff --git a/datastore/transaction.go b/datastore/transaction.go
index 37afb8d..cbf9c54 100644
--- a/datastore/transaction.go
+++ b/datastore/transaction.go
@@ -17,8 +17,9 @@
 import (
 	"errors"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/datastore/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/datastore/transaction_test.go b/datastore/transaction_test.go
index 0024959..a648407 100644
--- a/datastore/transaction_test.go
+++ b/datastore/transaction_test.go
@@ -17,8 +17,9 @@
 import (
 	"testing"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/datastore/v1"
 )
 
diff --git a/debugger/apiv2/controller2_client.go b/debugger/apiv2/controller2_client.go
index 9dfa3bd..3c12efb 100644
--- a/debugger/apiv2/controller2_client.go
+++ b/debugger/apiv2/controller2_client.go
@@ -17,11 +17,10 @@
 package debugger
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	clouddebuggerpb "google.golang.org/genproto/googleapis/devtools/clouddebugger/v2"
@@ -135,8 +134,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Controller2Client) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/debugger/apiv2/controller2_client_example_test.go b/debugger/apiv2/controller2_client_example_test.go
index 4ea1860..c26754d 100644
--- a/debugger/apiv2/controller2_client_example_test.go
+++ b/debugger/apiv2/controller2_client_example_test.go
@@ -17,8 +17,9 @@
 package debugger_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/debugger/apiv2"
-	"golang.org/x/net/context"
 	clouddebuggerpb "google.golang.org/genproto/googleapis/devtools/clouddebugger/v2"
 )
 
diff --git a/debugger/apiv2/debugger2_client.go b/debugger/apiv2/debugger2_client.go
index 680aa5e..de5e0f1 100644
--- a/debugger/apiv2/debugger2_client.go
+++ b/debugger/apiv2/debugger2_client.go
@@ -17,11 +17,10 @@
 package debugger
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	clouddebuggerpb "google.golang.org/genproto/googleapis/devtools/clouddebugger/v2"
@@ -131,8 +130,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Debugger2Client) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/debugger/apiv2/debugger2_client_example_test.go b/debugger/apiv2/debugger2_client_example_test.go
index b7f72e9..510f34f 100644
--- a/debugger/apiv2/debugger2_client_example_test.go
+++ b/debugger/apiv2/debugger2_client_example_test.go
@@ -17,8 +17,9 @@
 package debugger_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/debugger/apiv2"
-	"golang.org/x/net/context"
 	clouddebuggerpb "google.golang.org/genproto/googleapis/devtools/clouddebugger/v2"
 )
 
diff --git a/debugger/apiv2/doc.go b/debugger/apiv2/doc.go
index 3b582bc..8580dae 100644
--- a/debugger/apiv2/doc.go
+++ b/debugger/apiv2/doc.go
@@ -26,7 +26,11 @@
 package debugger // import "cloud.google.com/go/debugger/apiv2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -48,3 +52,42 @@
 		"https://www.googleapis.com/auth/cloud_debugger",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/debugger/apiv2/mock_test.go b/debugger/apiv2/mock_test.go
index f184c69..022a4d0 100644
--- a/debugger/apiv2/mock_test.go
+++ b/debugger/apiv2/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/dialogflow/apiv2/agents_client.go b/dialogflow/apiv2/agents_client.go
index 3238b45..a6f7250 100644
--- a/dialogflow/apiv2/agents_client.go
+++ b/dialogflow/apiv2/agents_client.go
@@ -17,16 +17,15 @@
 package dialogflow
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	structpbpb "github.com/golang/protobuf/ptypes/struct"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -169,8 +168,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *AgentsClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dialogflow/apiv2/agents_client_example_test.go b/dialogflow/apiv2/agents_client_example_test.go
index 92c18f5..88604bc 100644
--- a/dialogflow/apiv2/agents_client_example_test.go
+++ b/dialogflow/apiv2/agents_client_example_test.go
@@ -17,8 +17,9 @@
 package dialogflow_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dialogflow/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dialogflowpb "google.golang.org/genproto/googleapis/cloud/dialogflow/v2"
 )
diff --git a/dialogflow/apiv2/contexts_client.go b/dialogflow/apiv2/contexts_client.go
index 7782c60..6d016ee 100644
--- a/dialogflow/apiv2/contexts_client.go
+++ b/dialogflow/apiv2/contexts_client.go
@@ -17,13 +17,12 @@
 package dialogflow
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -141,8 +140,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ContextsClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dialogflow/apiv2/contexts_client_example_test.go b/dialogflow/apiv2/contexts_client_example_test.go
index 75adedb..7085a08 100644
--- a/dialogflow/apiv2/contexts_client_example_test.go
+++ b/dialogflow/apiv2/contexts_client_example_test.go
@@ -17,8 +17,9 @@
 package dialogflow_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dialogflow/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dialogflowpb "google.golang.org/genproto/googleapis/cloud/dialogflow/v2"
 )
diff --git a/dialogflow/apiv2/doc.go b/dialogflow/apiv2/doc.go
index 0a2c071..1bebdb0 100644
--- a/dialogflow/apiv2/doc.go
+++ b/dialogflow/apiv2/doc.go
@@ -24,7 +24,11 @@
 package dialogflow // import "cloud.google.com/go/dialogflow/apiv2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -45,3 +49,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/dialogflow/apiv2/entity_types_client.go b/dialogflow/apiv2/entity_types_client.go
index f5342be..2536b54 100644
--- a/dialogflow/apiv2/entity_types_client.go
+++ b/dialogflow/apiv2/entity_types_client.go
@@ -17,16 +17,15 @@
 package dialogflow
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	structpbpb "github.com/golang/protobuf/ptypes/struct"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -179,8 +178,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *EntityTypesClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dialogflow/apiv2/entity_types_client_example_test.go b/dialogflow/apiv2/entity_types_client_example_test.go
index e5580d9..0fc5a51 100644
--- a/dialogflow/apiv2/entity_types_client_example_test.go
+++ b/dialogflow/apiv2/entity_types_client_example_test.go
@@ -17,8 +17,9 @@
 package dialogflow_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dialogflow/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dialogflowpb "google.golang.org/genproto/googleapis/cloud/dialogflow/v2"
 )
diff --git a/dialogflow/apiv2/intents_client.go b/dialogflow/apiv2/intents_client.go
index d0b7f16..73f5ed3 100644
--- a/dialogflow/apiv2/intents_client.go
+++ b/dialogflow/apiv2/intents_client.go
@@ -17,16 +17,15 @@
 package dialogflow
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	structpbpb "github.com/golang/protobuf/ptypes/struct"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -177,8 +176,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *IntentsClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dialogflow/apiv2/intents_client_example_test.go b/dialogflow/apiv2/intents_client_example_test.go
index ba5eae6..4da1435 100644
--- a/dialogflow/apiv2/intents_client_example_test.go
+++ b/dialogflow/apiv2/intents_client_example_test.go
@@ -17,8 +17,9 @@
 package dialogflow_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dialogflow/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dialogflowpb "google.golang.org/genproto/googleapis/cloud/dialogflow/v2"
 )
diff --git a/dialogflow/apiv2/mock_test.go b/dialogflow/apiv2/mock_test.go
index aa7fba2..2d58fe9 100644
--- a/dialogflow/apiv2/mock_test.go
+++ b/dialogflow/apiv2/mock_test.go
@@ -23,6 +23,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -34,7 +35,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/dialogflow/apiv2/session_entity_types_client.go b/dialogflow/apiv2/session_entity_types_client.go
index fe46d0d..8849a85 100644
--- a/dialogflow/apiv2/session_entity_types_client.go
+++ b/dialogflow/apiv2/session_entity_types_client.go
@@ -17,13 +17,12 @@
 package dialogflow
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -134,8 +133,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *SessionEntityTypesClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dialogflow/apiv2/session_entity_types_client_example_test.go b/dialogflow/apiv2/session_entity_types_client_example_test.go
index ec06524..bedbd36 100644
--- a/dialogflow/apiv2/session_entity_types_client_example_test.go
+++ b/dialogflow/apiv2/session_entity_types_client_example_test.go
@@ -17,8 +17,9 @@
 package dialogflow_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dialogflow/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dialogflowpb "google.golang.org/genproto/googleapis/cloud/dialogflow/v2"
 )
diff --git a/dialogflow/apiv2/sessions_client.go b/dialogflow/apiv2/sessions_client.go
index 9c3368b..7485e93 100644
--- a/dialogflow/apiv2/sessions_client.go
+++ b/dialogflow/apiv2/sessions_client.go
@@ -17,9 +17,9 @@
 package dialogflow
 
 import (
-	"cloud.google.com/go/internal/version"
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	dialogflowpb "google.golang.org/genproto/googleapis/cloud/dialogflow/v2"
@@ -101,8 +101,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *SessionsClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dialogflow/apiv2/sessions_client_example_test.go b/dialogflow/apiv2/sessions_client_example_test.go
index 3f57474..4ee1eb7 100644
--- a/dialogflow/apiv2/sessions_client_example_test.go
+++ b/dialogflow/apiv2/sessions_client_example_test.go
@@ -17,10 +17,10 @@
 package dialogflow_test
 
 import (
+	"context"
 	"io"
 
 	"cloud.google.com/go/dialogflow/apiv2"
-	"golang.org/x/net/context"
 	dialogflowpb "google.golang.org/genproto/googleapis/cloud/dialogflow/v2"
 )
 
diff --git a/dlp/apiv2/dlp_client.go b/dlp/apiv2/dlp_client.go
index 713a1ab..359daa5 100644
--- a/dlp/apiv2/dlp_client.go
+++ b/dlp/apiv2/dlp_client.go
@@ -17,13 +17,12 @@
 package dlp
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -181,8 +180,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/dlp/apiv2/dlp_client_example_test.go b/dlp/apiv2/dlp_client_example_test.go
index a422b9b..5bac658 100644
--- a/dlp/apiv2/dlp_client_example_test.go
+++ b/dlp/apiv2/dlp_client_example_test.go
@@ -17,8 +17,9 @@
 package dlp_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/dlp/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	dlppb "google.golang.org/genproto/googleapis/privacy/dlp/v2"
 )
diff --git a/dlp/apiv2/doc.go b/dlp/apiv2/doc.go
index e8d51df..07fafe6 100644
--- a/dlp/apiv2/doc.go
+++ b/dlp/apiv2/doc.go
@@ -24,7 +24,11 @@
 package dlp // import "cloud.google.com/go/dlp/apiv2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -45,3 +49,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/dlp/apiv2/mock_test.go b/dlp/apiv2/mock_test.go
index a65e011..2eed9e2 100644
--- a/dlp/apiv2/mock_test.go
+++ b/dlp/apiv2/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/errorreporting/apiv1beta1/ReportErrorEvent_smoke_test.go b/errorreporting/apiv1beta1/ReportErrorEvent_smoke_test.go
index 4aadfbd..3470a2f 100644
--- a/errorreporting/apiv1beta1/ReportErrorEvent_smoke_test.go
+++ b/errorreporting/apiv1beta1/ReportErrorEvent_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/errorreporting/apiv1beta1/doc.go b/errorreporting/apiv1beta1/doc.go
index b78e1e3..fe131f1 100644
--- a/errorreporting/apiv1beta1/doc.go
+++ b/errorreporting/apiv1beta1/doc.go
@@ -27,7 +27,11 @@
 package errorreporting // import "cloud.google.com/go/errorreporting/apiv1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -48,3 +52,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/errorreporting/apiv1beta1/error_group_client.go b/errorreporting/apiv1beta1/error_group_client.go
index a97c398..d4d360a 100644
--- a/errorreporting/apiv1beta1/error_group_client.go
+++ b/errorreporting/apiv1beta1/error_group_client.go
@@ -17,11 +17,10 @@
 package errorreporting
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	clouderrorreportingpb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
@@ -114,8 +113,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ErrorGroupClient) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/errorreporting/apiv1beta1/error_group_client_example_test.go b/errorreporting/apiv1beta1/error_group_client_example_test.go
index b846a1e..42a0eb3 100644
--- a/errorreporting/apiv1beta1/error_group_client_example_test.go
+++ b/errorreporting/apiv1beta1/error_group_client_example_test.go
@@ -17,8 +17,9 @@
 package errorreporting_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/errorreporting/apiv1beta1"
-	"golang.org/x/net/context"
 	clouderrorreportingpb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
 )
 
diff --git a/errorreporting/apiv1beta1/error_stats_client.go b/errorreporting/apiv1beta1/error_stats_client.go
index a6e5141..52c06b5 100644
--- a/errorreporting/apiv1beta1/error_stats_client.go
+++ b/errorreporting/apiv1beta1/error_stats_client.go
@@ -17,13 +17,12 @@
 package errorreporting
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -120,8 +119,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ErrorStatsClient) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/errorreporting/apiv1beta1/error_stats_client_example_test.go b/errorreporting/apiv1beta1/error_stats_client_example_test.go
index 6f1858c..29c0bce 100644
--- a/errorreporting/apiv1beta1/error_stats_client_example_test.go
+++ b/errorreporting/apiv1beta1/error_stats_client_example_test.go
@@ -17,8 +17,9 @@
 package errorreporting_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/errorreporting/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	clouderrorreportingpb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
 )
diff --git a/errorreporting/apiv1beta1/mock_test.go b/errorreporting/apiv1beta1/mock_test.go
index 870dc22..75f5cb8 100644
--- a/errorreporting/apiv1beta1/mock_test.go
+++ b/errorreporting/apiv1beta1/mock_test.go
@@ -21,6 +21,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -32,7 +33,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/errorreporting/apiv1beta1/report_errors_client.go b/errorreporting/apiv1beta1/report_errors_client.go
index 43a916d..fa16976 100644
--- a/errorreporting/apiv1beta1/report_errors_client.go
+++ b/errorreporting/apiv1beta1/report_errors_client.go
@@ -17,9 +17,9 @@
 package errorreporting
 
 import (
-	"cloud.google.com/go/internal/version"
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	clouderrorreportingpb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
@@ -96,8 +96,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ReportErrorsClient) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/errorreporting/apiv1beta1/report_errors_client_example_test.go b/errorreporting/apiv1beta1/report_errors_client_example_test.go
index 999ad8c..80f4392 100644
--- a/errorreporting/apiv1beta1/report_errors_client_example_test.go
+++ b/errorreporting/apiv1beta1/report_errors_client_example_test.go
@@ -17,8 +17,9 @@
 package errorreporting_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/errorreporting/apiv1beta1"
-	"golang.org/x/net/context"
 	clouderrorreportingpb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
 )
 
diff --git a/errorreporting/errors.go b/errorreporting/errors.go
index d522895..48d259a 100644
--- a/errorreporting/errors.go
+++ b/errorreporting/errors.go
@@ -27,11 +27,12 @@
 	"runtime"
 	"time"
 
+	"context"
+
 	vkit "cloud.google.com/go/errorreporting/apiv1beta1"
 	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/ptypes"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/support/bundler"
 	pb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
diff --git a/errorreporting/errors_test.go b/errorreporting/errors_test.go
index cb6f7ea..26b4222 100644
--- a/errorreporting/errors_test.go
+++ b/errorreporting/errors_test.go
@@ -20,9 +20,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	pb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
 )
diff --git a/errorreporting/example_test.go b/errorreporting/example_test.go
index 0926bd2..9a4f0c5 100644
--- a/errorreporting/example_test.go
+++ b/errorreporting/example_test.go
@@ -18,8 +18,9 @@
 	"errors"
 	"log"
 
+	"context"
+
 	"cloud.google.com/go/errorreporting"
-	"golang.org/x/net/context"
 )
 
 func Example() {
diff --git a/examples_test.go b/examples_test.go
index 9737f8a..34c5e3b 100644
--- a/examples_test.go
+++ b/examples_test.go
@@ -17,8 +17,9 @@
 import (
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/bigquery"
-	"golang.org/x/net/context"
 )
 
 // To set a timeout for an RPC, use context.WithTimeout.
diff --git a/expr/apiv1alpha1/cel_client.go b/expr/apiv1alpha1/cel_client.go
index f868f9c..fedeccb 100644
--- a/expr/apiv1alpha1/cel_client.go
+++ b/expr/apiv1alpha1/cel_client.go
@@ -17,9 +17,9 @@
 package expr
 
 import (
-	"cloud.google.com/go/internal/version"
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	exprpb "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
@@ -104,8 +104,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *CelClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/expr/apiv1alpha1/cel_client_example_test.go b/expr/apiv1alpha1/cel_client_example_test.go
index e1ade5e..9d97ba9 100644
--- a/expr/apiv1alpha1/cel_client_example_test.go
+++ b/expr/apiv1alpha1/cel_client_example_test.go
@@ -17,8 +17,9 @@
 package expr_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/expr/apiv1alpha1"
-	"golang.org/x/net/context"
 	exprpb "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
 )
 
diff --git a/expr/apiv1alpha1/conformance_client.go b/expr/apiv1alpha1/conformance_client.go
index a3e52db..05acb82 100644
--- a/expr/apiv1alpha1/conformance_client.go
+++ b/expr/apiv1alpha1/conformance_client.go
@@ -17,9 +17,9 @@
 package expr
 
 import (
-	"cloud.google.com/go/internal/version"
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	exprpb "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
@@ -104,8 +104,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ConformanceClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/expr/apiv1alpha1/conformance_client_example_test.go b/expr/apiv1alpha1/conformance_client_example_test.go
index 898bc50..77e9667 100644
--- a/expr/apiv1alpha1/conformance_client_example_test.go
+++ b/expr/apiv1alpha1/conformance_client_example_test.go
@@ -17,8 +17,9 @@
 package expr_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/expr/apiv1alpha1"
-	"golang.org/x/net/context"
 	exprpb "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
 )
 
diff --git a/expr/apiv1alpha1/doc.go b/expr/apiv1alpha1/doc.go
index 465e432..e70f048 100644
--- a/expr/apiv1alpha1/doc.go
+++ b/expr/apiv1alpha1/doc.go
@@ -23,7 +23,11 @@
 package expr // import "cloud.google.com/go/expr/apiv1alpha1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -42,3 +46,42 @@
 func DefaultAuthScopes() []string {
 	return []string{}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/expr/apiv1alpha1/mock_test.go b/expr/apiv1alpha1/mock_test.go
index e0da6b8..6b402ae 100644
--- a/expr/apiv1alpha1/mock_test.go
+++ b/expr/apiv1alpha1/mock_test.go
@@ -21,6 +21,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -32,7 +33,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/firestore/apiv1beta1/doc.go b/firestore/apiv1beta1/doc.go
index 3494e35..25a867a 100644
--- a/firestore/apiv1beta1/doc.go
+++ b/firestore/apiv1beta1/doc.go
@@ -24,7 +24,11 @@
 package firestore // import "cloud.google.com/go/firestore/apiv1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -46,3 +50,42 @@
 		"https://www.googleapis.com/auth/datastore",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/firestore/apiv1beta1/firestore_client.go b/firestore/apiv1beta1/firestore_client.go
index aee52e9..df307b8 100644
--- a/firestore/apiv1beta1/firestore_client.go
+++ b/firestore/apiv1beta1/firestore_client.go
@@ -17,13 +17,12 @@
 package firestore
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -169,8 +168,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/firestore/apiv1beta1/firestore_client_example_test.go b/firestore/apiv1beta1/firestore_client_example_test.go
index 85b7db7..d4d9804 100644
--- a/firestore/apiv1beta1/firestore_client_example_test.go
+++ b/firestore/apiv1beta1/firestore_client_example_test.go
@@ -17,10 +17,10 @@
 package firestore_test
 
 import (
+	"context"
 	"io"
 
 	"cloud.google.com/go/firestore/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	firestorepb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 )
diff --git a/firestore/apiv1beta1/mock_test.go b/firestore/apiv1beta1/mock_test.go
index 71391ba..e0fd829 100644
--- a/firestore/apiv1beta1/mock_test.go
+++ b/firestore/apiv1beta1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/firestore/client.go b/firestore/client.go
index 41af7b6..52fc760 100644
--- a/firestore/client.go
+++ b/firestore/client.go
@@ -21,11 +21,12 @@
 	"strings"
 	"time"
 
+	"context"
+
 	vkit "cloud.google.com/go/firestore/apiv1beta1"
 	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/ptypes"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
diff --git a/firestore/client_test.go b/firestore/client_test.go
index b6e50f6..5dd96b4 100644
--- a/firestore/client_test.go
+++ b/firestore/client_test.go
@@ -17,8 +17,9 @@
 import (
 	"testing"
 
+	"context"
+
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/firestore/collref.go b/firestore/collref.go
index c2e2f5c..2f1fd04 100644
--- a/firestore/collref.go
+++ b/firestore/collref.go
@@ -20,7 +20,7 @@
 	"sync"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
 )
 
 // A CollectionRef is a reference to Firestore collection.
diff --git a/firestore/collref_test.go b/firestore/collref_test.go
index a29d366..65ac519 100644
--- a/firestore/collref_test.go
+++ b/firestore/collref_test.go
@@ -17,8 +17,9 @@
 import (
 	"testing"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 )
 
diff --git a/firestore/conformance_test.go b/firestore/conformance_test.go
index afb6df5..28a2aa6 100644
--- a/firestore/conformance_test.go
+++ b/firestore/conformance_test.go
@@ -28,12 +28,13 @@
 	"testing"
 	"time"
 
+	"context"
+
 	pb "cloud.google.com/go/firestore/genproto"
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
 	ts "github.com/golang/protobuf/ptypes/timestamp"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	fspb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 )
diff --git a/firestore/docref.go b/firestore/docref.go
index 1620211..b6a80dd 100644
--- a/firestore/docref.go
+++ b/firestore/docref.go
@@ -21,8 +21,9 @@
 	"reflect"
 	"sort"
 
+	"context"
+
 	vkit "cloud.google.com/go/firestore/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/grpc/codes"
diff --git a/firestore/docref_test.go b/firestore/docref_test.go
index 5cb6e12..2d7a6af 100644
--- a/firestore/docref_test.go
+++ b/firestore/docref_test.go
@@ -20,7 +20,8 @@
 	"testing"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/genproto/googleapis/type/latlng"
 	"google.golang.org/grpc"
diff --git a/firestore/examples_test.go b/firestore/examples_test.go
index e7a6e5d..bb05a39 100644
--- a/firestore/examples_test.go
+++ b/firestore/examples_test.go
@@ -19,8 +19,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/firestore"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/firestore/integration_test.go b/firestore/integration_test.go
index 00432b8..5e684c8 100644
--- a/firestore/integration_test.go
+++ b/firestore/integration_test.go
@@ -27,12 +27,13 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/pretty"
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/internal/uid"
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/genproto/googleapis/type/latlng"
 	"google.golang.org/grpc"
diff --git a/firestore/internal/doc-snippets.go b/firestore/internal/doc-snippets.go
index c2d15a5..daa573c 100644
--- a/firestore/internal/doc-snippets.go
+++ b/firestore/internal/doc-snippets.go
@@ -19,8 +19,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	firestore "cloud.google.com/go/firestore"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/firestore/list_documents.go b/firestore/list_documents.go
index 5ba70fd..f056d77 100644
--- a/firestore/list_documents.go
+++ b/firestore/list_documents.go
@@ -15,8 +15,9 @@
 package firestore
 
 import (
+	"context"
+
 	vkit "cloud.google.com/go/firestore/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 )
diff --git a/firestore/mock_test.go b/firestore/mock_test.go
index c3ee4cb..cd8a35d 100644
--- a/firestore/mock_test.go
+++ b/firestore/mock_test.go
@@ -21,10 +21,11 @@
 	"sort"
 	"strings"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes/empty"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/firestore/query.go b/firestore/query.go
index 32a6b23..d7df333 100644
--- a/firestore/query.go
+++ b/firestore/query.go
@@ -22,9 +22,10 @@
 	"reflect"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/btree"
 	"github.com/golang/protobuf/ptypes/wrappers"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 )
diff --git a/firestore/query_test.go b/firestore/query_test.go
index 411ce80..b76705f 100644
--- a/firestore/query_test.go
+++ b/firestore/query_test.go
@@ -19,10 +19,11 @@
 	"sort"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/pretty"
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
 	"github.com/golang/protobuf/ptypes/wrappers"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 )
 
diff --git a/firestore/transaction.go b/firestore/transaction.go
index e273799..59ea785 100644
--- a/firestore/transaction.go
+++ b/firestore/transaction.go
@@ -17,8 +17,9 @@
 import (
 	"errors"
 
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/firestore/transaction_test.go b/firestore/transaction_test.go
index 65d4b31..baa11c8 100644
--- a/firestore/transaction_test.go
+++ b/firestore/transaction_test.go
@@ -17,8 +17,9 @@
 import (
 	"testing"
 
+	"context"
+
 	"github.com/golang/protobuf/ptypes/empty"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/grpc"
diff --git a/firestore/util_test.go b/firestore/util_test.go
index bc90c16..497ed69 100644
--- a/firestore/util_test.go
+++ b/firestore/util_test.go
@@ -19,12 +19,13 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/ptypes"
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/genproto/googleapis/type/latlng"
diff --git a/firestore/watch.go b/firestore/watch.go
index d185760..c9e1623 100644
--- a/firestore/watch.go
+++ b/firestore/watch.go
@@ -22,10 +22,11 @@
 	"sort"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/btree"
 	"github.com/golang/protobuf/ptypes"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/firestore/watch_test.go b/firestore/watch_test.go
index 2bc1b15..57861c2 100644
--- a/firestore/watch_test.go
+++ b/firestore/watch_test.go
@@ -19,10 +19,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/btree"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/firestore/writebatch.go b/firestore/writebatch.go
index aec86b3..2af5fac 100644
--- a/firestore/writebatch.go
+++ b/firestore/writebatch.go
@@ -17,7 +17,8 @@
 import (
 	"errors"
 
-	"golang.org/x/net/context"
+	"context"
+
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 )
 
diff --git a/firestore/writebatch_test.go b/firestore/writebatch_test.go
index 4305f49..d9b2b99 100644
--- a/firestore/writebatch_test.go
+++ b/firestore/writebatch_test.go
@@ -17,7 +17,8 @@
 import (
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
+
 	pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
 )
 
diff --git a/functions/metadata/metadata.go b/functions/metadata/metadata.go
index 8f40169..3d052ac 100644
--- a/functions/metadata/metadata.go
+++ b/functions/metadata/metadata.go
@@ -19,7 +19,7 @@
 import (
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
 )
 
 type contextKey struct{}
diff --git a/functions/metadata/metadata_test.go b/functions/metadata/metadata_test.go
index 65b3cec..54dc3dc 100644
--- a/functions/metadata/metadata_test.go
+++ b/functions/metadata/metadata_test.go
@@ -17,7 +17,7 @@
 import (
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
 )
 
 func TestMetadata(t *testing.T) {
diff --git a/httpreplay/cmd/httpr/integration_test.go b/httpreplay/cmd/httpr/integration_test.go
index af46f42..7bcf8ba 100644
--- a/httpreplay/cmd/httpr/integration_test.go
+++ b/httpreplay/cmd/httpr/integration_test.go
@@ -31,9 +31,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/storage"
-	"golang.org/x/net/context"
 	"golang.org/x/oauth2"
 	"google.golang.org/api/option"
 )
diff --git a/httpreplay/httpreplay.go b/httpreplay/httpreplay.go
index 14fa1a7..4771e62 100644
--- a/httpreplay/httpreplay.go
+++ b/httpreplay/httpreplay.go
@@ -38,8 +38,9 @@
 import (
 	"net/http"
 
+	"context"
+
 	"cloud.google.com/go/httpreplay/internal/proxy"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	htransport "google.golang.org/api/transport/http"
 )
diff --git a/httpreplay/httpreplay_not18.go b/httpreplay/httpreplay_not18.go
index f8bf908..bca74e8 100644
--- a/httpreplay/httpreplay_not18.go
+++ b/httpreplay/httpreplay_not18.go
@@ -21,7 +21,8 @@
 import (
 	"net/http"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/option"
 )
 
diff --git a/httpreplay/httpreplay_test.go b/httpreplay/httpreplay_test.go
index a413ed4..abb0daa 100644
--- a/httpreplay/httpreplay_test.go
+++ b/httpreplay/httpreplay_test.go
@@ -25,10 +25,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/httpreplay"
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/storage"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 )
 
diff --git a/iam/admin/apiv1/doc.go b/iam/admin/apiv1/doc.go
index 10cfdf3..39d7c91 100644
--- a/iam/admin/apiv1/doc.go
+++ b/iam/admin/apiv1/doc.go
@@ -25,7 +25,11 @@
 package admin // import "cloud.google.com/go/iam/admin/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -47,3 +51,42 @@
 		"https://www.googleapis.com/auth/iam",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/iam/admin/apiv1/iam_client.go b/iam/admin/apiv1/iam_client.go
index 84c3e6a..68622f6 100644
--- a/iam/admin/apiv1/iam_client.go
+++ b/iam/admin/apiv1/iam_client.go
@@ -17,13 +17,12 @@
 package admin
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -159,8 +158,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *IamClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/iam/admin/apiv1/iam_client_example_test.go b/iam/admin/apiv1/iam_client_example_test.go
index c9ead18..77e95b1 100644
--- a/iam/admin/apiv1/iam_client_example_test.go
+++ b/iam/admin/apiv1/iam_client_example_test.go
@@ -17,8 +17,9 @@
 package admin_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/iam/admin/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	adminpb "google.golang.org/genproto/googleapis/iam/admin/v1"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
diff --git a/iam/admin/apiv1/mock_test.go b/iam/admin/apiv1/mock_test.go
index d4f5ef7..5851b1e 100644
--- a/iam/admin/apiv1/mock_test.go
+++ b/iam/admin/apiv1/mock_test.go
@@ -23,6 +23,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -34,7 +35,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/iam/admin/apiv1/policy_methods.go b/iam/admin/apiv1/policy_methods.go
index fe31df1..d61abb7 100644
--- a/iam/admin/apiv1/policy_methods.go
+++ b/iam/admin/apiv1/policy_methods.go
@@ -18,8 +18,9 @@
 package admin
 
 import (
+	"context"
+
 	"cloud.google.com/go/iam"
-	"golang.org/x/net/context"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
 )
 
diff --git a/iam/credentials/apiv1/doc.go b/iam/credentials/apiv1/doc.go
index c7611fa..4e7435c 100644
--- a/iam/credentials/apiv1/doc.go
+++ b/iam/credentials/apiv1/doc.go
@@ -23,7 +23,11 @@
 package credentials // import "cloud.google.com/go/iam/credentials/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/iam/credentials/apiv1/iam_credentials_client.go b/iam/credentials/apiv1/iam_credentials_client.go
index ca79ad1..897d151 100644
--- a/iam/credentials/apiv1/iam_credentials_client.go
+++ b/iam/credentials/apiv1/iam_credentials_client.go
@@ -17,11 +17,10 @@
 package credentials
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	credentialspb "google.golang.org/genproto/googleapis/iam/credentials/v1"
@@ -128,8 +127,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *IamCredentialsClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/iam/credentials/apiv1/iam_credentials_client_example_test.go b/iam/credentials/apiv1/iam_credentials_client_example_test.go
index 4d99daa..221b3fa 100644
--- a/iam/credentials/apiv1/iam_credentials_client_example_test.go
+++ b/iam/credentials/apiv1/iam_credentials_client_example_test.go
@@ -17,8 +17,9 @@
 package credentials_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/iam/credentials/apiv1"
-	"golang.org/x/net/context"
 	credentialspb "google.golang.org/genproto/googleapis/iam/credentials/v1"
 )
 
diff --git a/iam/credentials/apiv1/mock_test.go b/iam/credentials/apiv1/mock_test.go
index 635412b..14d81ae 100644
--- a/iam/credentials/apiv1/mock_test.go
+++ b/iam/credentials/apiv1/mock_test.go
@@ -21,6 +21,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -32,7 +33,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/iam/iam.go b/iam/iam.go
index 87d468a..a08e8c9 100644
--- a/iam/iam.go
+++ b/iam/iam.go
@@ -24,8 +24,9 @@
 import (
 	"time"
 
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/iam/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/import_test.go b/import_test.go
deleted file mode 100644
index e8b16cd..0000000
--- a/import_test.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2017 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package cloud
-
-import (
-	"go/parser"
-	"go/token"
-	"os"
-	"path/filepath"
-	"strconv"
-	"testing"
-)
-
-func TestContextImport(t *testing.T) {
-	t.Parallel()
-
-	whiteList := map[string]bool{
-		"storage/go17.go": true,
-	}
-
-	err := filepath.Walk(".", func(path string, fi os.FileInfo, err error) error {
-		if err != nil {
-			return err
-		}
-		if filepath.Ext(path) != ".go" || whiteList[path] {
-			return nil
-		}
-
-		fset := token.NewFileSet()
-		file, err := parser.ParseFile(fset, path, nil, parser.ImportsOnly)
-		if err != nil {
-			return err
-		}
-
-		for _, imp := range file.Imports {
-			impPath, err := strconv.Unquote(imp.Path.Value)
-			if err != nil {
-				return err
-			}
-			if impPath == "context" {
-				t.Errorf(`file %q import "context", want "golang.org/x/net/context"`, path)
-			}
-		}
-		return nil
-	})
-	if err != nil {
-		t.Fatal(err)
-	}
-}
diff --git a/internal/retry.go b/internal/retry.go
index ce3525b..eb233da 100644
--- a/internal/retry.go
+++ b/internal/retry.go
@@ -17,8 +17,9 @@
 import (
 	"time"
 
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 )
 
 // Retry calls the supplied function f repeatedly according to the provided
diff --git a/internal/retry_test.go b/internal/retry_test.go
index b1945f1..c8464b2 100644
--- a/internal/retry_test.go
+++ b/internal/retry_test.go
@@ -20,8 +20,9 @@
 	"testing"
 	"time"
 
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/internal/testutil/context.go b/internal/testutil/context.go
index 136cf48..2073a01 100644
--- a/internal/testutil/context.go
+++ b/internal/testutil/context.go
@@ -21,7 +21,8 @@
 	"log"
 	"os"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"golang.org/x/oauth2"
 	"golang.org/x/oauth2/google"
 	"golang.org/x/oauth2/jwt"
diff --git a/internal/trace/go18.go b/internal/trace/go18.go
index db28698..3a100a3 100644
--- a/internal/trace/go18.go
+++ b/internal/trace/go18.go
@@ -17,8 +17,9 @@
 package trace
 
 import (
+	"context"
+
 	"go.opencensus.io/trace"
-	"golang.org/x/net/context"
 	"google.golang.org/api/googleapi"
 	"google.golang.org/genproto/googleapis/rpc/code"
 	"google.golang.org/grpc/status"
diff --git a/internal/trace/not_go18.go b/internal/trace/not_go18.go
index c893ed5..7e681b6 100644
--- a/internal/trace/not_go18.go
+++ b/internal/trace/not_go18.go
@@ -17,7 +17,7 @@
 package trace
 
 import (
-	"golang.org/x/net/context"
+	"context"
 )
 
 // OpenCensus only supports go 1.8 and higher.
diff --git a/kms/apiv1/doc.go b/kms/apiv1/doc.go
index a935277..edb12f3 100644
--- a/kms/apiv1/doc.go
+++ b/kms/apiv1/doc.go
@@ -23,7 +23,11 @@
 package kms // import "cloud.google.com/go/kms/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/kms/apiv1/key_management_client.go b/kms/apiv1/key_management_client.go
index 95622ef..a7a8b9e 100644
--- a/kms/apiv1/key_management_client.go
+++ b/kms/apiv1/key_management_client.go
@@ -17,14 +17,13 @@
 package kms
 
 import (
+	"context"
 	"fmt"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -164,8 +163,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *KeyManagementClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/kms/apiv1/key_management_client_example_test.go b/kms/apiv1/key_management_client_example_test.go
index b76d11e..842e9da 100644
--- a/kms/apiv1/key_management_client_example_test.go
+++ b/kms/apiv1/key_management_client_example_test.go
@@ -17,8 +17,9 @@
 package kms_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/kms/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	kmspb "google.golang.org/genproto/googleapis/cloud/kms/v1"
 )
diff --git a/kms/apiv1/mock_test.go b/kms/apiv1/mock_test.go
index 3326db0..6fd7988 100644
--- a/kms/apiv1/mock_test.go
+++ b/kms/apiv1/mock_test.go
@@ -25,6 +25,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -36,7 +37,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/language/apiv1/AnalyzeSentiment_smoke_test.go b/language/apiv1/AnalyzeSentiment_smoke_test.go
index 1233913..9a57ee9 100644
--- a/language/apiv1/AnalyzeSentiment_smoke_test.go
+++ b/language/apiv1/AnalyzeSentiment_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/language/apiv1/doc.go b/language/apiv1/doc.go
index 7685ff3..eb394e0 100644
--- a/language/apiv1/doc.go
+++ b/language/apiv1/doc.go
@@ -24,7 +24,11 @@
 package language // import "cloud.google.com/go/language/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -45,3 +49,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/language/apiv1/language_client.go b/language/apiv1/language_client.go
index 4086962..51627d9 100644
--- a/language/apiv1/language_client.go
+++ b/language/apiv1/language_client.go
@@ -17,11 +17,10 @@
 package language
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	languagepb "google.golang.org/genproto/googleapis/cloud/language/v1"
@@ -123,8 +122,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/language/apiv1/language_client_example_test.go b/language/apiv1/language_client_example_test.go
index 893d203..aa4dd53 100644
--- a/language/apiv1/language_client_example_test.go
+++ b/language/apiv1/language_client_example_test.go
@@ -17,8 +17,9 @@
 package language_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/language/apiv1"
-	"golang.org/x/net/context"
 	languagepb "google.golang.org/genproto/googleapis/cloud/language/v1"
 )
 
diff --git a/language/apiv1/mock_test.go b/language/apiv1/mock_test.go
index c046858..eaeb0c3 100644
--- a/language/apiv1/mock_test.go
+++ b/language/apiv1/mock_test.go
@@ -21,6 +21,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -32,7 +33,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/language/apiv1beta2/AnalyzeSentiment_smoke_test.go b/language/apiv1beta2/AnalyzeSentiment_smoke_test.go
index 7c2b1bd..c0db4ce 100644
--- a/language/apiv1beta2/AnalyzeSentiment_smoke_test.go
+++ b/language/apiv1beta2/AnalyzeSentiment_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/language/apiv1beta2/doc.go b/language/apiv1beta2/doc.go
index b6802e7..9f7387d 100644
--- a/language/apiv1beta2/doc.go
+++ b/language/apiv1beta2/doc.go
@@ -25,7 +25,11 @@
 package language // import "cloud.google.com/go/language/apiv1beta2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -46,3 +50,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/language/apiv1beta2/language_client.go b/language/apiv1beta2/language_client.go
index 695d6cb..19eeae3 100644
--- a/language/apiv1beta2/language_client.go
+++ b/language/apiv1beta2/language_client.go
@@ -17,11 +17,10 @@
 package language
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	languagepb "google.golang.org/genproto/googleapis/cloud/language/v1beta2"
@@ -123,8 +122,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/language/apiv1beta2/language_client_example_test.go b/language/apiv1beta2/language_client_example_test.go
index d427900..00f2844 100644
--- a/language/apiv1beta2/language_client_example_test.go
+++ b/language/apiv1beta2/language_client_example_test.go
@@ -17,8 +17,9 @@
 package language_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/language/apiv1beta2"
-	"golang.org/x/net/context"
 	languagepb "google.golang.org/genproto/googleapis/cloud/language/v1beta2"
 )
 
diff --git a/language/apiv1beta2/mock_test.go b/language/apiv1beta2/mock_test.go
index c6974ae..20ae212 100644
--- a/language/apiv1beta2/mock_test.go
+++ b/language/apiv1beta2/mock_test.go
@@ -21,6 +21,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -32,7 +33,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/logging/apiv2/WriteLogEntries_smoke_test.go b/logging/apiv2/WriteLogEntries_smoke_test.go
index 08d675a..771d6c3 100644
--- a/logging/apiv2/WriteLogEntries_smoke_test.go
+++ b/logging/apiv2/WriteLogEntries_smoke_test.go
@@ -26,8 +26,9 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/logging/apiv2/config_client.go b/logging/apiv2/config_client.go
index d3a2dfa..b711c0a 100644
--- a/logging/apiv2/config_client.go
+++ b/logging/apiv2/config_client.go
@@ -17,13 +17,12 @@
 package logging
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -135,8 +134,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ConfigClient) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/logging/apiv2/config_client_example_test.go b/logging/apiv2/config_client_example_test.go
index a7a36dc..19ee32a 100644
--- a/logging/apiv2/config_client_example_test.go
+++ b/logging/apiv2/config_client_example_test.go
@@ -17,8 +17,9 @@
 package logging_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/logging/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
 )
diff --git a/logging/apiv2/doc.go b/logging/apiv2/doc.go
index ca4bc1e..530c39f 100644
--- a/logging/apiv2/doc.go
+++ b/logging/apiv2/doc.go
@@ -25,7 +25,11 @@
 package logging // import "cloud.google.com/go/logging/apiv2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -50,3 +54,42 @@
 		"https://www.googleapis.com/auth/logging.write",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/logging/apiv2/logging_client.go b/logging/apiv2/logging_client.go
index b0fb976..39588c7 100644
--- a/logging/apiv2/logging_client.go
+++ b/logging/apiv2/logging_client.go
@@ -17,13 +17,12 @@
 package logging
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -125,8 +124,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/logging/apiv2/logging_client_example_test.go b/logging/apiv2/logging_client_example_test.go
index 232736d..8efa6d2 100644
--- a/logging/apiv2/logging_client_example_test.go
+++ b/logging/apiv2/logging_client_example_test.go
@@ -17,8 +17,9 @@
 package logging_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/logging/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
 )
diff --git a/logging/apiv2/metrics_client.go b/logging/apiv2/metrics_client.go
index a965dbe..7e53526 100644
--- a/logging/apiv2/metrics_client.go
+++ b/logging/apiv2/metrics_client.go
@@ -17,13 +17,12 @@
 package logging
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -124,8 +123,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *MetricsClient) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/logging/apiv2/metrics_client_example_test.go b/logging/apiv2/metrics_client_example_test.go
index d69e1e9..ca4f988 100644
--- a/logging/apiv2/metrics_client_example_test.go
+++ b/logging/apiv2/metrics_client_example_test.go
@@ -17,8 +17,9 @@
 package logging_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/logging/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
 )
diff --git a/logging/apiv2/mock_test.go b/logging/apiv2/mock_test.go
index 4af4998..aaaece4 100644
--- a/logging/apiv2/mock_test.go
+++ b/logging/apiv2/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/logging/examples_go18_test.go b/logging/examples_go18_test.go
index a678b8d..778649c 100644
--- a/logging/examples_go18_test.go
+++ b/logging/examples_go18_test.go
@@ -17,9 +17,10 @@
 package logging_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/logging"
 	"go.opencensus.io/trace"
-	"golang.org/x/net/context"
 )
 
 // This example shows how to create a Logger that disables OpenCensus tracing of the
diff --git a/logging/examples_test.go b/logging/examples_test.go
index b4bb452..2032bb2 100644
--- a/logging/examples_test.go
+++ b/logging/examples_test.go
@@ -19,8 +19,9 @@
 	"fmt"
 	"os"
 
+	"context"
+
 	"cloud.google.com/go/logging"
-	"golang.org/x/net/context"
 )
 
 func ExampleNewClient() {
diff --git a/logging/internal/testing/fake.go b/logging/internal/testing/fake.go
index 2bccb63..d3071fa 100644
--- a/logging/internal/testing/fake.go
+++ b/logging/internal/testing/fake.go
@@ -26,10 +26,11 @@
 	"sync"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	emptypb "github.com/golang/protobuf/ptypes/empty"
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
-	context "golang.org/x/net/context"
 	lpb "google.golang.org/genproto/googleapis/api/label"
 	mrpb "google.golang.org/genproto/googleapis/api/monitoredres"
 	logpb "google.golang.org/genproto/googleapis/logging/v2"
diff --git a/logging/logadmin/example_entry_iterator_test.go b/logging/logadmin/example_entry_iterator_test.go
index 7551b80..2fd1301 100644
--- a/logging/logadmin/example_entry_iterator_test.go
+++ b/logging/logadmin/example_entry_iterator_test.go
@@ -18,8 +18,9 @@
 	"fmt"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/logging/logadmin"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/logging/logadmin/example_metric_iterator_test.go b/logging/logadmin/example_metric_iterator_test.go
index 903fe0f..3be12fa 100644
--- a/logging/logadmin/example_metric_iterator_test.go
+++ b/logging/logadmin/example_metric_iterator_test.go
@@ -17,8 +17,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/logging/logadmin"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/logging/logadmin/example_paging_test.go b/logging/logadmin/example_paging_test.go
index fed6d21..ef893f0 100644
--- a/logging/logadmin/example_paging_test.go
+++ b/logging/logadmin/example_paging_test.go
@@ -22,9 +22,10 @@
 	"log"
 	"net/http"
 
+	"context"
+
 	"cloud.google.com/go/logging"
 	"cloud.google.com/go/logging/logadmin"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/logging/logadmin/example_resource_iterator_test.go b/logging/logadmin/example_resource_iterator_test.go
index 6481219..82cc8b9 100644
--- a/logging/logadmin/example_resource_iterator_test.go
+++ b/logging/logadmin/example_resource_iterator_test.go
@@ -17,8 +17,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/logging/logadmin"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/logging/logadmin/example_sink_iterator_test.go b/logging/logadmin/example_sink_iterator_test.go
index 2a0fe0b..eac085d 100644
--- a/logging/logadmin/example_sink_iterator_test.go
+++ b/logging/logadmin/example_sink_iterator_test.go
@@ -17,8 +17,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/logging/logadmin"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/logging/logadmin/examples_test.go b/logging/logadmin/examples_test.go
index 249c768..692020a 100644
--- a/logging/logadmin/examples_test.go
+++ b/logging/logadmin/examples_test.go
@@ -17,8 +17,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/logging/logadmin"
-	"golang.org/x/net/context"
 )
 
 func ExampleNewClient() {
diff --git a/logging/logadmin/logadmin.go b/logging/logadmin/logadmin.go
index cc1372f..cb59400 100644
--- a/logging/logadmin/logadmin.go
+++ b/logging/logadmin/logadmin.go
@@ -33,13 +33,14 @@
 	"strings"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/logging"
 	vkit "cloud.google.com/go/logging/apiv2"
 	"cloud.google.com/go/logging/internal"
 	"github.com/golang/protobuf/ptypes"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	_ "google.golang.org/genproto/googleapis/appengine/logging/v1" // Import the following so EntryIterator can unmarshal log protos.
diff --git a/logging/logadmin/logadmin_test.go b/logging/logadmin/logadmin_test.go
index e883f1f..a03173a 100644
--- a/logging/logadmin/logadmin_test.go
+++ b/logging/logadmin/logadmin_test.go
@@ -25,6 +25,8 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/logging"
 	ltesting "cloud.google.com/go/logging/internal/testing"
@@ -33,7 +35,6 @@
 	durpb "github.com/golang/protobuf/ptypes/duration"
 	structpb "github.com/golang/protobuf/ptypes/struct"
 	"github.com/google/go-cmp/cmp/cmpopts"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	mrpb "google.golang.org/genproto/googleapis/api/monitoredres"
 	audit "google.golang.org/genproto/googleapis/cloud/audit"
diff --git a/logging/logadmin/metrics.go b/logging/logadmin/metrics.go
index e33b145..dad854f 100644
--- a/logging/logadmin/metrics.go
+++ b/logging/logadmin/metrics.go
@@ -17,8 +17,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	vkit "cloud.google.com/go/logging/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	logpb "google.golang.org/genproto/googleapis/logging/v2"
 )
diff --git a/logging/logadmin/metrics_test.go b/logging/logadmin/metrics_test.go
index fbd433a..92f2d4f 100644
--- a/logging/logadmin/metrics_test.go
+++ b/logging/logadmin/metrics_test.go
@@ -19,9 +19,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/internal/uid"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/logging/logadmin/resources.go b/logging/logadmin/resources.go
index 32548eb..924dee1 100644
--- a/logging/logadmin/resources.go
+++ b/logging/logadmin/resources.go
@@ -15,8 +15,9 @@
 package logadmin
 
 import (
+	"context"
+
 	vkit "cloud.google.com/go/logging/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	mrpb "google.golang.org/genproto/googleapis/api/monitoredres"
 	logpb "google.golang.org/genproto/googleapis/logging/v2"
diff --git a/logging/logadmin/resources_test.go b/logging/logadmin/resources_test.go
index 62f54c3..fe45799 100644
--- a/logging/logadmin/resources_test.go
+++ b/logging/logadmin/resources_test.go
@@ -17,7 +17,8 @@
 import (
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/iterator"
 )
 
diff --git a/logging/logadmin/sinks.go b/logging/logadmin/sinks.go
index 4c55901..c4e022b 100644
--- a/logging/logadmin/sinks.go
+++ b/logging/logadmin/sinks.go
@@ -18,8 +18,9 @@
 	"errors"
 	"fmt"
 
+	"context"
+
 	vkit "cloud.google.com/go/logging/apiv2"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	logpb "google.golang.org/genproto/googleapis/logging/v2"
 	maskpb "google.golang.org/genproto/protobuf/field_mask"
diff --git a/logging/logadmin/sinks_test.go b/logging/logadmin/sinks_test.go
index e4eeb84..49f6532 100644
--- a/logging/logadmin/sinks_test.go
+++ b/logging/logadmin/sinks_test.go
@@ -23,11 +23,12 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/internal/uid"
 	ltest "cloud.google.com/go/logging/internal/testing"
 	"cloud.google.com/go/storage"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/logging/logging.go b/logging/logging.go
index d7e2d73..c349260 100644
--- a/logging/logging.go
+++ b/logging/logging.go
@@ -35,6 +35,8 @@
 	"sync"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/compute/metadata"
 	"cloud.google.com/go/internal/version"
 	vkit "cloud.google.com/go/logging/apiv2"
@@ -43,7 +45,6 @@
 	"github.com/golang/protobuf/ptypes"
 	structpb "github.com/golang/protobuf/ptypes/struct"
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/support/bundler"
 	mrpb "google.golang.org/genproto/googleapis/api/monitoredres"
diff --git a/logging/logging_test.go b/logging/logging_test.go
index 8dbb3d9..f28581b 100644
--- a/logging/logging_test.go
+++ b/logging/logging_test.go
@@ -28,6 +28,8 @@
 	"testing"
 	"time"
 
+	"context"
+
 	cinternal "cloud.google.com/go/internal"
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/internal/uid"
@@ -35,7 +37,6 @@
 	ltesting "cloud.google.com/go/logging/internal/testing"
 	"cloud.google.com/go/logging/logadmin"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"golang.org/x/oauth2"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
diff --git a/longrunning/autogen/doc.go b/longrunning/autogen/doc.go
index edb98b0..7a3503d 100644
--- a/longrunning/autogen/doc.go
+++ b/longrunning/autogen/doc.go
@@ -24,7 +24,11 @@
 package longrunning // import "cloud.google.com/go/longrunning/autogen"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -43,3 +47,42 @@
 func DefaultAuthScopes() []string {
 	return []string{}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/longrunning/autogen/mock_test.go b/longrunning/autogen/mock_test.go
index 4be9a3f..705048a 100644
--- a/longrunning/autogen/mock_test.go
+++ b/longrunning/autogen/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/longrunning/autogen/operations_client.go b/longrunning/autogen/operations_client.go
index eeb012e..ebdf6f9 100644
--- a/longrunning/autogen/operations_client.go
+++ b/longrunning/autogen/operations_client.go
@@ -17,13 +17,12 @@
 package longrunning
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -129,8 +128,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *OperationsClient) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/longrunning/autogen/operations_client_example_test.go b/longrunning/autogen/operations_client_example_test.go
index 7bde78b..1283423 100644
--- a/longrunning/autogen/operations_client_example_test.go
+++ b/longrunning/autogen/operations_client_example_test.go
@@ -17,8 +17,9 @@
 package longrunning_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/longrunning/autogen"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	longrunningpb "google.golang.org/genproto/googleapis/longrunning"
 )
diff --git a/longrunning/example_test.go b/longrunning/example_test.go
index d81b1d3..9d510af 100644
--- a/longrunning/example_test.go
+++ b/longrunning/example_test.go
@@ -18,10 +18,11 @@
 	"fmt"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/ptypes"
 	"github.com/golang/protobuf/ptypes/duration"
 	"github.com/golang/protobuf/ptypes/timestamp"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/longrunning"
 )
 
diff --git a/longrunning/longrunning.go b/longrunning/longrunning.go
index 0a0369a..b363ae6 100644
--- a/longrunning/longrunning.go
+++ b/longrunning/longrunning.go
@@ -26,11 +26,12 @@
 	"fmt"
 	"time"
 
+	"context"
+
 	autogen "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
 	"github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/longrunning"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/longrunning/longrunning_test.go b/longrunning/longrunning_test.go
index 055779e..f70c2b9 100644
--- a/longrunning/longrunning_test.go
+++ b/longrunning/longrunning_test.go
@@ -22,11 +22,12 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
 	"github.com/golang/protobuf/ptypes/duration"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/longrunning"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/monitoring/apiv3/ListMonitoredResourceDescriptors_smoke_test.go b/monitoring/apiv3/ListMonitoredResourceDescriptors_smoke_test.go
index e0cda4a..7a8e1b4 100644
--- a/monitoring/apiv3/ListMonitoredResourceDescriptors_smoke_test.go
+++ b/monitoring/apiv3/ListMonitoredResourceDescriptors_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/monitoring/apiv3/alert_policy_client.go b/monitoring/apiv3/alert_policy_client.go
index f0724b4..e333879 100644
--- a/monitoring/apiv3/alert_policy_client.go
+++ b/monitoring/apiv3/alert_policy_client.go
@@ -17,13 +17,12 @@
 package monitoring
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -131,8 +130,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *AlertPolicyClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/monitoring/apiv3/alert_policy_client_example_test.go b/monitoring/apiv3/alert_policy_client_example_test.go
index 4ddc33a..7477e38 100644
--- a/monitoring/apiv3/alert_policy_client_example_test.go
+++ b/monitoring/apiv3/alert_policy_client_example_test.go
@@ -17,8 +17,9 @@
 package monitoring_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/monitoring/apiv3"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
 )
diff --git a/monitoring/apiv3/doc.go b/monitoring/apiv3/doc.go
index dee265c..482f1b0 100644
--- a/monitoring/apiv3/doc.go
+++ b/monitoring/apiv3/doc.go
@@ -25,7 +25,11 @@
 package monitoring // import "cloud.google.com/go/monitoring/apiv3"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -49,3 +53,42 @@
 		"https://www.googleapis.com/auth/monitoring.write",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/monitoring/apiv3/group_client.go b/monitoring/apiv3/group_client.go
index 1d364c0..2e37d23 100644
--- a/monitoring/apiv3/group_client.go
+++ b/monitoring/apiv3/group_client.go
@@ -17,13 +17,12 @@
 package monitoring
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -137,8 +136,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *GroupClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/monitoring/apiv3/group_client_example_test.go b/monitoring/apiv3/group_client_example_test.go
index eaf8eee..eb51155 100644
--- a/monitoring/apiv3/group_client_example_test.go
+++ b/monitoring/apiv3/group_client_example_test.go
@@ -17,8 +17,9 @@
 package monitoring_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/monitoring/apiv3"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
 )
diff --git a/monitoring/apiv3/metric_client.go b/monitoring/apiv3/metric_client.go
index 7234d6d..029e073 100644
--- a/monitoring/apiv3/metric_client.go
+++ b/monitoring/apiv3/metric_client.go
@@ -17,13 +17,12 @@
 package monitoring
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -132,8 +131,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *MetricClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/monitoring/apiv3/metric_client_example_test.go b/monitoring/apiv3/metric_client_example_test.go
index 29de109..aa1f066 100644
--- a/monitoring/apiv3/metric_client_example_test.go
+++ b/monitoring/apiv3/metric_client_example_test.go
@@ -17,8 +17,9 @@
 package monitoring_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/monitoring/apiv3"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
 )
diff --git a/monitoring/apiv3/mock_test.go b/monitoring/apiv3/mock_test.go
index fb25a48..f493975 100644
--- a/monitoring/apiv3/mock_test.go
+++ b/monitoring/apiv3/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/monitoring/apiv3/notification_channel_client.go b/monitoring/apiv3/notification_channel_client.go
index 53bcf6b..67553dd 100644
--- a/monitoring/apiv3/notification_channel_client.go
+++ b/monitoring/apiv3/notification_channel_client.go
@@ -17,13 +17,12 @@
 package monitoring
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -128,8 +127,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *NotificationChannelClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/monitoring/apiv3/notification_channel_client_example_test.go b/monitoring/apiv3/notification_channel_client_example_test.go
index eab1179..3690937 100644
--- a/monitoring/apiv3/notification_channel_client_example_test.go
+++ b/monitoring/apiv3/notification_channel_client_example_test.go
@@ -17,8 +17,9 @@
 package monitoring_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/monitoring/apiv3"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
 )
diff --git a/monitoring/apiv3/uptime_check_client.go b/monitoring/apiv3/uptime_check_client.go
index edbb116..07a7ab8 100644
--- a/monitoring/apiv3/uptime_check_client.go
+++ b/monitoring/apiv3/uptime_check_client.go
@@ -17,13 +17,12 @@
 package monitoring
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -132,8 +131,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *UptimeCheckClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/monitoring/apiv3/uptime_check_client_example_test.go b/monitoring/apiv3/uptime_check_client_example_test.go
index 49ee0d0..6ddc382 100644
--- a/monitoring/apiv3/uptime_check_client_example_test.go
+++ b/monitoring/apiv3/uptime_check_client_example_test.go
@@ -17,8 +17,9 @@
 package monitoring_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/monitoring/apiv3"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
 )
diff --git a/oslogin/apiv1/doc.go b/oslogin/apiv1/doc.go
index d6693c1..429502a 100644
--- a/oslogin/apiv1/doc.go
+++ b/oslogin/apiv1/doc.go
@@ -23,7 +23,11 @@
 package oslogin // import "cloud.google.com/go/oslogin/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -47,3 +51,42 @@
 		"https://www.googleapis.com/auth/compute.readonly",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/oslogin/apiv1/mock_test.go b/oslogin/apiv1/mock_test.go
index da07807..705fa48 100644
--- a/oslogin/apiv1/mock_test.go
+++ b/oslogin/apiv1/mock_test.go
@@ -23,6 +23,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -34,7 +35,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/oslogin/apiv1/os_login_client.go b/oslogin/apiv1/os_login_client.go
index b25431b..ee0a09c 100644
--- a/oslogin/apiv1/os_login_client.go
+++ b/oslogin/apiv1/os_login_client.go
@@ -17,11 +17,10 @@
 package oslogin
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	commonpb "google.golang.org/genproto/googleapis/cloud/oslogin/common"
@@ -126,8 +125,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/oslogin/apiv1/os_login_client_example_test.go b/oslogin/apiv1/os_login_client_example_test.go
index ae5da59..6f80959 100644
--- a/oslogin/apiv1/os_login_client_example_test.go
+++ b/oslogin/apiv1/os_login_client_example_test.go
@@ -17,8 +17,9 @@
 package oslogin_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/oslogin/apiv1"
-	"golang.org/x/net/context"
 	osloginpb "google.golang.org/genproto/googleapis/cloud/oslogin/v1"
 )
 
diff --git a/oslogin/apiv1beta/doc.go b/oslogin/apiv1beta/doc.go
index 7d98972..29420d5 100644
--- a/oslogin/apiv1beta/doc.go
+++ b/oslogin/apiv1beta/doc.go
@@ -23,7 +23,11 @@
 package oslogin // import "cloud.google.com/go/oslogin/apiv1beta"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -47,3 +51,42 @@
 		"https://www.googleapis.com/auth/compute.readonly",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/oslogin/apiv1beta/mock_test.go b/oslogin/apiv1beta/mock_test.go
index 4239356..e371929 100644
--- a/oslogin/apiv1beta/mock_test.go
+++ b/oslogin/apiv1beta/mock_test.go
@@ -23,6 +23,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -34,7 +35,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/oslogin/apiv1beta/os_login_client.go b/oslogin/apiv1beta/os_login_client.go
index d921241..78a7be0 100644
--- a/oslogin/apiv1beta/os_login_client.go
+++ b/oslogin/apiv1beta/os_login_client.go
@@ -17,11 +17,10 @@
 package oslogin
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	commonpb "google.golang.org/genproto/googleapis/cloud/oslogin/common"
@@ -126,8 +125,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/oslogin/apiv1beta/os_login_client_example_test.go b/oslogin/apiv1beta/os_login_client_example_test.go
index 991ee60..05b9c41 100644
--- a/oslogin/apiv1beta/os_login_client_example_test.go
+++ b/oslogin/apiv1beta/os_login_client_example_test.go
@@ -17,8 +17,9 @@
 package oslogin_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/oslogin/apiv1beta"
-	"golang.org/x/net/context"
 	osloginpb "google.golang.org/genproto/googleapis/cloud/oslogin/v1beta"
 )
 
diff --git a/profiler/heap.go b/profiler/heap.go
index 1a1ce6f..ee6a66b 100644
--- a/profiler/heap.go
+++ b/profiler/heap.go
@@ -20,8 +20,9 @@
 	"runtime"
 	"time"
 
+	"context"
+
 	"github.com/google/pprof/profile"
-	"golang.org/x/net/context"
 )
 
 // heapProfile collects an in-use heap profile. The heap profiles returned by
diff --git a/profiler/integration_test.go b/profiler/integration_test.go
index 7c372da..b747668 100644
--- a/profiler/integration_test.go
+++ b/profiler/integration_test.go
@@ -27,8 +27,9 @@
 	"text/template"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/profiler/proftest"
-	"golang.org/x/net/context"
 	"golang.org/x/oauth2/google"
 	compute "google.golang.org/api/compute/v1"
 )
diff --git a/profiler/mocks/README.md b/profiler/mocks/README.md
index 84fedb9..50cdd78 100644
--- a/profiler/mocks/README.md
+++ b/profiler/mocks/README.md
@@ -11,4 +11,4 @@
 
 Then re-add the copyright header in the file. You also need to either run the
 commands above using Golang 1.6 or manually change the "context" import to
-"golang.org/x/net/context" to ensure the compatibility with Go 1.6.
+"context" to ensure the compatibility with Go 1.6.
diff --git a/profiler/mocks/mock_profiler_client.go b/profiler/mocks/mock_profiler_client.go
index d293589..00eef0a 100644
--- a/profiler/mocks/mock_profiler_client.go
+++ b/profiler/mocks/mock_profiler_client.go
@@ -21,8 +21,9 @@
 import (
 	reflect "reflect"
 
+	"context"
+
 	gomock "github.com/golang/mock/gomock"
-	context "golang.org/x/net/context"
 	v2 "google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2"
 	grpc "google.golang.org/grpc"
 )
diff --git a/profiler/profiler.go b/profiler/profiler.go
index 9d990bd..9e71016 100644
--- a/profiler/profiler.go
+++ b/profiler/profiler.go
@@ -48,13 +48,14 @@
 	"sync"
 	"time"
 
+	"context"
+
 	gcemd "cloud.google.com/go/compute/metadata"
 	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
 	"github.com/google/pprof/profile"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	gtransport "google.golang.org/api/transport/grpc"
 	pb "google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2"
diff --git a/profiler/profiler_test.go b/profiler/profiler_test.go
index e8d77bd..95a8ab9 100644
--- a/profiler/profiler_test.go
+++ b/profiler/profiler_test.go
@@ -29,6 +29,8 @@
 	"testing"
 	"time"
 
+	"context"
+
 	gcemd "cloud.google.com/go/compute/metadata"
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/profiler/mocks"
@@ -38,7 +40,6 @@
 	"github.com/golang/protobuf/ptypes"
 	"github.com/google/pprof/profile"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	gtransport "google.golang.org/api/transport/grpc"
 	pb "google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2"
 	edpb "google.golang.org/genproto/googleapis/rpc/errdetails"
diff --git a/profiler/proftest/proftest.go b/profiler/proftest/proftest.go
index 3029e38..5fe9664 100644
--- a/profiler/proftest/proftest.go
+++ b/profiler/proftest/proftest.go
@@ -16,7 +16,7 @@
 // This package is experimental.
 
 // golang.org/x/build/kubernetes/dialer.go imports "context" package (rather
-// than "golang.org/x/net/context") and that does not exist in Go 1.6 or
+// than "context") and that does not exist in Go 1.6 or
 // earlier.
 // +build go1.7
 
@@ -34,12 +34,13 @@
 	"strings"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/storage"
 	gax "github.com/googleapis/gax-go"
 	"golang.org/x/build/kubernetes"
 	k8sapi "golang.org/x/build/kubernetes/api"
 	"golang.org/x/build/kubernetes/gke"
-	"golang.org/x/net/context"
 	cloudbuild "google.golang.org/api/cloudbuild/v1"
 	compute "google.golang.org/api/compute/v1"
 	container "google.golang.org/api/container/v1"
diff --git a/pubsub/apiv1/ListTopics_smoke_test.go b/pubsub/apiv1/ListTopics_smoke_test.go
index bece095..991d0a9 100644
--- a/pubsub/apiv1/ListTopics_smoke_test.go
+++ b/pubsub/apiv1/ListTopics_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/pubsub/apiv1/doc.go b/pubsub/apiv1/doc.go
index ccdce27..3958040 100644
--- a/pubsub/apiv1/doc.go
+++ b/pubsub/apiv1/doc.go
@@ -26,7 +26,11 @@
 package pubsub // import "cloud.google.com/go/pubsub/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -48,3 +52,42 @@
 		"https://www.googleapis.com/auth/pubsub",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/pubsub/apiv1/mock_test.go b/pubsub/apiv1/mock_test.go
index 6eaad6d..6dee0d8 100644
--- a/pubsub/apiv1/mock_test.go
+++ b/pubsub/apiv1/mock_test.go
@@ -25,6 +25,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -36,7 +37,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/pubsub/apiv1/publisher_client.go b/pubsub/apiv1/publisher_client.go
index a35e067..c33566e 100644
--- a/pubsub/apiv1/publisher_client.go
+++ b/pubsub/apiv1/publisher_client.go
@@ -17,13 +17,12 @@
 package pubsub
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -145,8 +144,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *PublisherClient) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/pubsub/apiv1/publisher_client_example_test.go b/pubsub/apiv1/publisher_client_example_test.go
index 6fa1b89..936ba6c 100644
--- a/pubsub/apiv1/publisher_client_example_test.go
+++ b/pubsub/apiv1/publisher_client_example_test.go
@@ -17,8 +17,9 @@
 package pubsub_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/pubsub/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	pubsubpb "google.golang.org/genproto/googleapis/pubsub/v1"
 )
diff --git a/pubsub/apiv1/pubsub_pull_example_test.go b/pubsub/apiv1/pubsub_pull_example_test.go
index df13c3d..8cbfd75 100644
--- a/pubsub/apiv1/pubsub_pull_example_test.go
+++ b/pubsub/apiv1/pubsub_pull_example_test.go
@@ -19,8 +19,9 @@
 	"log"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/pubsub/apiv1"
-	"golang.org/x/net/context"
 	pubsubpb "google.golang.org/genproto/googleapis/pubsub/v1"
 )
 
diff --git a/pubsub/apiv1/subscriber_client.go b/pubsub/apiv1/subscriber_client.go
index 6397f3b..dd64489 100644
--- a/pubsub/apiv1/subscriber_client.go
+++ b/pubsub/apiv1/subscriber_client.go
@@ -17,13 +17,12 @@
 package pubsub
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -185,8 +184,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *SubscriberClient) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/pubsub/apiv1/subscriber_client_example_test.go b/pubsub/apiv1/subscriber_client_example_test.go
index 1094675..52f9504 100644
--- a/pubsub/apiv1/subscriber_client_example_test.go
+++ b/pubsub/apiv1/subscriber_client_example_test.go
@@ -17,10 +17,10 @@
 package pubsub_test
 
 import (
+	"context"
 	"io"
 
 	"cloud.google.com/go/pubsub/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	pubsubpb "google.golang.org/genproto/googleapis/pubsub/v1"
 )
diff --git a/pubsub/endtoend_test.go b/pubsub/endtoend_test.go
index 41f7eb5..f15eeed 100644
--- a/pubsub/endtoend_test.go
+++ b/pubsub/endtoend_test.go
@@ -24,8 +24,9 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 )
 
diff --git a/pubsub/example_subscription_iterator_test.go b/pubsub/example_subscription_iterator_test.go
index 00d8550..e4c5825 100644
--- a/pubsub/example_subscription_iterator_test.go
+++ b/pubsub/example_subscription_iterator_test.go
@@ -17,8 +17,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/pubsub"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/pubsub/example_test.go b/pubsub/example_test.go
index 388a6f5..3b12da5 100644
--- a/pubsub/example_test.go
+++ b/pubsub/example_test.go
@@ -18,8 +18,9 @@
 	"fmt"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/pubsub"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/pubsub/example_topic_iterator_test.go b/pubsub/example_topic_iterator_test.go
index 3a86083..0fc2fc7 100644
--- a/pubsub/example_topic_iterator_test.go
+++ b/pubsub/example_topic_iterator_test.go
@@ -17,8 +17,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/pubsub"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 )
 
diff --git a/pubsub/flow_controller.go b/pubsub/flow_controller.go
index c291d01..145edc8 100644
--- a/pubsub/flow_controller.go
+++ b/pubsub/flow_controller.go
@@ -17,7 +17,8 @@
 import (
 	"sync/atomic"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"golang.org/x/sync/semaphore"
 )
 
diff --git a/pubsub/flow_controller_test.go b/pubsub/flow_controller_test.go
index 6ca8e22..c566f7b 100644
--- a/pubsub/flow_controller_test.go
+++ b/pubsub/flow_controller_test.go
@@ -21,7 +21,8 @@
 	"testing"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"golang.org/x/sync/errgroup"
 )
 
diff --git a/pubsub/go18.go b/pubsub/go18.go
index ff8051c..e742f0b 100644
--- a/pubsub/go18.go
+++ b/pubsub/go18.go
@@ -20,11 +20,12 @@
 	"log"
 	"sync"
 
+	"context"
+
 	"go.opencensus.io/plugin/ocgrpc"
 	"go.opencensus.io/stats"
 	"go.opencensus.io/stats/view"
 	"go.opencensus.io/tag"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/pubsub/integration_test.go b/pubsub/integration_test.go
index ca15b75..deba6bd 100644
--- a/pubsub/integration_test.go
+++ b/pubsub/integration_test.go
@@ -19,12 +19,13 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/iam"
 	"cloud.google.com/go/internal"
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/internal/uid"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
diff --git a/pubsub/iterator.go b/pubsub/iterator.go
index f7a0f49..25bfb75 100644
--- a/pubsub/iterator.go
+++ b/pubsub/iterator.go
@@ -19,10 +19,11 @@
 	"sync"
 	"time"
 
+	"context"
+
 	vkit "cloud.google.com/go/pubsub/apiv1"
 	"cloud.google.com/go/pubsub/internal/distribution"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/pubsub/iterator_test.go b/pubsub/iterator_test.go
index 7fb83cf..bfbd4df 100644
--- a/pubsub/iterator_test.go
+++ b/pubsub/iterator_test.go
@@ -23,9 +23,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/pubsub/pstest"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/pubsub/loadtest/benchmark_test.go b/pubsub/loadtest/benchmark_test.go
index 03d5c0c..699a9dd 100644
--- a/pubsub/loadtest/benchmark_test.go
+++ b/pubsub/loadtest/benchmark_test.go
@@ -25,9 +25,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/pubsub"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	gtransport "google.golang.org/api/transport/grpc"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
diff --git a/pubsub/loadtest/loadtest.go b/pubsub/loadtest/loadtest.go
index 9d9bca3..d2733bf 100644
--- a/pubsub/loadtest/loadtest.go
+++ b/pubsub/loadtest/loadtest.go
@@ -28,10 +28,11 @@
 	"sync/atomic"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/pubsub"
 	pb "cloud.google.com/go/pubsub/loadtest/pb"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"golang.org/x/time/rate"
 )
 
diff --git a/pubsub/loadtest/pb/loadtest.pb.go b/pubsub/loadtest/pb/loadtest.pb.go
index 12ea8f0..055db45 100644
--- a/pubsub/loadtest/pb/loadtest.pb.go
+++ b/pubsub/loadtest/pb/loadtest.pb.go
@@ -28,7 +28,8 @@
 import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp"
 
 import (
-	context "golang.org/x/net/context"
+	"context"
+
 	grpc "google.golang.org/grpc"
 )
 
diff --git a/pubsub/mock_test.go b/pubsub/mock_test.go
index bf8c6a4..eb16d59 100644
--- a/pubsub/mock_test.go
+++ b/pubsub/mock_test.go
@@ -21,9 +21,10 @@
 	"sync"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	emptypb "github.com/golang/protobuf/ptypes/empty"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 )
 
diff --git a/pubsub/not_go18.go b/pubsub/not_go18.go
index 81ef151..dd90331 100644
--- a/pubsub/not_go18.go
+++ b/pubsub/not_go18.go
@@ -17,7 +17,8 @@
 package pubsub
 
 import (
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/option"
 )
 
diff --git a/pubsub/pstest/examples_test.go b/pubsub/pstest/examples_test.go
index 8ba1b77..56a30c1 100644
--- a/pubsub/pstest/examples_test.go
+++ b/pubsub/pstest/examples_test.go
@@ -15,9 +15,10 @@
 package pstest_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/pubsub"
 	"cloud.google.com/go/pubsub/pstest"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/pubsub/pstest/fake.go b/pubsub/pstest/fake.go
index fefbec0..2fd0158 100644
--- a/pubsub/pstest/fake.go
+++ b/pubsub/pstest/fake.go
@@ -32,11 +32,12 @@
 	"sync/atomic"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/ptypes"
 	durpb "github.com/golang/protobuf/ptypes/duration"
 	emptypb "github.com/golang/protobuf/ptypes/empty"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/pubsub/pstest/fake_test.go b/pubsub/pstest/fake_test.go
index afb986c..fad1654 100644
--- a/pubsub/pstest/fake_test.go
+++ b/pubsub/pstest/fake_test.go
@@ -21,9 +21,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/pubsub/pstest_test.go b/pubsub/pstest_test.go
index 1a43592..1cefb4f 100644
--- a/pubsub/pstest_test.go
+++ b/pubsub/pstest_test.go
@@ -19,9 +19,10 @@
 	"sync"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/pubsub"
 	"cloud.google.com/go/pubsub/pstest"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/pubsub/pubsub.go b/pubsub/pubsub.go
index 84ae253..392eced 100644
--- a/pubsub/pubsub.go
+++ b/pubsub/pubsub.go
@@ -20,9 +20,10 @@
 	"runtime"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/version"
 	vkit "cloud.google.com/go/pubsub/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/keepalive"
diff --git a/pubsub/pullstream.go b/pubsub/pullstream.go
index 3dc81d2..013dfe0 100644
--- a/pubsub/pullstream.go
+++ b/pubsub/pullstream.go
@@ -19,8 +19,9 @@
 	"sync"
 	"time"
 
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 	"google.golang.org/grpc"
 )
diff --git a/pubsub/pullstream_test.go b/pubsub/pullstream_test.go
index cb24f7c..1e7c79e 100644
--- a/pubsub/pullstream_test.go
+++ b/pubsub/pullstream_test.go
@@ -17,8 +17,9 @@
 import (
 	"testing"
 
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/pubsub/snapshot.go b/pubsub/snapshot.go
index f2934b5..56138da 100644
--- a/pubsub/snapshot.go
+++ b/pubsub/snapshot.go
@@ -19,8 +19,9 @@
 	"strings"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 )
 
diff --git a/pubsub/streaming_pull_test.go b/pubsub/streaming_pull_test.go
index d89fa3a..67a2871 100644
--- a/pubsub/streaming_pull_test.go
+++ b/pubsub/streaming_pull_test.go
@@ -26,11 +26,12 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 	"google.golang.org/grpc"
diff --git a/pubsub/subscription.go b/pubsub/subscription.go
index a01b823..a725c3f 100644
--- a/pubsub/subscription.go
+++ b/pubsub/subscription.go
@@ -22,12 +22,13 @@
 	"sync"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/iam"
 	"cloud.google.com/go/internal/optional"
 	"github.com/golang/protobuf/ptypes"
 	durpb "github.com/golang/protobuf/ptypes/duration"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"golang.org/x/sync/errgroup"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 	fmpb "google.golang.org/genproto/protobuf/field_mask"
diff --git a/pubsub/subscription_test.go b/pubsub/subscription_test.go
index b14341e..655a790 100644
--- a/pubsub/subscription_test.go
+++ b/pubsub/subscription_test.go
@@ -19,9 +19,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/pubsub/pstest"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
diff --git a/pubsub/timeout_test.go b/pubsub/timeout_test.go
index 36e5c17..a406787 100644
--- a/pubsub/timeout_test.go
+++ b/pubsub/timeout_test.go
@@ -20,8 +20,9 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/pubsub/pstest"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/pubsub/topic.go b/pubsub/topic.go
index 511daf7..7d92867 100644
--- a/pubsub/topic.go
+++ b/pubsub/topic.go
@@ -22,10 +22,11 @@
 	"sync"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/iam"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/support/bundler"
 	pb "google.golang.org/genproto/googleapis/pubsub/v1"
 	fmpb "google.golang.org/genproto/protobuf/field_mask"
diff --git a/pubsub/topic_test.go b/pubsub/topic_test.go
index 00b60bc..3250bb6 100644
--- a/pubsub/topic_test.go
+++ b/pubsub/topic_test.go
@@ -19,8 +19,9 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	pubsubpb "google.golang.org/genproto/googleapis/pubsub/v1"
diff --git a/redis/apiv1/cloud_redis_client.go b/redis/apiv1/cloud_redis_client.go
index 17a8297..e7d421c 100644
--- a/redis/apiv1/cloud_redis_client.go
+++ b/redis/apiv1/cloud_redis_client.go
@@ -17,15 +17,14 @@
 package redis
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -147,8 +146,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *CloudRedisClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/redis/apiv1/cloud_redis_client_example_test.go b/redis/apiv1/cloud_redis_client_example_test.go
index a06ee76..ad6eca9 100644
--- a/redis/apiv1/cloud_redis_client_example_test.go
+++ b/redis/apiv1/cloud_redis_client_example_test.go
@@ -17,8 +17,9 @@
 package redis_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/redis/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	redispb "google.golang.org/genproto/googleapis/cloud/redis/v1"
 )
diff --git a/redis/apiv1/doc.go b/redis/apiv1/doc.go
index 439afa5..867381a 100644
--- a/redis/apiv1/doc.go
+++ b/redis/apiv1/doc.go
@@ -24,7 +24,11 @@
 package redis // import "cloud.google.com/go/redis/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -45,3 +49,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/redis/apiv1/mock_test.go b/redis/apiv1/mock_test.go
index 8b1c679..a900e79 100644
--- a/redis/apiv1/mock_test.go
+++ b/redis/apiv1/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/redis/apiv1beta1/cloud_redis_client.go b/redis/apiv1beta1/cloud_redis_client.go
index 8085b11..a3d4ff0 100644
--- a/redis/apiv1beta1/cloud_redis_client.go
+++ b/redis/apiv1beta1/cloud_redis_client.go
@@ -17,16 +17,15 @@
 package redis
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	anypb "github.com/golang/protobuf/ptypes/any"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -148,8 +147,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *CloudRedisClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/redis/apiv1beta1/cloud_redis_client_example_test.go b/redis/apiv1beta1/cloud_redis_client_example_test.go
index 6d2eeb1..ea9416c 100644
--- a/redis/apiv1beta1/cloud_redis_client_example_test.go
+++ b/redis/apiv1beta1/cloud_redis_client_example_test.go
@@ -17,8 +17,9 @@
 package redis_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/redis/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	redispb "google.golang.org/genproto/googleapis/cloud/redis/v1beta1"
 )
diff --git a/redis/apiv1beta1/doc.go b/redis/apiv1beta1/doc.go
index e392a6d..f794265 100644
--- a/redis/apiv1beta1/doc.go
+++ b/redis/apiv1beta1/doc.go
@@ -25,7 +25,11 @@
 package redis // import "cloud.google.com/go/redis/apiv1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -46,3 +50,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/redis/apiv1beta1/mock_test.go b/redis/apiv1beta1/mock_test.go
index 3acf440..3c93d34 100644
--- a/redis/apiv1beta1/mock_test.go
+++ b/redis/apiv1beta1/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/regen-gapic.sh b/regen-gapic.sh
index 8b1d9ad..252c9be 100755
--- a/regen-gapic.sh
+++ b/regen-gapic.sh
@@ -50,7 +50,6 @@
 google/cloud/videointelligence/artman_videointelligence_v1beta2.yaml
 google/cloud/vision/artman_vision_v1.yaml
 google/cloud/vision/artman_vision_v1p1beta1.yaml
-google/container/artman_container.yaml
 google/devtools/artman_clouddebugger.yaml
 google/devtools/clouderrorreporting/artman_errorreporting.yaml
 google/devtools/cloudtrace/artman_cloudtrace_v1.yaml
diff --git a/rpcreplay/fake_test.go b/rpcreplay/fake_test.go
index 465621e..a30f68e 100644
--- a/rpcreplay/fake_test.go
+++ b/rpcreplay/fake_test.go
@@ -19,8 +19,9 @@
 	"log"
 	"net"
 
+	"context"
+
 	pb "cloud.google.com/go/rpcreplay/proto/intstore"
-	"golang.org/x/net/context"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/rpcreplay/proto/intstore/intstore.pb.go b/rpcreplay/proto/intstore/intstore.pb.go
index 657ac2f..cac6607 100644
--- a/rpcreplay/proto/intstore/intstore.pb.go
+++ b/rpcreplay/proto/intstore/intstore.pb.go
@@ -22,7 +22,8 @@
 import math "math"
 
 import (
-	context "golang.org/x/net/context"
+	"context"
+
 	grpc "google.golang.org/grpc"
 )
 
diff --git a/rpcreplay/rpcreplay.go b/rpcreplay/rpcreplay.go
index 32f6d3f..848ff79 100644
--- a/rpcreplay/rpcreplay.go
+++ b/rpcreplay/rpcreplay.go
@@ -24,11 +24,12 @@
 	"os"
 	"sync"
 
+	"context"
+
 	pb "cloud.google.com/go/rpcreplay/proto/rpcreplay"
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
 	"github.com/golang/protobuf/ptypes/any"
-	"golang.org/x/net/context"
 	spb "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/metadata"
diff --git a/rpcreplay/rpcreplay_test.go b/rpcreplay/rpcreplay_test.go
index ad67925..623c719 100644
--- a/rpcreplay/rpcreplay_test.go
+++ b/rpcreplay/rpcreplay_test.go
@@ -21,12 +21,13 @@
 	"strings"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	ipb "cloud.google.com/go/rpcreplay/proto/intstore"
 	rpb "cloud.google.com/go/rpcreplay/proto/rpcreplay"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/net/context"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/scheduler/apiv1beta1/cloud_scheduler_client.go b/scheduler/apiv1beta1/cloud_scheduler_client.go
index fc01379..c14c48c 100644
--- a/scheduler/apiv1beta1/cloud_scheduler_client.go
+++ b/scheduler/apiv1beta1/cloud_scheduler_client.go
@@ -17,13 +17,12 @@
 package scheduler
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -130,8 +129,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *CloudSchedulerClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/scheduler/apiv1beta1/cloud_scheduler_client_example_test.go b/scheduler/apiv1beta1/cloud_scheduler_client_example_test.go
index 4dc6918..65fbbb9 100644
--- a/scheduler/apiv1beta1/cloud_scheduler_client_example_test.go
+++ b/scheduler/apiv1beta1/cloud_scheduler_client_example_test.go
@@ -17,8 +17,9 @@
 package scheduler_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/scheduler/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	schedulerpb "google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1"
 )
diff --git a/scheduler/apiv1beta1/doc.go b/scheduler/apiv1beta1/doc.go
index beec444..d30f3b3 100644
--- a/scheduler/apiv1beta1/doc.go
+++ b/scheduler/apiv1beta1/doc.go
@@ -23,7 +23,11 @@
 package scheduler // import "cloud.google.com/go/scheduler/apiv1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/scheduler/apiv1beta1/mock_test.go b/scheduler/apiv1beta1/mock_test.go
index 5c25005..19fd1f9 100644
--- a/scheduler/apiv1beta1/mock_test.go
+++ b/scheduler/apiv1beta1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/securitycenter/apiv1beta1/doc.go b/securitycenter/apiv1beta1/doc.go
index 3a67da8..e39bd06 100644
--- a/securitycenter/apiv1beta1/doc.go
+++ b/securitycenter/apiv1beta1/doc.go
@@ -23,7 +23,11 @@
 package securitycenter // import "cloud.google.com/go/securitycenter/apiv1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/securitycenter/apiv1beta1/mock_test.go b/securitycenter/apiv1beta1/mock_test.go
index 66342b7..195c710 100644
--- a/securitycenter/apiv1beta1/mock_test.go
+++ b/securitycenter/apiv1beta1/mock_test.go
@@ -25,6 +25,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -36,7 +37,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/securitycenter/apiv1beta1/security_center_client.go b/securitycenter/apiv1beta1/security_center_client.go
index 9117fe0..aacbb3d 100644
--- a/securitycenter/apiv1beta1/security_center_client.go
+++ b/securitycenter/apiv1beta1/security_center_client.go
@@ -17,15 +17,14 @@
 package securitycenter
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -169,8 +168,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/securitycenter/apiv1beta1/security_center_client_example_test.go b/securitycenter/apiv1beta1/security_center_client_example_test.go
index 9fe941e..049c918 100644
--- a/securitycenter/apiv1beta1/security_center_client_example_test.go
+++ b/securitycenter/apiv1beta1/security_center_client_example_test.go
@@ -17,8 +17,9 @@
 package securitycenter_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/securitycenter/apiv1beta1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	securitycenterpb "google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
diff --git a/spanner/admin/database/apiv1/database_admin_client.go b/spanner/admin/database/apiv1/database_admin_client.go
index 2c6e6a1..a75dfeb 100644
--- a/spanner/admin/database/apiv1/database_admin_client.go
+++ b/spanner/admin/database/apiv1/database_admin_client.go
@@ -17,15 +17,14 @@
 package database
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -155,8 +154,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *DatabaseAdminClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/spanner/admin/database/apiv1/database_admin_client_example_test.go b/spanner/admin/database/apiv1/database_admin_client_example_test.go
index be6dc82..3ef3d2c 100644
--- a/spanner/admin/database/apiv1/database_admin_client_example_test.go
+++ b/spanner/admin/database/apiv1/database_admin_client_example_test.go
@@ -17,8 +17,9 @@
 package database_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/spanner/admin/database/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
 	databasepb "google.golang.org/genproto/googleapis/spanner/admin/database/v1"
diff --git a/spanner/admin/database/apiv1/doc.go b/spanner/admin/database/apiv1/doc.go
index 5706f70..06d86c7 100644
--- a/spanner/admin/database/apiv1/doc.go
+++ b/spanner/admin/database/apiv1/doc.go
@@ -22,7 +22,11 @@
 package database // import "cloud.google.com/go/spanner/admin/database/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/spanner.admin",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/spanner/admin/database/apiv1/mock_test.go b/spanner/admin/database/apiv1/mock_test.go
index 5c08210..63ba16b 100644
--- a/spanner/admin/database/apiv1/mock_test.go
+++ b/spanner/admin/database/apiv1/mock_test.go
@@ -24,6 +24,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -35,7 +36,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/spanner/admin/instance/apiv1/doc.go b/spanner/admin/instance/apiv1/doc.go
index 574f289..e6f2061 100644
--- a/spanner/admin/instance/apiv1/doc.go
+++ b/spanner/admin/instance/apiv1/doc.go
@@ -22,7 +22,11 @@
 package instance // import "cloud.google.com/go/spanner/admin/instance/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/spanner.admin",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/spanner/admin/instance/apiv1/instance_admin_client.go b/spanner/admin/instance/apiv1/instance_admin_client.go
index 57cabfd..1a7df8f 100644
--- a/spanner/admin/instance/apiv1/instance_admin_client.go
+++ b/spanner/admin/instance/apiv1/instance_admin_client.go
@@ -17,15 +17,14 @@
 package instance
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -173,8 +172,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *InstanceAdminClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/spanner/admin/instance/apiv1/instance_admin_client_example_test.go b/spanner/admin/instance/apiv1/instance_admin_client_example_test.go
index 894fcae..c27c113 100644
--- a/spanner/admin/instance/apiv1/instance_admin_client_example_test.go
+++ b/spanner/admin/instance/apiv1/instance_admin_client_example_test.go
@@ -17,8 +17,9 @@
 package instance_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/spanner/admin/instance/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
 	instancepb "google.golang.org/genproto/googleapis/spanner/admin/instance/v1"
diff --git a/spanner/admin/instance/apiv1/mock_test.go b/spanner/admin/instance/apiv1/mock_test.go
index 7b0e1ad..696e78b 100644
--- a/spanner/admin/instance/apiv1/mock_test.go
+++ b/spanner/admin/instance/apiv1/mock_test.go
@@ -25,6 +25,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -36,7 +37,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/spanner/apiv1/doc.go b/spanner/apiv1/doc.go
index 61525dd..3685f48 100644
--- a/spanner/apiv1/doc.go
+++ b/spanner/apiv1/doc.go
@@ -26,7 +26,11 @@
 package spanner // import "cloud.google.com/go/spanner/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -48,3 +52,42 @@
 		"https://www.googleapis.com/auth/spanner.data",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/spanner/apiv1/mock_test.go b/spanner/apiv1/mock_test.go
index 3315384..e451c87 100644
--- a/spanner/apiv1/mock_test.go
+++ b/spanner/apiv1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/spanner/apiv1/spanner_client.go b/spanner/apiv1/spanner_client.go
index 1069605..1a5d662 100644
--- a/spanner/apiv1/spanner_client.go
+++ b/spanner/apiv1/spanner_client.go
@@ -17,13 +17,12 @@
 package spanner
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -153,8 +152,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/spanner/apiv1/spanner_client_example_test.go b/spanner/apiv1/spanner_client_example_test.go
index 6806af9..cca8087 100644
--- a/spanner/apiv1/spanner_client_example_test.go
+++ b/spanner/apiv1/spanner_client_example_test.go
@@ -17,10 +17,10 @@
 package spanner_test
 
 import (
+	"context"
 	"io"
 
 	"cloud.google.com/go/spanner/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	spannerpb "google.golang.org/genproto/googleapis/spanner/v1"
 )
diff --git a/spanner/batch.go b/spanner/batch.go
index 18ce8ff..dbad69c 100644
--- a/spanner/batch.go
+++ b/spanner/batch.go
@@ -22,8 +22,9 @@
 	"log"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
-	"golang.org/x/net/context"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 )
 
diff --git a/spanner/big_pdml_test.go b/spanner/big_pdml_test.go
index 956aca6..1d3e804 100644
--- a/spanner/big_pdml_test.go
+++ b/spanner/big_pdml_test.go
@@ -22,7 +22,7 @@
 	"fmt"
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
 )
 
 func TestBigPDML(t *testing.T) {
diff --git a/spanner/client.go b/spanner/client.go
index 2d3443e..fd7e4fb 100644
--- a/spanner/client.go
+++ b/spanner/client.go
@@ -22,8 +22,9 @@
 	"sync/atomic"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/version"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	gtransport "google.golang.org/api/transport/grpc"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
diff --git a/spanner/errors.go b/spanner/errors.go
index b940a7c..037c9d1 100644
--- a/spanner/errors.go
+++ b/spanner/errors.go
@@ -19,7 +19,8 @@
 import (
 	"fmt"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
diff --git a/spanner/errors_test.go b/spanner/errors_test.go
index 7626b91..c5c40d5 100644
--- a/spanner/errors_test.go
+++ b/spanner/errors_test.go
@@ -20,7 +20,8 @@
 	"errors"
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/spanner/examples_test.go b/spanner/examples_test.go
index 3cd83ce..d8e3530 100644
--- a/spanner/examples_test.go
+++ b/spanner/examples_test.go
@@ -22,8 +22,9 @@
 	"sync"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/spanner"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 )
diff --git a/spanner/go17_test.go b/spanner/go17_test.go
index 59e9340..e7f776c 100644
--- a/spanner/go17_test.go
+++ b/spanner/go17_test.go
@@ -21,10 +21,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/civil"
 	proto "github.com/golang/protobuf/proto"
 	proto3 "github.com/golang/protobuf/ptypes/struct"
-	"golang.org/x/net/context"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 )
 
diff --git a/spanner/go18.go b/spanner/go18.go
index 9673953..f99ce5c 100644
--- a/spanner/go18.go
+++ b/spanner/go18.go
@@ -19,10 +19,11 @@
 import (
 	"fmt"
 
+	"context"
+
 	"go.opencensus.io/stats"
 	"go.opencensus.io/stats/view"
 	"go.opencensus.io/trace"
-	"golang.org/x/net/context"
 )
 
 func traceStartSpan(ctx context.Context, name string) context.Context {
diff --git a/spanner/integration_test.go b/spanner/integration_test.go
index 6767820..1887eb6 100644
--- a/spanner/integration_test.go
+++ b/spanner/integration_test.go
@@ -29,11 +29,12 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/civil"
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/internal/uid"
 	"cloud.google.com/go/spanner/admin/database/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	adminpb "google.golang.org/genproto/googleapis/spanner/admin/database/v1"
diff --git a/spanner/internal/testutil/mockclient.go b/spanner/internal/testutil/mockclient.go
index 58eb4bc..885caba 100644
--- a/spanner/internal/testutil/mockclient.go
+++ b/spanner/internal/testutil/mockclient.go
@@ -23,11 +23,12 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes/empty"
 	proto3 "github.com/golang/protobuf/ptypes/struct"
 	pbt "github.com/golang/protobuf/ptypes/timestamp"
-	"golang.org/x/net/context"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/spanner/internal/testutil/mockserver.go b/spanner/internal/testutil/mockserver.go
index fd09664..f85ef52 100644
--- a/spanner/internal/testutil/mockserver.go
+++ b/spanner/internal/testutil/mockserver.go
@@ -25,10 +25,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/ptypes/empty"
 	proto3 "github.com/golang/protobuf/ptypes/struct"
 	pbt "github.com/golang/protobuf/ptypes/timestamp"
-	"golang.org/x/net/context"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
diff --git a/spanner/not_go18.go b/spanner/not_go18.go
index 8ce01f1..41c3481 100644
--- a/spanner/not_go18.go
+++ b/spanner/not_go18.go
@@ -16,7 +16,7 @@
 
 package spanner
 
-import "golang.org/x/net/context"
+import "context"
 
 // OpenCensus only supports go 1.8 and higher.
 
diff --git a/spanner/oc_test.go b/spanner/oc_test.go
index 07edcc5..e72adc4 100644
--- a/spanner/oc_test.go
+++ b/spanner/oc_test.go
@@ -20,9 +20,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
 	stestutil "cloud.google.com/go/spanner/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/grpc"
 )
diff --git a/spanner/pdml.go b/spanner/pdml.go
index 8cf486e..bf47b36 100644
--- a/spanner/pdml.go
+++ b/spanner/pdml.go
@@ -17,7 +17,8 @@
 import (
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/iterator"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc/codes"
diff --git a/spanner/pdml_test.go b/spanner/pdml_test.go
index 495d2af..202368a 100644
--- a/spanner/pdml_test.go
+++ b/spanner/pdml_test.go
@@ -18,8 +18,9 @@
 	"io"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/spanner/internal/testutil"
-	"golang.org/x/net/context"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc/codes"
 )
diff --git a/spanner/read.go b/spanner/read.go
index b9459e9..cf1a910 100644
--- a/spanner/read.go
+++ b/spanner/read.go
@@ -23,10 +23,11 @@
 	"sync/atomic"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/protostruct"
 	proto "github.com/golang/protobuf/proto"
 	proto3 "github.com/golang/protobuf/ptypes/struct"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc/codes"
diff --git a/spanner/read_test.go b/spanner/read_test.go
index 1ea61e0..bdd2a05 100644
--- a/spanner/read_test.go
+++ b/spanner/read_test.go
@@ -24,10 +24,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/spanner/internal/testutil"
 	"github.com/golang/protobuf/proto"
 	proto3 "github.com/golang/protobuf/ptypes/struct"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc"
diff --git a/spanner/retry.go b/spanner/retry.go
index 633d980..c5202db 100644
--- a/spanner/retry.go
+++ b/spanner/retry.go
@@ -21,9 +21,10 @@
 	"strings"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	edpb "google.golang.org/genproto/googleapis/rpc/errdetails"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
diff --git a/spanner/retry_test.go b/spanner/retry_test.go
index 99b8b6a..1c562bb 100644
--- a/spanner/retry_test.go
+++ b/spanner/retry_test.go
@@ -22,9 +22,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	edpb "google.golang.org/genproto/googleapis/rpc/errdetails"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
diff --git a/spanner/session.go b/spanner/session.go
index 9efee59..a120422 100644
--- a/spanner/session.go
+++ b/spanner/session.go
@@ -26,7 +26,8 @@
 	"sync"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
diff --git a/spanner/session_test.go b/spanner/session_test.go
index 032ed02..8fb77a0 100644
--- a/spanner/session_test.go
+++ b/spanner/session_test.go
@@ -25,8 +25,9 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/spanner/internal/testutil"
-	"golang.org/x/net/context"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/spanner/transaction.go b/spanner/transaction.go
index 549fa0e..0a32e60 100644
--- a/spanner/transaction.go
+++ b/spanner/transaction.go
@@ -21,7 +21,8 @@
 	"sync/atomic"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/iterator"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc"
diff --git a/spanner/transaction_test.go b/spanner/transaction_test.go
index 479aedf..72cb129 100644
--- a/spanner/transaction_test.go
+++ b/spanner/transaction_test.go
@@ -22,8 +22,9 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/spanner/internal/testutil"
-	"golang.org/x/net/context"
 	sppb "google.golang.org/genproto/googleapis/spanner/v1"
 	"google.golang.org/grpc/codes"
 )
diff --git a/speech/apiv1/Recognize_smoke_test.go b/speech/apiv1/Recognize_smoke_test.go
index 4b95cec..292be9e 100644
--- a/speech/apiv1/Recognize_smoke_test.go
+++ b/speech/apiv1/Recognize_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/speech/apiv1/doc.go b/speech/apiv1/doc.go
index 23d93c0..f0048f2 100644
--- a/speech/apiv1/doc.go
+++ b/speech/apiv1/doc.go
@@ -22,7 +22,11 @@
 package speech // import "cloud.google.com/go/speech/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -43,3 +47,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/speech/apiv1/mock_test.go b/speech/apiv1/mock_test.go
index 389aafe..9e32b7c 100644
--- a/speech/apiv1/mock_test.go
+++ b/speech/apiv1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/speech/apiv1/speech_client.go b/speech/apiv1/speech_client.go
index aec542f..0ea5dea 100644
--- a/speech/apiv1/speech_client.go
+++ b/speech/apiv1/speech_client.go
@@ -17,13 +17,12 @@
 package speech
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	speechpb "google.golang.org/genproto/googleapis/cloud/speech/v1"
@@ -135,8 +134,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/speech/apiv1/speech_client_example_test.go b/speech/apiv1/speech_client_example_test.go
index 1377f42..fc311f4 100644
--- a/speech/apiv1/speech_client_example_test.go
+++ b/speech/apiv1/speech_client_example_test.go
@@ -17,10 +17,10 @@
 package speech_test
 
 import (
+	"context"
 	"io"
 
 	"cloud.google.com/go/speech/apiv1"
-	"golang.org/x/net/context"
 	speechpb "google.golang.org/genproto/googleapis/cloud/speech/v1"
 )
 
diff --git a/speech/apiv1p1beta1/Recognize_smoke_test.go b/speech/apiv1p1beta1/Recognize_smoke_test.go
index 9df22c3..874b6c2 100644
--- a/speech/apiv1p1beta1/Recognize_smoke_test.go
+++ b/speech/apiv1p1beta1/Recognize_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/speech/apiv1p1beta1/doc.go b/speech/apiv1p1beta1/doc.go
index 6781bd1..af741ff 100644
--- a/speech/apiv1p1beta1/doc.go
+++ b/speech/apiv1p1beta1/doc.go
@@ -23,7 +23,11 @@
 package speech // import "cloud.google.com/go/speech/apiv1p1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/speech/apiv1p1beta1/mock_test.go b/speech/apiv1p1beta1/mock_test.go
index 21e6705..4852fa8 100644
--- a/speech/apiv1p1beta1/mock_test.go
+++ b/speech/apiv1p1beta1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/speech/apiv1p1beta1/speech_client.go b/speech/apiv1p1beta1/speech_client.go
index 7e1e06d..15e7b05 100644
--- a/speech/apiv1p1beta1/speech_client.go
+++ b/speech/apiv1p1beta1/speech_client.go
@@ -17,13 +17,12 @@
 package speech
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	speechpb "google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1"
@@ -135,8 +134,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/speech/apiv1p1beta1/speech_client_example_test.go b/speech/apiv1p1beta1/speech_client_example_test.go
index c3ccb07..b76f36b 100644
--- a/speech/apiv1p1beta1/speech_client_example_test.go
+++ b/speech/apiv1p1beta1/speech_client_example_test.go
@@ -17,10 +17,10 @@
 package speech_test
 
 import (
+	"context"
 	"io"
 
 	"cloud.google.com/go/speech/apiv1p1beta1"
-	"golang.org/x/net/context"
 	speechpb "google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1"
 )
 
diff --git a/storage/acl.go b/storage/acl.go
index 28a9438..316ca5a 100644
--- a/storage/acl.go
+++ b/storage/acl.go
@@ -18,8 +18,9 @@
 	"net/http"
 	"reflect"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	"google.golang.org/api/googleapi"
 	raw "google.golang.org/api/storage/v1"
 )
diff --git a/storage/acl_test.go b/storage/acl_test.go
index 5651626..5400bdc 100644
--- a/storage/acl_test.go
+++ b/storage/acl_test.go
@@ -18,8 +18,9 @@
 	"net/http"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 )
 
 func TestSetACL(t *testing.T) {
diff --git a/storage/bucket.go b/storage/bucket.go
index 1c1cb9a..37ef544 100644
--- a/storage/bucket.go
+++ b/storage/bucket.go
@@ -20,9 +20,10 @@
 	"reflect"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/optional"
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	"google.golang.org/api/googleapi"
 	"google.golang.org/api/iterator"
 	raw "google.golang.org/api/storage/v1"
diff --git a/storage/copy.go b/storage/copy.go
index 39da383..5608965 100644
--- a/storage/copy.go
+++ b/storage/copy.go
@@ -18,8 +18,9 @@
 	"errors"
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	raw "google.golang.org/api/storage/v1"
 )
 
diff --git a/storage/copy_test.go b/storage/copy_test.go
index 0a461e6..ad99424 100644
--- a/storage/copy_test.go
+++ b/storage/copy_test.go
@@ -18,7 +18,7 @@
 	"strings"
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
 )
 
 func TestCopyMissingFields(t *testing.T) {
diff --git a/storage/example_test.go b/storage/example_test.go
index ab7c7b2..ed58c38 100644
--- a/storage/example_test.go
+++ b/storage/example_test.go
@@ -23,8 +23,9 @@
 	"os"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/storage"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/storage/iam.go b/storage/iam.go
index d2cef42..9d93606 100644
--- a/storage/iam.go
+++ b/storage/iam.go
@@ -15,9 +15,10 @@
 package storage
 
 import (
+	"context"
+
 	"cloud.google.com/go/iam"
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	raw "google.golang.org/api/storage/v1"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
 )
diff --git a/storage/integration_test.go b/storage/integration_test.go
index 1986c45..cc9acb9 100644
--- a/storage/integration_test.go
+++ b/storage/integration_test.go
@@ -38,13 +38,14 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/httpreplay"
 	"cloud.google.com/go/iam"
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/internal/uid"
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
-	"golang.org/x/net/context"
 	"google.golang.org/api/googleapi"
 	"google.golang.org/api/iterator"
 	itesting "google.golang.org/api/iterator/testing"
diff --git a/storage/invoke.go b/storage/invoke.go
index 955ef72..0a03f11 100644
--- a/storage/invoke.go
+++ b/storage/invoke.go
@@ -15,9 +15,10 @@
 package storage
 
 import (
+	"context"
+
 	"cloud.google.com/go/internal"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 )
 
 // runWithRetry calls the function until it returns nil or a non-retryable error, or
diff --git a/storage/invoke_test.go b/storage/invoke_test.go
index bd40138..0350414 100644
--- a/storage/invoke_test.go
+++ b/storage/invoke_test.go
@@ -18,7 +18,8 @@
 	"errors"
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/googleapi"
 )
 
diff --git a/storage/mock_test.go b/storage/mock_test.go
index 13a0608..d377e32 100644
--- a/storage/mock_test.go
+++ b/storage/mock_test.go
@@ -23,7 +23,8 @@
 	"strings"
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/option"
 )
 
diff --git a/storage/notifications.go b/storage/notifications.go
index d5e1395..ed3990a 100644
--- a/storage/notifications.go
+++ b/storage/notifications.go
@@ -19,8 +19,9 @@
 	"fmt"
 	"regexp"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	raw "google.golang.org/api/storage/v1"
 )
 
diff --git a/storage/notifications_test.go b/storage/notifications_test.go
index 55021f0..893292c 100644
--- a/storage/notifications_test.go
+++ b/storage/notifications_test.go
@@ -17,8 +17,9 @@
 import (
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	raw "google.golang.org/api/storage/v1"
 )
 
diff --git a/storage/oc_test.go b/storage/oc_test.go
index 73c79c1..fa73886 100644
--- a/storage/oc_test.go
+++ b/storage/oc_test.go
@@ -19,8 +19,9 @@
 import (
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 )
 
 func TestIntegration_OCTracing(t *testing.T) {
diff --git a/storage/reader.go b/storage/reader.go
index ae730f0..7cbae63 100644
--- a/storage/reader.go
+++ b/storage/reader.go
@@ -27,8 +27,9 @@
 	"strings"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/internal/trace"
-	"golang.org/x/net/context"
 	"google.golang.org/api/googleapi"
 )
 
diff --git a/storage/reader_test.go b/storage/reader_test.go
index a4e3010..e0e061d 100644
--- a/storage/reader_test.go
+++ b/storage/reader_test.go
@@ -24,7 +24,8 @@
 	"strings"
 	"testing"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/option"
 )
 
diff --git a/storage/storage.go b/storage/storage.go
index df4cb82..06e013a 100644
--- a/storage/storage.go
+++ b/storage/storage.go
@@ -36,10 +36,11 @@
 	"time"
 	"unicode/utf8"
 
+	"context"
+
 	"cloud.google.com/go/internal/optional"
 	"cloud.google.com/go/internal/trace"
 	"cloud.google.com/go/internal/version"
-	"golang.org/x/net/context"
 	"google.golang.org/api/googleapi"
 	"google.golang.org/api/option"
 	raw "google.golang.org/api/storage/v1"
diff --git a/storage/storage_test.go b/storage/storage_test.go
index 853570f..e7b8227 100644
--- a/storage/storage_test.go
+++ b/storage/storage_test.go
@@ -30,9 +30,10 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/iam"
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	raw "google.golang.org/api/storage/v1"
diff --git a/storage/writer.go b/storage/writer.go
index 4873dc9..c2d8bb0 100644
--- a/storage/writer.go
+++ b/storage/writer.go
@@ -22,7 +22,8 @@
 	"sync"
 	"unicode/utf8"
 
-	"golang.org/x/net/context"
+	"context"
+
 	"google.golang.org/api/googleapi"
 	raw "google.golang.org/api/storage/v1"
 )
diff --git a/storage/writer_test.go b/storage/writer_test.go
index 6571b58..24ee332 100644
--- a/storage/writer_test.go
+++ b/storage/writer_test.go
@@ -21,8 +21,9 @@
 	"strings"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/googleapi"
 	"google.golang.org/api/option"
 )
diff --git a/texttospeech/apiv1/doc.go b/texttospeech/apiv1/doc.go
index b313cf8..50b74c6 100644
--- a/texttospeech/apiv1/doc.go
+++ b/texttospeech/apiv1/doc.go
@@ -24,7 +24,11 @@
 package texttospeech // import "cloud.google.com/go/texttospeech/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -45,3 +49,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/texttospeech/apiv1/mock_test.go b/texttospeech/apiv1/mock_test.go
index aef64ba..b844387 100644
--- a/texttospeech/apiv1/mock_test.go
+++ b/texttospeech/apiv1/mock_test.go
@@ -21,6 +21,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -32,7 +33,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/texttospeech/apiv1/text_to_speech_client.go b/texttospeech/apiv1/text_to_speech_client.go
index c69cf25..00a9dd6 100644
--- a/texttospeech/apiv1/text_to_speech_client.go
+++ b/texttospeech/apiv1/text_to_speech_client.go
@@ -17,11 +17,10 @@
 package texttospeech
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	texttospeechpb "google.golang.org/genproto/googleapis/cloud/texttospeech/v1"
@@ -114,8 +113,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/texttospeech/apiv1/text_to_speech_client_example_test.go b/texttospeech/apiv1/text_to_speech_client_example_test.go
index cb9e9a7..7a2d4f8 100644
--- a/texttospeech/apiv1/text_to_speech_client_example_test.go
+++ b/texttospeech/apiv1/text_to_speech_client_example_test.go
@@ -17,8 +17,9 @@
 package texttospeech_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/texttospeech/apiv1"
-	"golang.org/x/net/context"
 	texttospeechpb "google.golang.org/genproto/googleapis/cloud/texttospeech/v1"
 )
 
diff --git a/trace/apiv1/ListTraces_smoke_test.go b/trace/apiv1/ListTraces_smoke_test.go
index 1619ca1..76ed358 100644
--- a/trace/apiv1/ListTraces_smoke_test.go
+++ b/trace/apiv1/ListTraces_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/trace/apiv1/doc.go b/trace/apiv1/doc.go
index 29024af..5cd19b9 100644
--- a/trace/apiv1/doc.go
+++ b/trace/apiv1/doc.go
@@ -29,7 +29,11 @@
 package trace // import "cloud.google.com/go/trace/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -52,3 +56,42 @@
 		"https://www.googleapis.com/auth/trace.readonly",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/trace/apiv1/mock_test.go b/trace/apiv1/mock_test.go
index 631281f..d42f75b 100644
--- a/trace/apiv1/mock_test.go
+++ b/trace/apiv1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/trace/apiv1/trace_client.go b/trace/apiv1/trace_client.go
index 90b33c5..73d654e 100644
--- a/trace/apiv1/trace_client.go
+++ b/trace/apiv1/trace_client.go
@@ -17,13 +17,12 @@
 package trace
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -123,8 +122,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) SetGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/trace/apiv1/trace_client_example_test.go b/trace/apiv1/trace_client_example_test.go
index 2fe01b0..5e0c94b 100644
--- a/trace/apiv1/trace_client_example_test.go
+++ b/trace/apiv1/trace_client_example_test.go
@@ -17,8 +17,9 @@
 package trace_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/trace/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	cloudtracepb "google.golang.org/genproto/googleapis/devtools/cloudtrace/v1"
 )
diff --git a/trace/apiv2/BatchWriteSpans_smoke_test.go b/trace/apiv2/BatchWriteSpans_smoke_test.go
index 0c0c118..9c14385 100644
--- a/trace/apiv2/BatchWriteSpans_smoke_test.go
+++ b/trace/apiv2/BatchWriteSpans_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/trace/apiv2/doc.go b/trace/apiv2/doc.go
index 2f7ffdc..57b3161 100644
--- a/trace/apiv2/doc.go
+++ b/trace/apiv2/doc.go
@@ -27,7 +27,11 @@
 package trace // import "cloud.google.com/go/trace/apiv2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -49,3 +53,42 @@
 		"https://www.googleapis.com/auth/trace.append",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/trace/apiv2/mock_test.go b/trace/apiv2/mock_test.go
index c7fff5c..b1e430d 100644
--- a/trace/apiv2/mock_test.go
+++ b/trace/apiv2/mock_test.go
@@ -23,6 +23,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -34,7 +35,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/trace/apiv2/trace_client.go b/trace/apiv2/trace_client.go
index 27a0162..1581d67 100644
--- a/trace/apiv2/trace_client.go
+++ b/trace/apiv2/trace_client.go
@@ -17,11 +17,10 @@
 package trace
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	cloudtracepb "google.golang.org/genproto/googleapis/devtools/cloudtrace/v2"
@@ -118,8 +117,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/trace/apiv2/trace_client_example_test.go b/trace/apiv2/trace_client_example_test.go
index d070ccf..ebd17fa 100644
--- a/trace/apiv2/trace_client_example_test.go
+++ b/trace/apiv2/trace_client_example_test.go
@@ -17,8 +17,9 @@
 package trace_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/trace/apiv2"
-	"golang.org/x/net/context"
 	cloudtracepb "google.golang.org/genproto/googleapis/devtools/cloudtrace/v2"
 )
 
diff --git a/trace/grpc.go b/trace/grpc.go
index 277d0f3..42626bb 100644
--- a/trace/grpc.go
+++ b/trace/grpc.go
@@ -18,8 +18,9 @@
 	"encoding/hex"
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/internal/tracecontext"
-	"golang.org/x/net/context"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/metadata"
 )
diff --git a/trace/grpc_test.go b/trace/grpc_test.go
index 78cabf9..1d0e939 100644
--- a/trace/grpc_test.go
+++ b/trace/grpc_test.go
@@ -22,8 +22,9 @@
 	"strings"
 	"testing"
 
+	"context"
+
 	pb "cloud.google.com/go/trace/testdata/helloworld"
-	"golang.org/x/net/context"
 	"google.golang.org/grpc"
 )
 
diff --git a/trace/testdata/helloworld/helloworld.pb.go b/trace/testdata/helloworld/helloworld.pb.go
index 96307c6..2ece7a5 100644
--- a/trace/testdata/helloworld/helloworld.pb.go
+++ b/trace/testdata/helloworld/helloworld.pb.go
@@ -29,7 +29,8 @@
 import math "math"
 
 import (
-	context "golang.org/x/net/context"
+	"context"
+
 	grpc "google.golang.org/grpc"
 )
 
diff --git a/trace/trace.go b/trace/trace.go
index ff032ae..1d5f21c 100644
--- a/trace/trace.go
+++ b/trace/trace.go
@@ -29,7 +29,8 @@
 	"sync/atomic"
 	"time"
 
-	"golang.org/x/net/context"
+	"context"
+
 	api "google.golang.org/api/cloudtrace/v1"
 	"google.golang.org/api/gensupport"
 	"google.golang.org/api/option"
diff --git a/trace/trace_test.go b/trace/trace_test.go
index ad8cabf..a1acc00 100644
--- a/trace/trace_test.go
+++ b/trace/trace_test.go
@@ -27,10 +27,11 @@
 	"testing"
 	"time"
 
+	"context"
+
 	"cloud.google.com/go/datastore"
 	"cloud.google.com/go/internal/testutil"
 	"cloud.google.com/go/storage"
-	"golang.org/x/net/context"
 	api "google.golang.org/api/cloudtrace/v1"
 	compute "google.golang.org/api/compute/v1"
 	"google.golang.org/api/iterator"
diff --git a/translate/examples_test.go b/translate/examples_test.go
index 2fbf4ad..0fecbeb 100644
--- a/translate/examples_test.go
+++ b/translate/examples_test.go
@@ -17,8 +17,9 @@
 import (
 	"fmt"
 
+	"context"
+
 	"cloud.google.com/go/translate"
-	"golang.org/x/net/context"
 	"golang.org/x/text/language"
 )
 
diff --git a/translate/internal/translate/v2/translate-nov2016-gen.go b/translate/internal/translate/v2/translate-nov2016-gen.go
index 724fe97..fe14418 100644
--- a/translate/internal/translate/v2/translate-nov2016-gen.go
+++ b/translate/internal/translate/v2/translate-nov2016-gen.go
@@ -34,8 +34,8 @@
 	"strconv"
 	"strings"
 
-	context "golang.org/x/net/context"
-	ctxhttp "golang.org/x/net/context/ctxhttp"
+	"context"
+
 	gensupport "google.golang.org/api/gensupport"
 	googleapi "google.golang.org/api/googleapi"
 )
@@ -53,7 +53,6 @@
 var _ = errors.New
 var _ = strings.Replace
 var _ = context.Canceled
-var _ = ctxhttp.Do
 
 const apiId = "translate:v2"
 const apiName = "translate"
diff --git a/translate/translate.go b/translate/translate.go
index d1be8bc..3d7cb76 100644
--- a/translate/translate.go
+++ b/translate/translate.go
@@ -20,9 +20,10 @@
 	"fmt"
 	"net/http"
 
+	"context"
+
 	"cloud.google.com/go/internal/version"
 	raw "cloud.google.com/go/translate/internal/translate/v2"
-	"golang.org/x/net/context"
 	"golang.org/x/text/language"
 	"google.golang.org/api/option"
 	htransport "google.golang.org/api/transport/http"
diff --git a/translate/translate_test.go b/translate/translate_test.go
index 0a44bd1..1667c08 100644
--- a/translate/translate_test.go
+++ b/translate/translate_test.go
@@ -25,8 +25,9 @@
 	"sync"
 	"testing"
 
+	"context"
+
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"golang.org/x/text/language"
 	"google.golang.org/api/option"
 )
diff --git a/videointelligence/apiv1/AnnotateVideo_smoke_test.go b/videointelligence/apiv1/AnnotateVideo_smoke_test.go
index 01aa8d4..9f28854 100644
--- a/videointelligence/apiv1/AnnotateVideo_smoke_test.go
+++ b/videointelligence/apiv1/AnnotateVideo_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/videointelligence/apiv1/doc.go b/videointelligence/apiv1/doc.go
index cf0c5bf..6d0600b 100644
--- a/videointelligence/apiv1/doc.go
+++ b/videointelligence/apiv1/doc.go
@@ -23,7 +23,11 @@
 package videointelligence // import "cloud.google.com/go/videointelligence/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/videointelligence/apiv1/mock_test.go b/videointelligence/apiv1/mock_test.go
index b306b93..59919e0 100644
--- a/videointelligence/apiv1/mock_test.go
+++ b/videointelligence/apiv1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/videointelligence/apiv1/video_intelligence_client.go b/videointelligence/apiv1/video_intelligence_client.go
index 47b7029..e16d1dd 100644
--- a/videointelligence/apiv1/video_intelligence_client.go
+++ b/videointelligence/apiv1/video_intelligence_client.go
@@ -17,13 +17,12 @@
 package videointelligence
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	videointelligencepb "google.golang.org/genproto/googleapis/cloud/videointelligence/v1"
@@ -131,8 +130,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/videointelligence/apiv1/video_intelligence_client_example_test.go b/videointelligence/apiv1/video_intelligence_client_example_test.go
index 25cd761..d0fcd6a 100644
--- a/videointelligence/apiv1/video_intelligence_client_example_test.go
+++ b/videointelligence/apiv1/video_intelligence_client_example_test.go
@@ -17,8 +17,9 @@
 package videointelligence_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/videointelligence/apiv1"
-	"golang.org/x/net/context"
 	videointelligencepb "google.golang.org/genproto/googleapis/cloud/videointelligence/v1"
 )
 
diff --git a/videointelligence/apiv1beta1/doc.go b/videointelligence/apiv1beta1/doc.go
index f003315..b8d16fc 100644
--- a/videointelligence/apiv1beta1/doc.go
+++ b/videointelligence/apiv1beta1/doc.go
@@ -23,7 +23,11 @@
 package videointelligence // import "cloud.google.com/go/videointelligence/apiv1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/videointelligence/apiv1beta1/mock_test.go b/videointelligence/apiv1beta1/mock_test.go
index bb9f3c2..bcf22f7 100644
--- a/videointelligence/apiv1beta1/mock_test.go
+++ b/videointelligence/apiv1beta1/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/videointelligence/apiv1beta1/video_intelligence_client.go b/videointelligence/apiv1beta1/video_intelligence_client.go
index 581ebb4..f300393 100644
--- a/videointelligence/apiv1beta1/video_intelligence_client.go
+++ b/videointelligence/apiv1beta1/video_intelligence_client.go
@@ -17,13 +17,12 @@
 package videointelligence
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	videointelligencepb "google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1"
@@ -131,8 +130,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/videointelligence/apiv1beta1/video_intelligence_client_example_test.go b/videointelligence/apiv1beta1/video_intelligence_client_example_test.go
index 1c693ff..52da320 100644
--- a/videointelligence/apiv1beta1/video_intelligence_client_example_test.go
+++ b/videointelligence/apiv1beta1/video_intelligence_client_example_test.go
@@ -17,8 +17,9 @@
 package videointelligence_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/videointelligence/apiv1beta1"
-	"golang.org/x/net/context"
 	videointelligencepb "google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1"
 )
 
diff --git a/videointelligence/apiv1beta2/doc.go b/videointelligence/apiv1beta2/doc.go
index 6545493..5510ebf 100644
--- a/videointelligence/apiv1beta2/doc.go
+++ b/videointelligence/apiv1beta2/doc.go
@@ -23,7 +23,11 @@
 package videointelligence // import "cloud.google.com/go/videointelligence/apiv1beta2"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -44,3 +48,42 @@
 		"https://www.googleapis.com/auth/cloud-platform",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/videointelligence/apiv1beta2/mock_test.go b/videointelligence/apiv1beta2/mock_test.go
index a6494a3..4214c26 100644
--- a/videointelligence/apiv1beta2/mock_test.go
+++ b/videointelligence/apiv1beta2/mock_test.go
@@ -22,6 +22,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -33,7 +34,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/videointelligence/apiv1beta2/video_intelligence_client.go b/videointelligence/apiv1beta2/video_intelligence_client.go
index 78b3641..d662165 100644
--- a/videointelligence/apiv1beta2/video_intelligence_client.go
+++ b/videointelligence/apiv1beta2/video_intelligence_client.go
@@ -17,13 +17,12 @@
 package videointelligence
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	videointelligencepb "google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2"
@@ -131,8 +130,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *Client) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/videointelligence/apiv1beta2/video_intelligence_client_example_test.go b/videointelligence/apiv1beta2/video_intelligence_client_example_test.go
index 6a8024f..e5fcb3d 100644
--- a/videointelligence/apiv1beta2/video_intelligence_client_example_test.go
+++ b/videointelligence/apiv1beta2/video_intelligence_client_example_test.go
@@ -17,8 +17,9 @@
 package videointelligence_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/videointelligence/apiv1beta2"
-	"golang.org/x/net/context"
 	videointelligencepb "google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2"
 )
 
diff --git a/vision/apiv1/BatchAnnotateImages_smoke_test.go b/vision/apiv1/BatchAnnotateImages_smoke_test.go
index 606c711..a4d9938 100644
--- a/vision/apiv1/BatchAnnotateImages_smoke_test.go
+++ b/vision/apiv1/BatchAnnotateImages_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/vision/apiv1/client.go b/vision/apiv1/client.go
index 43c42b4..ca86e32 100644
--- a/vision/apiv1/client.go
+++ b/vision/apiv1/client.go
@@ -15,8 +15,9 @@
 package vision
 
 import (
+	"context"
+
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/cloud/vision/v1"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
diff --git a/vision/apiv1/client_test.go b/vision/apiv1/client_test.go
index 40174aa..1c8306f 100644
--- a/vision/apiv1/client_test.go
+++ b/vision/apiv1/client_test.go
@@ -19,8 +19,9 @@
 	"reflect"
 	"testing"
 
+	"context"
+
 	"github.com/golang/protobuf/proto"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/cloud/vision/v1"
 	"google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/vision/apiv1/doc.go b/vision/apiv1/doc.go
index e94d383..77728e9 100644
--- a/vision/apiv1/doc.go
+++ b/vision/apiv1/doc.go
@@ -25,7 +25,11 @@
 package vision // import "cloud.google.com/go/vision/apiv1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -47,3 +51,42 @@
 		"https://www.googleapis.com/auth/cloud-vision",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/vision/apiv1/examples_test.go b/vision/apiv1/examples_test.go
index 280cc83..92861bd 100644
--- a/vision/apiv1/examples_test.go
+++ b/vision/apiv1/examples_test.go
@@ -18,8 +18,9 @@
 	"fmt"
 	"os"
 
+	"context"
+
 	vision "cloud.google.com/go/vision/apiv1"
-	"golang.org/x/net/context"
 	pb "google.golang.org/genproto/googleapis/cloud/vision/v1"
 )
 
diff --git a/vision/apiv1/image_annotator_client.go b/vision/apiv1/image_annotator_client.go
index 901e53f..d82eedd 100644
--- a/vision/apiv1/image_annotator_client.go
+++ b/vision/apiv1/image_annotator_client.go
@@ -17,13 +17,12 @@
 package vision
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
@@ -135,8 +134,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ImageAnnotatorClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/vision/apiv1/image_annotator_client_example_test.go b/vision/apiv1/image_annotator_client_example_test.go
index 83de6c9..2f646b6 100644
--- a/vision/apiv1/image_annotator_client_example_test.go
+++ b/vision/apiv1/image_annotator_client_example_test.go
@@ -17,8 +17,9 @@
 package vision_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/vision/apiv1"
-	"golang.org/x/net/context"
 	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
 )
 
diff --git a/vision/apiv1/mock_test.go b/vision/apiv1/mock_test.go
index 7a4d529..cc4eb0e 100644
--- a/vision/apiv1/mock_test.go
+++ b/vision/apiv1/mock_test.go
@@ -23,6 +23,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -34,7 +35,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"
diff --git a/vision/apiv1/product_search_client.go b/vision/apiv1/product_search_client.go
index 4209e3a..f83f8e4 100644
--- a/vision/apiv1/product_search_client.go
+++ b/vision/apiv1/product_search_client.go
@@ -17,15 +17,14 @@
 package vision
 
 import (
+	"context"
 	"math"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	"cloud.google.com/go/longrunning"
 	lroauto "cloud.google.com/go/longrunning/autogen"
 	"github.com/golang/protobuf/proto"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
@@ -181,8 +180,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ProductSearchClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/vision/apiv1/product_search_client_example_test.go b/vision/apiv1/product_search_client_example_test.go
index cea6087..69eb756 100644
--- a/vision/apiv1/product_search_client_example_test.go
+++ b/vision/apiv1/product_search_client_example_test.go
@@ -17,8 +17,9 @@
 package vision_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/vision/apiv1"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
 )
diff --git a/vision/apiv1p1beta1/BatchAnnotateImages_smoke_test.go b/vision/apiv1p1beta1/BatchAnnotateImages_smoke_test.go
index 50f6376..cea107b 100644
--- a/vision/apiv1p1beta1/BatchAnnotateImages_smoke_test.go
+++ b/vision/apiv1p1beta1/BatchAnnotateImages_smoke_test.go
@@ -21,13 +21,13 @@
 )
 
 import (
+	"context"
 	"fmt"
 	"strconv"
 	"testing"
 	"time"
 
 	"cloud.google.com/go/internal/testutil"
-	"golang.org/x/net/context"
 	"google.golang.org/api/iterator"
 	"google.golang.org/api/option"
 )
diff --git a/vision/apiv1p1beta1/doc.go b/vision/apiv1p1beta1/doc.go
index f25ee7a..94f93c8 100644
--- a/vision/apiv1p1beta1/doc.go
+++ b/vision/apiv1p1beta1/doc.go
@@ -26,7 +26,11 @@
 package vision // import "cloud.google.com/go/vision/apiv1p1beta1"
 
 import (
-	"golang.org/x/net/context"
+	"context"
+	"runtime"
+	"strings"
+	"unicode"
+
 	"google.golang.org/grpc/metadata"
 )
 
@@ -48,3 +52,42 @@
 		"https://www.googleapis.com/auth/cloud-vision",
 	}
 }
+
+// versionGo returns the Go runtime version. The returned string
+// has no whitespace, suitable for reporting in header.
+func versionGo() string {
+	const develPrefix = "devel +"
+
+	s := runtime.Version()
+	if strings.HasPrefix(s, develPrefix) {
+		s = s[len(develPrefix):]
+		if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
+			s = s[:p]
+		}
+		return s
+	}
+
+	notSemverRune := func(r rune) bool {
+		return strings.IndexRune("0123456789.", r) < 0
+	}
+
+	if strings.HasPrefix(s, "go1") {
+		s = s[2:]
+		var prerelease string
+		if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
+			s, prerelease = s[:p], s[p:]
+		}
+		if strings.HasSuffix(s, ".") {
+			s += "0"
+		} else if strings.Count(s, ".") < 2 {
+			s += ".0"
+		}
+		if prerelease != "" {
+			s += "-" + prerelease
+		}
+		return s
+	}
+	return "UNKNOWN"
+}
+
+const versionClient = "20181106"
diff --git a/vision/apiv1p1beta1/image_annotator_client.go b/vision/apiv1p1beta1/image_annotator_client.go
index 1a446e4..d0a7537 100644
--- a/vision/apiv1p1beta1/image_annotator_client.go
+++ b/vision/apiv1p1beta1/image_annotator_client.go
@@ -17,11 +17,10 @@
 package vision
 
 import (
+	"context"
 	"time"
 
-	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	"google.golang.org/api/transport"
 	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1"
@@ -114,8 +113,8 @@
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
 func (c *ImageAnnotatorClient) setGoogleClientInfo(keyval ...string) {
-	kv := append([]string{"gl-go", version.Go()}, keyval...)
-	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
+	kv := append([]string{"gl-go", versionGo()}, keyval...)
+	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
 }
 
diff --git a/vision/apiv1p1beta1/image_annotator_client_example_test.go b/vision/apiv1p1beta1/image_annotator_client_example_test.go
index ed5aae6..db334f8 100644
--- a/vision/apiv1p1beta1/image_annotator_client_example_test.go
+++ b/vision/apiv1p1beta1/image_annotator_client_example_test.go
@@ -17,8 +17,9 @@
 package vision_test
 
 import (
+	"context"
+
 	"cloud.google.com/go/vision/apiv1p1beta1"
-	"golang.org/x/net/context"
 	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1"
 )
 
diff --git a/vision/apiv1p1beta1/mock_test.go b/vision/apiv1p1beta1/mock_test.go
index 5f330cf..999a453 100644
--- a/vision/apiv1p1beta1/mock_test.go
+++ b/vision/apiv1p1beta1/mock_test.go
@@ -21,6 +21,7 @@
 )
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"io"
@@ -32,7 +33,6 @@
 
 	"github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/ptypes"
-	"golang.org/x/net/context"
 	"google.golang.org/api/option"
 	status "google.golang.org/genproto/googleapis/rpc/status"
 	"google.golang.org/grpc"