Reorganize packages.

Reserve io.grpc for public API only, and all internal stuff in core to
io.grpc.internal, including the non-stable transport API.

Raise the netty/okhttp/inprocess subpackages one level up to io.grpc,
because they are public API and entry points for most users.

Details:

- Rename io.grpc.transport to io.grpc.internal;
- Move SharedResourceHolder and SerializingExecutor to io.grpc.internal
- Rename io.grpc.transport.{netty|okhttp|inprocess} to
  io.grpc.{netty|okhttp|inprocess}
diff --git a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
index 4792e57..64864f5 100644
--- a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
+++ b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
@@ -44,7 +44,7 @@
 import io.grpc.ChannelImpl;
 import io.grpc.stub.StreamObserver;
 import io.grpc.stub.StreamRecorder;
-import io.grpc.transport.okhttp.OkHttpChannelBuilder;
+import io.grpc.okhttp.OkHttpChannelBuilder;
 
 import junit.framework.Assert;
 
diff --git a/benchmarks/src/jmh/java/io/grpc/benchmarks/TransportBenchmark.java b/benchmarks/src/jmh/java/io/grpc/benchmarks/TransportBenchmark.java
index 20506c3..a822128 100644
--- a/benchmarks/src/jmh/java/io/grpc/benchmarks/TransportBenchmark.java
+++ b/benchmarks/src/jmh/java/io/grpc/benchmarks/TransportBenchmark.java
@@ -41,16 +41,16 @@
 import io.grpc.ChannelImpl;
 import io.grpc.ServerImpl;
 import io.grpc.benchmarks.qps.AsyncServer;
+import io.grpc.inprocess.InProcessChannelBuilder;
+import io.grpc.inprocess.InProcessServerBuilder;
+import io.grpc.netty.NegotiationType;
+import io.grpc.netty.NettyChannelBuilder;
+import io.grpc.netty.NettyServerBuilder;
+import io.grpc.okhttp.OkHttpChannelBuilder;
 import io.grpc.testing.Payload;
 import io.grpc.testing.SimpleRequest;
 import io.grpc.testing.SimpleResponse;
 import io.grpc.testing.TestServiceGrpc;
-import io.grpc.transport.inprocess.InProcessChannelBuilder;
-import io.grpc.transport.inprocess.InProcessServerBuilder;
-import io.grpc.transport.netty.NegotiationType;
-import io.grpc.transport.netty.NettyChannelBuilder;
-import io.grpc.transport.netty.NettyServerBuilder;
-import io.grpc.transport.okhttp.OkHttpChannelBuilder;
 import io.netty.channel.local.LocalAddress;
 import io.netty.channel.local.LocalChannel;
 import io.netty.channel.local.LocalServerChannel;
@@ -121,7 +121,7 @@
         InetSocketAddress address = new InetSocketAddress("localhost", port);
         serverBuilder = NettyServerBuilder.forAddress(address);
         channelBuilder = OkHttpChannelBuilder.forAddress("localhost", port)
-            .negotiationType(io.grpc.transport.okhttp.NegotiationType.PLAINTEXT);
+            .negotiationType(io.grpc.okhttp.NegotiationType.PLAINTEXT);
         break;
       }
       default:
diff --git a/benchmarks/src/jmh/java/io/grpc/benchmarks/netty/AbstractBenchmark.java b/benchmarks/src/jmh/java/io/grpc/benchmarks/netty/AbstractBenchmark.java
index 7872f1d..b1c562b 100644
--- a/benchmarks/src/jmh/java/io/grpc/benchmarks/netty/AbstractBenchmark.java
+++ b/benchmarks/src/jmh/java/io/grpc/benchmarks/netty/AbstractBenchmark.java
@@ -16,11 +16,11 @@
 import io.grpc.ServerImpl;
 import io.grpc.ServerServiceDefinition;
 import io.grpc.Status;
+import io.grpc.netty.NegotiationType;
+import io.grpc.netty.NettyChannelBuilder;
+import io.grpc.netty.NettyServerBuilder;
 import io.grpc.stub.ClientCalls;
 import io.grpc.stub.StreamObserver;
-import io.grpc.transport.netty.NegotiationType;
-import io.grpc.transport.netty.NettyChannelBuilder;
-import io.grpc.transport.netty.NettyServerBuilder;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.EmptyByteBuf;
 import io.netty.buffer.PooledByteBufAllocator;
diff --git a/benchmarks/src/main/java/io/grpc/benchmarks/qps/AsyncServer.java b/benchmarks/src/main/java/io/grpc/benchmarks/qps/AsyncServer.java
index 094d961..78e292b 100644
--- a/benchmarks/src/main/java/io/grpc/benchmarks/qps/AsyncServer.java
+++ b/benchmarks/src/main/java/io/grpc/benchmarks/qps/AsyncServer.java
@@ -36,6 +36,8 @@
 
 import io.grpc.ServerImpl;
 import io.grpc.Status;
+import io.grpc.netty.GrpcSslContexts;
+import io.grpc.netty.NettyServerBuilder;
 import io.grpc.stub.StreamObserver;
 import io.grpc.testing.Payload;
 import io.grpc.testing.PayloadType;
@@ -43,9 +45,6 @@
 import io.grpc.testing.SimpleResponse;
 import io.grpc.testing.TestServiceGrpc;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.netty.GrpcSslContexts;
-import io.grpc.transport.netty.NettyServerBuilder;
-
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.ServerChannel;
 import io.netty.channel.nio.NioEventLoopGroup;
diff --git a/benchmarks/src/main/java/io/grpc/benchmarks/qps/ClientConfiguration.java b/benchmarks/src/main/java/io/grpc/benchmarks/qps/ClientConfiguration.java
index f853dd6..fbb1aeb 100644
--- a/benchmarks/src/main/java/io/grpc/benchmarks/qps/ClientConfiguration.java
+++ b/benchmarks/src/main/java/io/grpc/benchmarks/qps/ClientConfiguration.java
@@ -39,10 +39,10 @@
 import static java.lang.Integer.parseInt;
 import static java.util.Arrays.asList;
 
+import io.grpc.netty.NettyChannelBuilder;
 import io.grpc.testing.PayloadType;
 import io.grpc.testing.RpcType;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.netty.NettyChannelBuilder;
 
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
diff --git a/benchmarks/src/main/java/io/grpc/benchmarks/qps/ServerConfiguration.java b/benchmarks/src/main/java/io/grpc/benchmarks/qps/ServerConfiguration.java
index c9fee02..f8bc704 100644
--- a/benchmarks/src/main/java/io/grpc/benchmarks/qps/ServerConfiguration.java
+++ b/benchmarks/src/main/java/io/grpc/benchmarks/qps/ServerConfiguration.java
@@ -36,8 +36,8 @@
 import static io.grpc.benchmarks.qps.Utils.parseBoolean;
 import static java.lang.Integer.parseInt;
 
+import io.grpc.netty.NettyChannelBuilder;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.netty.NettyChannelBuilder;
 
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
diff --git a/benchmarks/src/main/java/io/grpc/benchmarks/qps/Utils.java b/benchmarks/src/main/java/io/grpc/benchmarks/qps/Utils.java
index 53d0e6b..6448979 100644
--- a/benchmarks/src/main/java/io/grpc/benchmarks/qps/Utils.java
+++ b/benchmarks/src/main/java/io/grpc/benchmarks/qps/Utils.java
@@ -35,14 +35,13 @@
 import com.google.protobuf.ByteString;
 
 import io.grpc.Channel;
+import io.grpc.netty.GrpcSslContexts;
+import io.grpc.netty.NegotiationType;
+import io.grpc.netty.NettyChannelBuilder;
+import io.grpc.okhttp.OkHttpChannelBuilder;
 import io.grpc.testing.Payload;
 import io.grpc.testing.SimpleRequest;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.netty.GrpcSslContexts;
-import io.grpc.transport.netty.NegotiationType;
-import io.grpc.transport.netty.NettyChannelBuilder;
-import io.grpc.transport.okhttp.OkHttpChannelBuilder;
-
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.epoll.EpollDomainSocketChannel;
 import io.netty.channel.epoll.EpollEventLoopGroup;
@@ -134,8 +133,8 @@
       OkHttpChannelBuilder builder = OkHttpChannelBuilder
           .forAddress(addr.getHostName(), addr.getPort())
           .executor(config.directExecutor ? MoreExecutors.newDirectExecutorService() : null);
-      builder.negotiationType(config.tls ? io.grpc.transport.okhttp.NegotiationType.TLS
-          : io.grpc.transport.okhttp.NegotiationType.PLAINTEXT);
+      builder.negotiationType(config.tls ? io.grpc.okhttp.NegotiationType.TLS
+          : io.grpc.okhttp.NegotiationType.PLAINTEXT);
       if (config.tls) {
         SSLSocketFactory factory;
         if (config.testca) {
diff --git a/core/src/main/java/io/grpc/AbstractChannelBuilder.java b/core/src/main/java/io/grpc/AbstractChannelBuilder.java
index c4e66f8..c966202 100644
--- a/core/src/main/java/io/grpc/AbstractChannelBuilder.java
+++ b/core/src/main/java/io/grpc/AbstractChannelBuilder.java
@@ -34,8 +34,9 @@
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
-import io.grpc.SharedResourceHolder.Resource;
-import io.grpc.transport.ClientTransportFactory;
+import io.grpc.internal.ClientTransportFactory;
+import io.grpc.internal.SharedResourceHolder;
+import io.grpc.internal.SharedResourceHolder.Resource;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/core/src/main/java/io/grpc/AbstractServerBuilder.java b/core/src/main/java/io/grpc/AbstractServerBuilder.java
index 6444748..dd3e79b 100644
--- a/core/src/main/java/io/grpc/AbstractServerBuilder.java
+++ b/core/src/main/java/io/grpc/AbstractServerBuilder.java
@@ -35,6 +35,8 @@
 
 import com.google.common.base.Preconditions;
 
+import io.grpc.internal.SharedResourceHolder;
+
 import java.util.concurrent.ExecutorService;
 
 import javax.annotation.Nullable;
@@ -138,7 +140,7 @@
    * The essentials required for creating a server.
    */
   protected static class ServerEssentials {
-    final io.grpc.transport.Server server;
+    final io.grpc.internal.Server server;
     @Nullable
     final Runnable terminationRunnable;
 
@@ -148,7 +150,7 @@
      * @param server the created server uses this server to accept transports
      * @param terminationRunnable will be called at the server termination
      */
-    public ServerEssentials(io.grpc.transport.Server server,
+    public ServerEssentials(io.grpc.internal.Server server,
         @Nullable Runnable terminationRunnable) {
       this.server = Preconditions.checkNotNull(server, "server");
       this.terminationRunnable = terminationRunnable;
diff --git a/core/src/main/java/io/grpc/ChannelImpl.java b/core/src/main/java/io/grpc/ChannelImpl.java
index 7e18ecf..11ae249 100644
--- a/core/src/main/java/io/grpc/ChannelImpl.java
+++ b/core/src/main/java/io/grpc/ChannelImpl.java
@@ -36,12 +36,14 @@
 
 import io.grpc.ClientCallImpl.ClientTransportProvider;
 import io.grpc.Metadata.Headers;
-import io.grpc.transport.ClientStream;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.ClientTransport.PingCallback;
-import io.grpc.transport.ClientTransportFactory;
-import io.grpc.transport.HttpUtil;
+import io.grpc.internal.ClientStream;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.ClientTransport.PingCallback;
+import io.grpc.internal.ClientTransportFactory;
+import io.grpc.internal.HttpUtil;
+import io.grpc.internal.SerializingExecutor;
+import io.grpc.internal.SharedResourceHolder;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/core/src/main/java/io/grpc/ClientCallImpl.java b/core/src/main/java/io/grpc/ClientCallImpl.java
index 835fee4..3261432 100644
--- a/core/src/main/java/io/grpc/ClientCallImpl.java
+++ b/core/src/main/java/io/grpc/ClientCallImpl.java
@@ -37,10 +37,11 @@
 import com.google.common.base.Throwables;
 
 import io.grpc.MethodDescriptor.MethodType;
-import io.grpc.transport.ClientStream;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.HttpUtil;
+import io.grpc.internal.ClientStream;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.HttpUtil;
+import io.grpc.internal.SerializingExecutor;
 
 import java.io.InputStream;
 import java.util.concurrent.ScheduledExecutorService;
diff --git a/core/src/main/java/io/grpc/Context.java b/core/src/main/java/io/grpc/Context.java
index 78cec9f..873adff 100644
--- a/core/src/main/java/io/grpc/Context.java
+++ b/core/src/main/java/io/grpc/Context.java
@@ -35,6 +35,8 @@
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
+import io.grpc.internal.SharedResourceHolder;
+
 import java.io.Closeable;
 import java.io.IOException;
 import java.util.ArrayDeque;
@@ -51,7 +53,6 @@
 
 import javax.annotation.Nullable;
 
-
 /**
  * A context propagation mechanism which carries deadlines, cancellation signals,
  * and other scoped values across API boundaries and between threads. Examples of functionality
diff --git a/core/src/main/java/io/grpc/ServerImpl.java b/core/src/main/java/io/grpc/ServerImpl.java
index b619233..6d94801 100644
--- a/core/src/main/java/io/grpc/ServerImpl.java
+++ b/core/src/main/java/io/grpc/ServerImpl.java
@@ -37,11 +37,13 @@
 import com.google.common.base.Throwables;
 import com.google.common.util.concurrent.Futures;
 
-import io.grpc.transport.ServerListener;
-import io.grpc.transport.ServerStream;
-import io.grpc.transport.ServerStreamListener;
-import io.grpc.transport.ServerTransport;
-import io.grpc.transport.ServerTransportListener;
+import io.grpc.internal.SerializingExecutor;
+import io.grpc.internal.ServerListener;
+import io.grpc.internal.ServerStream;
+import io.grpc.internal.ServerStreamListener;
+import io.grpc.internal.ServerTransport;
+import io.grpc.internal.ServerTransportListener;
+import io.grpc.internal.SharedResourceHolder;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -80,7 +82,7 @@
   private boolean terminated;
   private Runnable terminationRunnable;
   /** Service encapsulating something similar to an accept() socket. */
-  private final io.grpc.transport.Server transportServer;
+  private final io.grpc.internal.Server transportServer;
   private final Object lock = new Object();
   private boolean transportServerTerminated;
   /** {@code transportServer} and services encapsulating something similar to a TCP connection. */
@@ -95,7 +97,7 @@
    * @param registry of methods to expose to remote clients.
    */
   public ServerImpl(Executor executor, HandlerRegistry registry,
-      io.grpc.transport.Server transportServer) {
+      io.grpc.internal.Server transportServer) {
     this.executor = Preconditions.checkNotNull(executor, "executor");
     this.registry = Preconditions.checkNotNull(registry, "registry");
     this.transportServer = Preconditions.checkNotNull(transportServer, "transportServer");
diff --git a/core/src/main/java/io/grpc/transport/inprocess/InProcessChannelBuilder.java b/core/src/main/java/io/grpc/inprocess/InProcessChannelBuilder.java
similarity index 95%
rename from core/src/main/java/io/grpc/transport/inprocess/InProcessChannelBuilder.java
rename to core/src/main/java/io/grpc/inprocess/InProcessChannelBuilder.java
index 75be5e3..b1b7a57 100644
--- a/core/src/main/java/io/grpc/transport/inprocess/InProcessChannelBuilder.java
+++ b/core/src/main/java/io/grpc/inprocess/InProcessChannelBuilder.java
@@ -29,13 +29,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.inprocess;
+package io.grpc.inprocess;
 
 import com.google.common.base.Preconditions;
 
 import io.grpc.AbstractChannelBuilder;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.ClientTransportFactory;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.ClientTransportFactory;
 
 /**
  * Builder for a channel that issues in-process requests. Clients identify the in-process server by
diff --git a/core/src/main/java/io/grpc/transport/inprocess/InProcessServer.java b/core/src/main/java/io/grpc/inprocess/InProcessServer.java
similarity index 94%
rename from core/src/main/java/io/grpc/transport/inprocess/InProcessServer.java
rename to core/src/main/java/io/grpc/inprocess/InProcessServer.java
index 293ed7b..b90ddf5 100644
--- a/core/src/main/java/io/grpc/transport/inprocess/InProcessServer.java
+++ b/core/src/main/java/io/grpc/inprocess/InProcessServer.java
@@ -29,11 +29,11 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.inprocess;
+package io.grpc.inprocess;
 
-import io.grpc.transport.Server;
-import io.grpc.transport.ServerListener;
-import io.grpc.transport.ServerTransportListener;
+import io.grpc.internal.Server;
+import io.grpc.internal.ServerListener;
+import io.grpc.internal.ServerTransportListener;
 
 import java.io.IOException;
 import java.util.concurrent.ConcurrentHashMap;
diff --git a/core/src/main/java/io/grpc/transport/inprocess/InProcessServerBuilder.java b/core/src/main/java/io/grpc/inprocess/InProcessServerBuilder.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/inprocess/InProcessServerBuilder.java
rename to core/src/main/java/io/grpc/inprocess/InProcessServerBuilder.java
index f34ed5a..667a1aa 100644
--- a/core/src/main/java/io/grpc/transport/inprocess/InProcessServerBuilder.java
+++ b/core/src/main/java/io/grpc/inprocess/InProcessServerBuilder.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.inprocess;
+package io.grpc.inprocess;
 
 import com.google.common.base.Preconditions;
 
diff --git a/core/src/main/java/io/grpc/transport/inprocess/InProcessTransport.java b/core/src/main/java/io/grpc/inprocess/InProcessTransport.java
similarity index 97%
rename from core/src/main/java/io/grpc/transport/inprocess/InProcessTransport.java
rename to core/src/main/java/io/grpc/inprocess/InProcessTransport.java
index e84b13e..d7bc19c 100644
--- a/core/src/main/java/io/grpc/transport/inprocess/InProcessTransport.java
+++ b/core/src/main/java/io/grpc/inprocess/InProcessTransport.java
@@ -29,18 +29,18 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.inprocess;
+package io.grpc.inprocess;
 
 import io.grpc.Metadata;
 import io.grpc.MethodDescriptor;
 import io.grpc.Status;
-import io.grpc.transport.ClientStream;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.ServerStream;
-import io.grpc.transport.ServerStreamListener;
-import io.grpc.transport.ServerTransport;
-import io.grpc.transport.ServerTransportListener;
+import io.grpc.internal.ClientStream;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.ServerStream;
+import io.grpc.internal.ServerStreamListener;
+import io.grpc.internal.ServerTransport;
+import io.grpc.internal.ServerTransportListener;
 
 import java.io.InputStream;
 import java.util.ArrayDeque;
diff --git a/core/src/main/java/io/grpc/transport/AbstractClientStream.java b/core/src/main/java/io/grpc/internal/AbstractClientStream.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/AbstractClientStream.java
rename to core/src/main/java/io/grpc/internal/AbstractClientStream.java
index 63455cc..972b2aa 100644
--- a/core/src/main/java/io/grpc/transport/AbstractClientStream.java
+++ b/core/src/main/java/io/grpc/internal/AbstractClientStream.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static io.grpc.Status.Code.CANCELLED;
 import static io.grpc.Status.Code.DEADLINE_EXCEEDED;
diff --git a/core/src/main/java/io/grpc/transport/AbstractReadableBuffer.java b/core/src/main/java/io/grpc/internal/AbstractReadableBuffer.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/AbstractReadableBuffer.java
rename to core/src/main/java/io/grpc/internal/AbstractReadableBuffer.java
index ae53b3f..308a51f 100644
--- a/core/src/main/java/io/grpc/transport/AbstractReadableBuffer.java
+++ b/core/src/main/java/io/grpc/internal/AbstractReadableBuffer.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 /**
  * Abstract base class for {@link ReadableBuffer} implementations.
diff --git a/core/src/main/java/io/grpc/transport/AbstractServerStream.java b/core/src/main/java/io/grpc/internal/AbstractServerStream.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/AbstractServerStream.java
rename to core/src/main/java/io/grpc/internal/AbstractServerStream.java
index fc125fd..51a8680 100644
--- a/core/src/main/java/io/grpc/transport/AbstractServerStream.java
+++ b/core/src/main/java/io/grpc/internal/AbstractServerStream.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
diff --git a/core/src/main/java/io/grpc/transport/AbstractStream.java b/core/src/main/java/io/grpc/internal/AbstractStream.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/AbstractStream.java
rename to core/src/main/java/io/grpc/internal/AbstractStream.java
index b0c29cd..d7547e6 100644
--- a/core/src/main/java/io/grpc/transport/AbstractStream.java
+++ b/core/src/main/java/io/grpc/internal/AbstractStream.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
diff --git a/core/src/main/java/io/grpc/transport/ClientStream.java b/core/src/main/java/io/grpc/internal/ClientStream.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ClientStream.java
rename to core/src/main/java/io/grpc/internal/ClientStream.java
index 20a08c7..4af75f9 100644
--- a/core/src/main/java/io/grpc/transport/ClientStream.java
+++ b/core/src/main/java/io/grpc/internal/ClientStream.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import io.grpc.Status;
 
diff --git a/core/src/main/java/io/grpc/transport/ClientStreamListener.java b/core/src/main/java/io/grpc/internal/ClientStreamListener.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ClientStreamListener.java
rename to core/src/main/java/io/grpc/internal/ClientStreamListener.java
index 62fb956..1e229a6 100644
--- a/core/src/main/java/io/grpc/transport/ClientStreamListener.java
+++ b/core/src/main/java/io/grpc/internal/ClientStreamListener.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import io.grpc.Metadata;
 import io.grpc.Status;
diff --git a/core/src/main/java/io/grpc/transport/ClientTransport.java b/core/src/main/java/io/grpc/internal/ClientTransport.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/ClientTransport.java
rename to core/src/main/java/io/grpc/internal/ClientTransport.java
index 773d917..b2301dc 100644
--- a/core/src/main/java/io/grpc/transport/ClientTransport.java
+++ b/core/src/main/java/io/grpc/internal/ClientTransport.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import io.grpc.Metadata;
 import io.grpc.MethodDescriptor;
diff --git a/core/src/main/java/io/grpc/transport/ClientTransportFactory.java b/core/src/main/java/io/grpc/internal/ClientTransportFactory.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ClientTransportFactory.java
rename to core/src/main/java/io/grpc/internal/ClientTransportFactory.java
index 83f31aa..a80d963 100644
--- a/core/src/main/java/io/grpc/transport/ClientTransportFactory.java
+++ b/core/src/main/java/io/grpc/internal/ClientTransportFactory.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 /** Pre-configured factory for creating {@link ClientTransport} instances. */
 public interface ClientTransportFactory {
diff --git a/core/src/main/java/io/grpc/transport/CompositeReadableBuffer.java b/core/src/main/java/io/grpc/internal/CompositeReadableBuffer.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/CompositeReadableBuffer.java
rename to core/src/main/java/io/grpc/internal/CompositeReadableBuffer.java
index 87052cc..59ea40c 100644
--- a/core/src/main/java/io/grpc/transport/CompositeReadableBuffer.java
+++ b/core/src/main/java/io/grpc/internal/CompositeReadableBuffer.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/core/src/main/java/io/grpc/transport/ForwardingReadableBuffer.java b/core/src/main/java/io/grpc/internal/ForwardingReadableBuffer.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ForwardingReadableBuffer.java
rename to core/src/main/java/io/grpc/internal/ForwardingReadableBuffer.java
index 7a42a1a..3578c7d 100644
--- a/core/src/main/java/io/grpc/transport/ForwardingReadableBuffer.java
+++ b/core/src/main/java/io/grpc/internal/ForwardingReadableBuffer.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import com.google.common.base.Preconditions;
 
diff --git a/core/src/main/java/io/grpc/transport/Http2ClientStream.java b/core/src/main/java/io/grpc/internal/Http2ClientStream.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/Http2ClientStream.java
rename to core/src/main/java/io/grpc/internal/Http2ClientStream.java
index aef6278..774bdb8 100644
--- a/core/src/main/java/io/grpc/transport/Http2ClientStream.java
+++ b/core/src/main/java/io/grpc/internal/Http2ClientStream.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Preconditions;
diff --git a/core/src/main/java/io/grpc/transport/Http2Ping.java b/core/src/main/java/io/grpc/internal/Http2Ping.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/Http2Ping.java
rename to core/src/main/java/io/grpc/internal/Http2Ping.java
index 204f750..804d443 100644
--- a/core/src/main/java/io/grpc/transport/Http2Ping.java
+++ b/core/src/main/java/io/grpc/internal/Http2Ping.java
@@ -29,12 +29,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import com.google.common.base.Stopwatch;
 import com.google.common.collect.Maps;
 
-import io.grpc.transport.ClientTransport.PingCallback;
+import io.grpc.internal.ClientTransport.PingCallback;
 
 import java.util.Map;
 import java.util.concurrent.Executor;
diff --git a/core/src/main/java/io/grpc/transport/HttpUtil.java b/core/src/main/java/io/grpc/internal/HttpUtil.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/HttpUtil.java
rename to core/src/main/java/io/grpc/internal/HttpUtil.java
index 4583738..ea47505 100644
--- a/core/src/main/java/io/grpc/transport/HttpUtil.java
+++ b/core/src/main/java/io/grpc/internal/HttpUtil.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import io.grpc.Metadata;
 import io.grpc.Status;
diff --git a/core/src/main/java/io/grpc/transport/MessageDeframer.java b/core/src/main/java/io/grpc/internal/MessageDeframer.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/MessageDeframer.java
rename to core/src/main/java/io/grpc/internal/MessageDeframer.java
index 9aa88eb..aeb2f66 100644
--- a/core/src/main/java/io/grpc/transport/MessageDeframer.java
+++ b/core/src/main/java/io/grpc/internal/MessageDeframer.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import com.google.common.base.Preconditions;
 
diff --git a/core/src/main/java/io/grpc/transport/MessageFramer.java b/core/src/main/java/io/grpc/internal/MessageFramer.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/MessageFramer.java
rename to core/src/main/java/io/grpc/internal/MessageFramer.java
index 6682948..fbcb158 100644
--- a/core/src/main/java/io/grpc/transport/MessageFramer.java
+++ b/core/src/main/java/io/grpc/internal/MessageFramer.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static java.lang.Math.min;
 
diff --git a/core/src/main/java/io/grpc/transport/ReadableBuffer.java b/core/src/main/java/io/grpc/internal/ReadableBuffer.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/ReadableBuffer.java
rename to core/src/main/java/io/grpc/internal/ReadableBuffer.java
index 6b72c0f..02e268e 100644
--- a/core/src/main/java/io/grpc/transport/ReadableBuffer.java
+++ b/core/src/main/java/io/grpc/internal/ReadableBuffer.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import java.io.Closeable;
 import java.io.IOException;
diff --git a/core/src/main/java/io/grpc/transport/ReadableBuffers.java b/core/src/main/java/io/grpc/internal/ReadableBuffers.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/ReadableBuffers.java
rename to core/src/main/java/io/grpc/internal/ReadableBuffers.java
index ca8e435..373b9f0 100644
--- a/core/src/main/java/io/grpc/transport/ReadableBuffers.java
+++ b/core/src/main/java/io/grpc/internal/ReadableBuffers.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Charsets.UTF_8;
 
diff --git a/core/src/main/java/io/grpc/SerializingExecutor.java b/core/src/main/java/io/grpc/internal/SerializingExecutor.java
similarity index 99%
rename from core/src/main/java/io/grpc/SerializingExecutor.java
rename to core/src/main/java/io/grpc/internal/SerializingExecutor.java
index 65eaee1..41a0abe 100644
--- a/core/src/main/java/io/grpc/SerializingExecutor.java
+++ b/core/src/main/java/io/grpc/internal/SerializingExecutor.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc;
+package io.grpc.internal;
 
 import com.google.common.base.Preconditions;
 
diff --git a/core/src/main/java/io/grpc/transport/Server.java b/core/src/main/java/io/grpc/internal/Server.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/Server.java
rename to core/src/main/java/io/grpc/internal/Server.java
index a5b7c27..2cbe9e0 100644
--- a/core/src/main/java/io/grpc/transport/Server.java
+++ b/core/src/main/java/io/grpc/internal/Server.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import java.io.IOException;
 
diff --git a/core/src/main/java/io/grpc/transport/ServerListener.java b/core/src/main/java/io/grpc/internal/ServerListener.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ServerListener.java
rename to core/src/main/java/io/grpc/internal/ServerListener.java
index 699ebbe..27e3273 100644
--- a/core/src/main/java/io/grpc/transport/ServerListener.java
+++ b/core/src/main/java/io/grpc/internal/ServerListener.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 /**
  * A listener to a server for transport creation events. The listener need not be thread-safe, so
diff --git a/core/src/main/java/io/grpc/transport/ServerStream.java b/core/src/main/java/io/grpc/internal/ServerStream.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ServerStream.java
rename to core/src/main/java/io/grpc/internal/ServerStream.java
index 0e5fac3..717ce2f 100644
--- a/core/src/main/java/io/grpc/transport/ServerStream.java
+++ b/core/src/main/java/io/grpc/internal/ServerStream.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import io.grpc.Metadata;
 import io.grpc.Status;
diff --git a/core/src/main/java/io/grpc/transport/ServerStreamListener.java b/core/src/main/java/io/grpc/internal/ServerStreamListener.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ServerStreamListener.java
rename to core/src/main/java/io/grpc/internal/ServerStreamListener.java
index e5fa88f..5f81bb3 100644
--- a/core/src/main/java/io/grpc/transport/ServerStreamListener.java
+++ b/core/src/main/java/io/grpc/internal/ServerStreamListener.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import io.grpc.Status;
 
diff --git a/core/src/main/java/io/grpc/transport/ServerTransport.java b/core/src/main/java/io/grpc/internal/ServerTransport.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ServerTransport.java
rename to core/src/main/java/io/grpc/internal/ServerTransport.java
index 8bc0581..f78bff9 100644
--- a/core/src/main/java/io/grpc/transport/ServerTransport.java
+++ b/core/src/main/java/io/grpc/internal/ServerTransport.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 /** An inbound connection. */
 public interface ServerTransport {
diff --git a/core/src/main/java/io/grpc/transport/ServerTransportListener.java b/core/src/main/java/io/grpc/internal/ServerTransportListener.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/ServerTransportListener.java
rename to core/src/main/java/io/grpc/internal/ServerTransportListener.java
index a0af53e..cb5b9af 100644
--- a/core/src/main/java/io/grpc/transport/ServerTransportListener.java
+++ b/core/src/main/java/io/grpc/internal/ServerTransportListener.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import io.grpc.Metadata;
 
diff --git a/core/src/main/java/io/grpc/SharedResourceHolder.java b/core/src/main/java/io/grpc/internal/SharedResourceHolder.java
similarity index 99%
rename from core/src/main/java/io/grpc/SharedResourceHolder.java
rename to core/src/main/java/io/grpc/internal/SharedResourceHolder.java
index 6f397fb..5e0b2c6 100644
--- a/core/src/main/java/io/grpc/SharedResourceHolder.java
+++ b/core/src/main/java/io/grpc/internal/SharedResourceHolder.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc;
+package io.grpc.internal;
 
 import com.google.common.base.Preconditions;
 
diff --git a/core/src/main/java/io/grpc/transport/Stream.java b/core/src/main/java/io/grpc/internal/Stream.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/Stream.java
rename to core/src/main/java/io/grpc/internal/Stream.java
index 9697a8c..9262778 100644
--- a/core/src/main/java/io/grpc/transport/Stream.java
+++ b/core/src/main/java/io/grpc/internal/Stream.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import java.io.InputStream;
 
diff --git a/core/src/main/java/io/grpc/transport/StreamListener.java b/core/src/main/java/io/grpc/internal/StreamListener.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/StreamListener.java
rename to core/src/main/java/io/grpc/internal/StreamListener.java
index 4ce9f14..f18147c 100644
--- a/core/src/main/java/io/grpc/transport/StreamListener.java
+++ b/core/src/main/java/io/grpc/internal/StreamListener.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import java.io.InputStream;
 
diff --git a/core/src/main/java/io/grpc/transport/TransportFrameUtil.java b/core/src/main/java/io/grpc/internal/TransportFrameUtil.java
similarity index 99%
rename from core/src/main/java/io/grpc/transport/TransportFrameUtil.java
rename to core/src/main/java/io/grpc/internal/TransportFrameUtil.java
index c4c3036..1c41d65 100644
--- a/core/src/main/java/io/grpc/transport/TransportFrameUtil.java
+++ b/core/src/main/java/io/grpc/internal/TransportFrameUtil.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Charsets.US_ASCII;
 
diff --git a/core/src/main/java/io/grpc/transport/WritableBuffer.java b/core/src/main/java/io/grpc/internal/WritableBuffer.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/WritableBuffer.java
rename to core/src/main/java/io/grpc/internal/WritableBuffer.java
index 225feb7..964adc9 100644
--- a/core/src/main/java/io/grpc/transport/WritableBuffer.java
+++ b/core/src/main/java/io/grpc/internal/WritableBuffer.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 /**
  * An interface for a byte buffer that can only be written to.
diff --git a/core/src/main/java/io/grpc/transport/WritableBufferAllocator.java b/core/src/main/java/io/grpc/internal/WritableBufferAllocator.java
similarity index 98%
rename from core/src/main/java/io/grpc/transport/WritableBufferAllocator.java
rename to core/src/main/java/io/grpc/internal/WritableBufferAllocator.java
index 44c2f74..d4d337c 100644
--- a/core/src/main/java/io/grpc/transport/WritableBufferAllocator.java
+++ b/core/src/main/java/io/grpc/internal/WritableBufferAllocator.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 /**
  * An allocator of buffers provided by the transport implementation to {@link MessageFramer} so
diff --git a/core/src/test/java/io/grpc/ChannelImplTest.java b/core/src/test/java/io/grpc/ChannelImplTest.java
index 1ff9424..dd4d390 100644
--- a/core/src/test/java/io/grpc/ChannelImplTest.java
+++ b/core/src/test/java/io/grpc/ChannelImplTest.java
@@ -47,10 +47,10 @@
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
-import io.grpc.transport.ClientStream;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.ClientTransportFactory;
+import io.grpc.internal.ClientStream;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.ClientTransportFactory;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/core/src/test/java/io/grpc/ServerImplTest.java b/core/src/test/java/io/grpc/ServerImplTest.java
index 17f73d5..b7a9e4d 100644
--- a/core/src/test/java/io/grpc/ServerImplTest.java
+++ b/core/src/test/java/io/grpc/ServerImplTest.java
@@ -45,11 +45,11 @@
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
 import io.grpc.MethodDescriptor.MethodType;
-import io.grpc.transport.ServerListener;
-import io.grpc.transport.ServerStream;
-import io.grpc.transport.ServerStreamListener;
-import io.grpc.transport.ServerTransport;
-import io.grpc.transport.ServerTransportListener;
+import io.grpc.internal.ServerListener;
+import io.grpc.internal.ServerStream;
+import io.grpc.internal.ServerStreamListener;
+import io.grpc.internal.ServerTransport;
+import io.grpc.internal.ServerTransportListener;
 
 import org.junit.After;
 import org.junit.Before;
@@ -373,7 +373,7 @@
     return barrier;
   }
 
-  private static class SimpleServer implements io.grpc.transport.Server {
+  private static class SimpleServer implements io.grpc.internal.Server {
     ServerListener listener;
 
     @Override
diff --git a/core/src/test/java/io/grpc/transport/AbstractReadableBufferTest.java b/core/src/test/java/io/grpc/internal/AbstractReadableBufferTest.java
similarity index 98%
rename from core/src/test/java/io/grpc/transport/AbstractReadableBufferTest.java
rename to core/src/test/java/io/grpc/internal/AbstractReadableBufferTest.java
index 71be905..9670c38 100644
--- a/core/src/test/java/io/grpc/transport/AbstractReadableBufferTest.java
+++ b/core/src/test/java/io/grpc/internal/AbstractReadableBufferTest.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.when;
diff --git a/core/src/test/java/io/grpc/transport/AbstractStreamTest.java b/core/src/test/java/io/grpc/internal/AbstractStreamTest.java
similarity index 98%
rename from core/src/test/java/io/grpc/transport/AbstractStreamTest.java
rename to core/src/test/java/io/grpc/internal/AbstractStreamTest.java
index 7f5b121..d097ceb 100644
--- a/core/src/test/java/io/grpc/transport/AbstractStreamTest.java
+++ b/core/src/test/java/io/grpc/internal/AbstractStreamTest.java
@@ -30,7 +30,7 @@
  */
 
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.verify;
@@ -38,7 +38,7 @@
 import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Multimap;
 
-import io.grpc.transport.AbstractStream.Phase;
+import io.grpc.internal.AbstractStream.Phase;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/core/src/test/java/io/grpc/transport/ByteWritableBufferTest.java b/core/src/test/java/io/grpc/internal/ByteWritableBufferTest.java
similarity index 98%
rename from core/src/test/java/io/grpc/transport/ByteWritableBufferTest.java
rename to core/src/test/java/io/grpc/internal/ByteWritableBufferTest.java
index b57cf4c..dac8b90 100644
--- a/core/src/test/java/io/grpc/transport/ByteWritableBufferTest.java
+++ b/core/src/test/java/io/grpc/internal/ByteWritableBufferTest.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import org.junit.Before;
 
diff --git a/core/src/test/java/io/grpc/transport/CompositeReadableBufferTest.java b/core/src/test/java/io/grpc/internal/CompositeReadableBufferTest.java
similarity index 99%
rename from core/src/test/java/io/grpc/transport/CompositeReadableBufferTest.java
rename to core/src/test/java/io/grpc/internal/CompositeReadableBufferTest.java
index 89f7718..d183050 100644
--- a/core/src/test/java/io/grpc/transport/CompositeReadableBufferTest.java
+++ b/core/src/test/java/io/grpc/internal/CompositeReadableBufferTest.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Charsets.UTF_8;
 import static org.junit.Assert.assertEquals;
diff --git a/core/src/test/java/io/grpc/transport/HttpUtilTest.java b/core/src/test/java/io/grpc/internal/HttpUtilTest.java
similarity index 97%
rename from core/src/test/java/io/grpc/transport/HttpUtilTest.java
rename to core/src/test/java/io/grpc/internal/HttpUtilTest.java
index cf5ad0f..dc937f2 100644
--- a/core/src/test/java/io/grpc/transport/HttpUtilTest.java
+++ b/core/src/test/java/io/grpc/internal/HttpUtilTest.java
@@ -29,13 +29,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 
 import io.grpc.Status;
-import io.grpc.transport.HttpUtil.Http2Error;
+import io.grpc.internal.HttpUtil.Http2Error;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/core/src/test/java/io/grpc/transport/MessageDeframerTest.java b/core/src/test/java/io/grpc/internal/MessageDeframerTest.java
similarity index 98%
rename from core/src/test/java/io/grpc/transport/MessageDeframerTest.java
rename to core/src/test/java/io/grpc/internal/MessageDeframerTest.java
index b61591c..3cbbdfa 100644
--- a/core/src/test/java/io/grpc/transport/MessageDeframerTest.java
+++ b/core/src/test/java/io/grpc/internal/MessageDeframerTest.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -44,7 +44,7 @@
 import com.google.common.io.ByteStreams;
 import com.google.common.primitives.Bytes;
 
-import io.grpc.transport.MessageDeframer.Listener;
+import io.grpc.internal.MessageDeframer.Listener;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/core/src/test/java/io/grpc/transport/MessageFramerTest.java b/core/src/test/java/io/grpc/internal/MessageFramerTest.java
similarity index 98%
rename from core/src/test/java/io/grpc/transport/MessageFramerTest.java
rename to core/src/test/java/io/grpc/internal/MessageFramerTest.java
index 14163c4..22dc219 100644
--- a/core/src/test/java/io/grpc/transport/MessageFramerTest.java
+++ b/core/src/test/java/io/grpc/internal/MessageFramerTest.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
-import static io.grpc.transport.MessageFramer.Compression;
+import static io.grpc.internal.MessageFramer.Compression;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
diff --git a/core/src/test/java/io/grpc/transport/ReadableBufferTestBase.java b/core/src/test/java/io/grpc/internal/ReadableBufferTestBase.java
similarity index 99%
rename from core/src/test/java/io/grpc/transport/ReadableBufferTestBase.java
rename to core/src/test/java/io/grpc/internal/ReadableBufferTestBase.java
index ca24fa6..e9d0f2d 100644
--- a/core/src/test/java/io/grpc/transport/ReadableBufferTestBase.java
+++ b/core/src/test/java/io/grpc/internal/ReadableBufferTestBase.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Charsets.UTF_8;
 import static org.junit.Assert.assertArrayEquals;
diff --git a/core/src/test/java/io/grpc/transport/ReadableBuffersArrayTest.java b/core/src/test/java/io/grpc/internal/ReadableBuffersArrayTest.java
similarity index 96%
rename from core/src/test/java/io/grpc/transport/ReadableBuffersArrayTest.java
rename to core/src/test/java/io/grpc/internal/ReadableBuffersArrayTest.java
index d9a953d..58e7e00 100644
--- a/core/src/test/java/io/grpc/transport/ReadableBuffersArrayTest.java
+++ b/core/src/test/java/io/grpc/internal/ReadableBuffersArrayTest.java
@@ -29,10 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Charsets.UTF_8;
-import static io.grpc.transport.ReadableBuffers.wrap;
+import static io.grpc.internal.ReadableBuffers.wrap;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
diff --git a/core/src/test/java/io/grpc/transport/ReadableBuffersByteBufferTest.java b/core/src/test/java/io/grpc/internal/ReadableBuffersByteBufferTest.java
similarity index 98%
rename from core/src/test/java/io/grpc/transport/ReadableBuffersByteBufferTest.java
rename to core/src/test/java/io/grpc/internal/ReadableBuffersByteBufferTest.java
index fbd8db2..ab4be76 100644
--- a/core/src/test/java/io/grpc/transport/ReadableBuffersByteBufferTest.java
+++ b/core/src/test/java/io/grpc/internal/ReadableBuffersByteBufferTest.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Charsets.UTF_8;
 
diff --git a/core/src/test/java/io/grpc/SharedResourceHolderTest.java b/core/src/test/java/io/grpc/internal/SharedResourceHolderTest.java
similarity index 98%
rename from core/src/test/java/io/grpc/SharedResourceHolderTest.java
rename to core/src/test/java/io/grpc/internal/SharedResourceHolderTest.java
index f6fa072..9a61350 100644
--- a/core/src/test/java/io/grpc/SharedResourceHolderTest.java
+++ b/core/src/test/java/io/grpc/internal/SharedResourceHolderTest.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc;
+package io.grpc.internal;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -43,7 +43,7 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import io.grpc.SharedResourceHolder.Resource;
+import io.grpc.internal.SharedResourceHolder.Resource;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/core/src/test/java/io/grpc/transport/TransportFrameUtilTest.java b/core/src/test/java/io/grpc/internal/TransportFrameUtilTest.java
similarity index 99%
rename from core/src/test/java/io/grpc/transport/TransportFrameUtilTest.java
rename to core/src/test/java/io/grpc/internal/TransportFrameUtilTest.java
index 0a9162d..73f536a 100644
--- a/core/src/test/java/io/grpc/transport/TransportFrameUtilTest.java
+++ b/core/src/test/java/io/grpc/internal/TransportFrameUtilTest.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static com.google.common.base.Charsets.US_ASCII;
 import static com.google.common.base.Charsets.UTF_8;
diff --git a/core/src/test/java/io/grpc/transport/WritableBufferAllocatorTestBase.java b/core/src/test/java/io/grpc/internal/WritableBufferAllocatorTestBase.java
similarity index 98%
rename from core/src/test/java/io/grpc/transport/WritableBufferAllocatorTestBase.java
rename to core/src/test/java/io/grpc/internal/WritableBufferAllocatorTestBase.java
index 51c321f..cd14c29 100644
--- a/core/src/test/java/io/grpc/transport/WritableBufferAllocatorTestBase.java
+++ b/core/src/test/java/io/grpc/internal/WritableBufferAllocatorTestBase.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static org.junit.Assert.assertNotSame;
 
diff --git a/core/src/test/java/io/grpc/transport/WritableBufferTestBase.java b/core/src/test/java/io/grpc/internal/WritableBufferTestBase.java
similarity index 98%
rename from core/src/test/java/io/grpc/transport/WritableBufferTestBase.java
rename to core/src/test/java/io/grpc/internal/WritableBufferTestBase.java
index aec2fdd..902ac29 100644
--- a/core/src/test/java/io/grpc/transport/WritableBufferTestBase.java
+++ b/core/src/test/java/io/grpc/internal/WritableBufferTestBase.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport;
+package io.grpc.internal;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
diff --git a/examples/src/main/java/io/grpc/examples/header/CustomHeaderClient.java b/examples/src/main/java/io/grpc/examples/header/CustomHeaderClient.java
index 9f80b71..0f9e296 100644
--- a/examples/src/main/java/io/grpc/examples/header/CustomHeaderClient.java
+++ b/examples/src/main/java/io/grpc/examples/header/CustomHeaderClient.java
@@ -38,8 +38,8 @@
 import io.grpc.examples.helloworld.GreeterGrpc;
 import io.grpc.examples.helloworld.HelloRequest;
 import io.grpc.examples.helloworld.HelloResponse;
-import io.grpc.transport.netty.NegotiationType;
-import io.grpc.transport.netty.NettyChannelBuilder;
+import io.grpc.netty.NegotiationType;
+import io.grpc.netty.NettyChannelBuilder;
 
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
diff --git a/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java b/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java
index 1659e0e..0a68f7d 100644
--- a/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java
+++ b/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java
@@ -36,8 +36,8 @@
 import io.grpc.examples.helloworld.GreeterGrpc;
 import io.grpc.examples.helloworld.HelloRequest;
 import io.grpc.examples.helloworld.HelloResponse;
+import io.grpc.netty.NettyServerBuilder;
 import io.grpc.stub.StreamObserver;
-import io.grpc.transport.netty.NettyServerBuilder;
 
 import java.util.logging.Logger;
 
diff --git a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldClient.java b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldClient.java
index 1e60bd6..a4a9d89 100644
--- a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldClient.java
+++ b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldClient.java
@@ -32,8 +32,8 @@
 package io.grpc.examples.helloworld;
 
 import io.grpc.ChannelImpl;
-import io.grpc.transport.netty.NegotiationType;
-import io.grpc.transport.netty.NettyChannelBuilder;
+import io.grpc.netty.NegotiationType;
+import io.grpc.netty.NettyChannelBuilder;
 
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
diff --git a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java
index 57e9f58..5a8a028 100644
--- a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java
+++ b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java
@@ -32,8 +32,8 @@
 package io.grpc.examples.helloworld;
 
 import io.grpc.ServerImpl;
+import io.grpc.netty.NettyServerBuilder;
 import io.grpc.stub.StreamObserver;
-import io.grpc.transport.netty.NettyServerBuilder;
 
 import java.util.logging.Logger;
 
diff --git a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideClient.java b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideClient.java
index c480375..39a0959 100644
--- a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideClient.java
+++ b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideClient.java
@@ -36,9 +36,9 @@
 import io.grpc.ChannelImpl;
 import io.grpc.examples.routeguide.RouteGuideGrpc.RouteGuideBlockingStub;
 import io.grpc.examples.routeguide.RouteGuideGrpc.RouteGuideStub;
+import io.grpc.netty.NegotiationType;
+import io.grpc.netty.NettyChannelBuilder;
 import io.grpc.stub.StreamObserver;
-import io.grpc.transport.netty.NegotiationType;
-import io.grpc.transport.netty.NettyChannelBuilder;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java
index bcbd768..2cf6157 100644
--- a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java
+++ b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java
@@ -41,8 +41,8 @@
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
 import io.grpc.ServerImpl;
+import io.grpc.netty.NettyServerBuilder;
 import io.grpc.stub.StreamObserver;
-import io.grpc.transport.netty.NettyServerBuilder;
 
 import java.io.IOException;
 import java.net.URL;
diff --git a/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java b/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java
index c8dd30a..c55881d 100644
--- a/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java
+++ b/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java
@@ -34,11 +34,11 @@
 import com.google.common.io.Files;
 
 import io.grpc.ChannelImpl;
+import io.grpc.netty.GrpcSslContexts;
+import io.grpc.netty.NegotiationType;
+import io.grpc.netty.NettyChannelBuilder;
+import io.grpc.okhttp.OkHttpChannelBuilder;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.netty.GrpcSslContexts;
-import io.grpc.transport.netty.NegotiationType;
-import io.grpc.transport.netty.NettyChannelBuilder;
-import io.grpc.transport.okhttp.OkHttpChannelBuilder;
 import io.netty.handler.ssl.SslContext;
 
 import java.io.File;
diff --git a/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceServer.java b/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceServer.java
index 53c4537..4b5beae 100644
--- a/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceServer.java
+++ b/interop-testing/src/main/java/io/grpc/testing/integration/TestServiceServer.java
@@ -35,9 +35,9 @@
 
 import io.grpc.ServerImpl;
 import io.grpc.ServerInterceptors;
+import io.grpc.netty.GrpcSslContexts;
+import io.grpc.netty.NettyServerBuilder;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.netty.GrpcSslContexts;
-import io.grpc.transport.netty.NettyServerBuilder;
 import io.netty.handler.ssl.SslContext;
 
 import java.util.concurrent.Executors;
diff --git a/interop-testing/src/test/java/io/grpc/testing/integration/Http2NettyLocalChannelTest.java b/interop-testing/src/test/java/io/grpc/testing/integration/Http2NettyLocalChannelTest.java
index 153fb4f..43c57c5 100644
--- a/interop-testing/src/test/java/io/grpc/testing/integration/Http2NettyLocalChannelTest.java
+++ b/interop-testing/src/test/java/io/grpc/testing/integration/Http2NettyLocalChannelTest.java
@@ -32,9 +32,9 @@
 package io.grpc.testing.integration;
 
 import io.grpc.ChannelImpl;
-import io.grpc.transport.netty.NegotiationType;
-import io.grpc.transport.netty.NettyChannelBuilder;
-import io.grpc.transport.netty.NettyServerBuilder;
+import io.grpc.netty.NegotiationType;
+import io.grpc.netty.NettyChannelBuilder;
+import io.grpc.netty.NettyServerBuilder;
 import io.netty.channel.local.LocalAddress;
 import io.netty.channel.local.LocalChannel;
 import io.netty.channel.local.LocalServerChannel;
diff --git a/interop-testing/src/test/java/io/grpc/testing/integration/Http2NettyTest.java b/interop-testing/src/test/java/io/grpc/testing/integration/Http2NettyTest.java
index 2642631..77fd9d1 100644
--- a/interop-testing/src/test/java/io/grpc/testing/integration/Http2NettyTest.java
+++ b/interop-testing/src/test/java/io/grpc/testing/integration/Http2NettyTest.java
@@ -32,10 +32,10 @@
 package io.grpc.testing.integration;
 
 import io.grpc.ChannelImpl;
+import io.grpc.netty.GrpcSslContexts;
+import io.grpc.netty.NettyChannelBuilder;
+import io.grpc.netty.NettyServerBuilder;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.netty.GrpcSslContexts;
-import io.grpc.transport.netty.NettyChannelBuilder;
-import io.grpc.transport.netty.NettyServerBuilder;
 import io.netty.handler.ssl.SupportedCipherSuiteFilter;
 
 import org.junit.AfterClass;
diff --git a/interop-testing/src/test/java/io/grpc/testing/integration/Http2OkHttpTest.java b/interop-testing/src/test/java/io/grpc/testing/integration/Http2OkHttpTest.java
index 07bdab2..647cd92 100644
--- a/interop-testing/src/test/java/io/grpc/testing/integration/Http2OkHttpTest.java
+++ b/interop-testing/src/test/java/io/grpc/testing/integration/Http2OkHttpTest.java
@@ -35,10 +35,10 @@
 import com.squareup.okhttp.TlsVersion;
 
 import io.grpc.ChannelImpl;
+import io.grpc.netty.GrpcSslContexts;
+import io.grpc.netty.NettyServerBuilder;
+import io.grpc.okhttp.OkHttpChannelBuilder;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.netty.GrpcSslContexts;
-import io.grpc.transport.netty.NettyServerBuilder;
-import io.grpc.transport.okhttp.OkHttpChannelBuilder;
 import io.netty.handler.ssl.SupportedCipherSuiteFilter;
 
 import org.junit.AfterClass;
diff --git a/interop-testing/src/test/java/io/grpc/testing/integration/InProcessTest.java b/interop-testing/src/test/java/io/grpc/testing/integration/InProcessTest.java
index 7245a54..d7f65a5 100644
--- a/interop-testing/src/test/java/io/grpc/testing/integration/InProcessTest.java
+++ b/interop-testing/src/test/java/io/grpc/testing/integration/InProcessTest.java
@@ -32,8 +32,8 @@
 package io.grpc.testing.integration;
 
 import io.grpc.ChannelImpl;
-import io.grpc.transport.inprocess.InProcessChannelBuilder;
-import io.grpc.transport.inprocess.InProcessServerBuilder;
+import io.grpc.inprocess.InProcessChannelBuilder;
+import io.grpc.inprocess.InProcessServerBuilder;
 
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
diff --git a/netty/src/main/java/io/grpc/transport/netty/BufferingHttp2ConnectionEncoder.java b/netty/src/main/java/io/grpc/netty/BufferingHttp2ConnectionEncoder.java
similarity index 99%
rename from netty/src/main/java/io/grpc/transport/netty/BufferingHttp2ConnectionEncoder.java
rename to netty/src/main/java/io/grpc/netty/BufferingHttp2ConnectionEncoder.java
index 3512cfa..fcdf6a5 100644
--- a/netty/src/main/java/io/grpc/transport/netty/BufferingHttp2ConnectionEncoder.java
+++ b/netty/src/main/java/io/grpc/netty/BufferingHttp2ConnectionEncoder.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static io.netty.handler.codec.http2.Http2Error.PROTOCOL_ERROR;
 import static io.netty.handler.codec.http2.Http2Exception.connectionError;
diff --git a/netty/src/main/java/io/grpc/transport/netty/CancelClientStreamCommand.java b/netty/src/main/java/io/grpc/netty/CancelClientStreamCommand.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/CancelClientStreamCommand.java
rename to netty/src/main/java/io/grpc/netty/CancelClientStreamCommand.java
index 1c8f7e3..64dcf0d 100644
--- a/netty/src/main/java/io/grpc/transport/netty/CancelClientStreamCommand.java
+++ b/netty/src/main/java/io/grpc/netty/CancelClientStreamCommand.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static io.grpc.Status.Code.CANCELLED;
 import static io.grpc.Status.Code.DEADLINE_EXCEEDED;
diff --git a/netty/src/main/java/io/grpc/transport/netty/CancelClientStreamCommand.java b/netty/src/main/java/io/grpc/netty/CancelStreamCommand.java
similarity index 93%
copy from netty/src/main/java/io/grpc/transport/netty/CancelClientStreamCommand.java
copy to netty/src/main/java/io/grpc/netty/CancelStreamCommand.java
index 1c8f7e3..4e24513 100644
--- a/netty/src/main/java/io/grpc/transport/netty/CancelClientStreamCommand.java
+++ b/netty/src/main/java/io/grpc/netty/CancelStreamCommand.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static io.grpc.Status.Code.CANCELLED;
 import static io.grpc.Status.Code.DEADLINE_EXCEEDED;
@@ -43,11 +43,11 @@
 /**
  * Command sent from a Netty client stream to the handler to cancel the stream.
  */
-class CancelClientStreamCommand {
+class CancelStreamCommand {
   private final NettyClientStream stream;
   private final Status reason;
 
-  CancelClientStreamCommand(NettyClientStream stream, Status reason) {
+  CancelStreamCommand(NettyClientStream stream, Status reason) {
     this.stream = Preconditions.checkNotNull(stream, "stream");
     Preconditions.checkNotNull(reason);
     Preconditions.checkArgument(EnumSet.of(CANCELLED, DEADLINE_EXCEEDED).contains(reason.getCode()),
diff --git a/netty/src/main/java/io/grpc/transport/netty/CreateStreamCommand.java b/netty/src/main/java/io/grpc/netty/CreateStreamCommand.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/CreateStreamCommand.java
rename to netty/src/main/java/io/grpc/netty/CreateStreamCommand.java
index 794fc8e..3f3f733 100644
--- a/netty/src/main/java/io/grpc/transport/netty/CreateStreamCommand.java
+++ b/netty/src/main/java/io/grpc/netty/CreateStreamCommand.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.Preconditions;
 
diff --git a/netty/src/main/java/io/grpc/transport/netty/GoAwayClosedStreamException.java b/netty/src/main/java/io/grpc/netty/GoAwayClosedStreamException.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/GoAwayClosedStreamException.java
rename to netty/src/main/java/io/grpc/netty/GoAwayClosedStreamException.java
index 481ff8d..1e189c6 100644
--- a/netty/src/main/java/io/grpc/transport/netty/GoAwayClosedStreamException.java
+++ b/netty/src/main/java/io/grpc/netty/GoAwayClosedStreamException.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import io.netty.buffer.ByteBuf;
 
diff --git a/netty/src/main/java/io/grpc/transport/netty/GrpcSslContexts.java b/netty/src/main/java/io/grpc/netty/GrpcSslContexts.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/GrpcSslContexts.java
rename to netty/src/main/java/io/grpc/netty/GrpcSslContexts.java
index 67749a0..9edce1b 100644
--- a/netty/src/main/java/io/grpc/transport/netty/GrpcSslContexts.java
+++ b/netty/src/main/java/io/grpc/netty/GrpcSslContexts.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import io.netty.handler.codec.http2.Http2SecurityUtil;
 import io.netty.handler.ssl.ApplicationProtocolConfig;
diff --git a/netty/src/main/java/io/grpc/transport/netty/JettyAlpnVerifier.java b/netty/src/main/java/io/grpc/netty/JettyAlpnVerifier.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/JettyAlpnVerifier.java
rename to netty/src/main/java/io/grpc/netty/JettyAlpnVerifier.java
index 9f0fbf3..2f2c8fd 100644
--- a/netty/src/main/java/io/grpc/transport/netty/JettyAlpnVerifier.java
+++ b/netty/src/main/java/io/grpc/netty/JettyAlpnVerifier.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 /**
  * Utility class that verifies that Jetty ALPN is properly configured for the system.
diff --git a/netty/src/main/java/io/grpc/transport/netty/NegotiationType.java b/netty/src/main/java/io/grpc/netty/NegotiationType.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/NegotiationType.java
rename to netty/src/main/java/io/grpc/netty/NegotiationType.java
index c05e1d4..de37603 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NegotiationType.java
+++ b/netty/src/main/java/io/grpc/netty/NegotiationType.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 /**
  * Identifies the negotiation used for starting up HTTP/2.
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyChannelBuilder.java b/netty/src/main/java/io/grpc/netty/NettyChannelBuilder.java
similarity index 97%
rename from netty/src/main/java/io/grpc/transport/netty/NettyChannelBuilder.java
rename to netty/src/main/java/io/grpc/netty/NettyChannelBuilder.java
index 56c3f97..4600bd3 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyChannelBuilder.java
+++ b/netty/src/main/java/io/grpc/netty/NettyChannelBuilder.java
@@ -29,15 +29,14 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.Preconditions;
 
 import io.grpc.AbstractChannelBuilder;
-import io.grpc.SharedResourceHolder;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.ClientTransportFactory;
-
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.ClientTransportFactory;
+import io.grpc.internal.SharedResourceHolder;
 import io.netty.channel.Channel;
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.socket.nio.NioSocketChannel;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyClientHandler.java b/netty/src/main/java/io/grpc/netty/NettyClientHandler.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/NettyClientHandler.java
rename to netty/src/main/java/io/grpc/netty/NettyClientHandler.java
index 407782c..37d92cc 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyClientHandler.java
+++ b/netty/src/main/java/io/grpc/netty/NettyClientHandler.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static io.netty.handler.codec.http2.Http2CodecUtil.getEmbeddedHttp2Exception;
 import static io.netty.util.CharsetUtil.UTF_8;
@@ -41,9 +41,9 @@
 
 import io.grpc.Metadata;
 import io.grpc.Status;
-import io.grpc.transport.ClientTransport.PingCallback;
-import io.grpc.transport.Http2Ping;
-import io.grpc.transport.HttpUtil;
+import io.grpc.internal.ClientTransport.PingCallback;
+import io.grpc.internal.Http2Ping;
+import io.grpc.internal.HttpUtil;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.Channel;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyClientStream.java b/netty/src/main/java/io/grpc/netty/NettyClientStream.java
similarity index 96%
rename from netty/src/main/java/io/grpc/transport/netty/NettyClientStream.java
rename to netty/src/main/java/io/grpc/netty/NettyClientStream.java
index 21e76c5..22908e7 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyClientStream.java
+++ b/netty/src/main/java/io/grpc/netty/NettyClientStream.java
@@ -29,16 +29,16 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static io.netty.buffer.Unpooled.EMPTY_BUFFER;
 
 import io.grpc.Status;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.Http2ClientStream;
-import io.grpc.transport.WritableBuffer;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.Http2ClientStream;
+import io.grpc.internal.WritableBuffer;
 import io.netty.buffer.ByteBuf;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyClientTransport.java b/netty/src/main/java/io/grpc/netty/NettyClientTransport.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/NettyClientTransport.java
rename to netty/src/main/java/io/grpc/netty/NettyClientTransport.java
index 06b84de..edde9f6 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyClientTransport.java
+++ b/netty/src/main/java/io/grpc/netty/NettyClientTransport.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static io.netty.channel.ChannelOption.SO_KEEPALIVE;
 
@@ -38,10 +38,9 @@
 import io.grpc.Metadata;
 import io.grpc.MethodDescriptor;
 import io.grpc.Status;
-import io.grpc.transport.ClientStream;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.ClientTransport;
-
+import io.grpc.internal.ClientStream;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.ClientTransport;
 import io.netty.bootstrap.Bootstrap;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyReadableBuffer.java b/netty/src/main/java/io/grpc/netty/NettyReadableBuffer.java
similarity index 97%
rename from netty/src/main/java/io/grpc/transport/netty/NettyReadableBuffer.java
rename to netty/src/main/java/io/grpc/netty/NettyReadableBuffer.java
index 9e42759..f39d48c 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyReadableBuffer.java
+++ b/netty/src/main/java/io/grpc/netty/NettyReadableBuffer.java
@@ -29,12 +29,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Throwables;
 
-import io.grpc.transport.AbstractReadableBuffer;
+import io.grpc.internal.AbstractReadableBuffer;
 import io.netty.buffer.ByteBuf;
 
 import java.io.IOException;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyServer.java b/netty/src/main/java/io/grpc/netty/NettyServer.java
similarity index 97%
rename from netty/src/main/java/io/grpc/transport/netty/NettyServer.java
rename to netty/src/main/java/io/grpc/netty/NettyServer.java
index 1b0cdf7..e06638e 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyServer.java
+++ b/netty/src/main/java/io/grpc/netty/NettyServer.java
@@ -29,15 +29,15 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static io.netty.channel.ChannelOption.SO_BACKLOG;
 import static io.netty.channel.ChannelOption.SO_KEEPALIVE;
 
 import com.google.common.base.Preconditions;
 
-import io.grpc.transport.Server;
-import io.grpc.transport.ServerListener;
+import io.grpc.internal.Server;
+import io.grpc.internal.ServerListener;
 import io.netty.bootstrap.ServerBootstrap;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyServerBuilder.java b/netty/src/main/java/io/grpc/netty/NettyServerBuilder.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/NettyServerBuilder.java
rename to netty/src/main/java/io/grpc/netty/NettyServerBuilder.java
index e0bdd53..c6851bb 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyServerBuilder.java
+++ b/netty/src/main/java/io/grpc/netty/NettyServerBuilder.java
@@ -29,14 +29,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.Preconditions;
 
 import io.grpc.AbstractServerBuilder;
 import io.grpc.HandlerRegistry;
-import io.grpc.SharedResourceHolder;
-
+import io.grpc.internal.SharedResourceHolder;
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.ServerChannel;
 import io.netty.channel.socket.nio.NioServerSocketChannel;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyServerHandler.java b/netty/src/main/java/io/grpc/netty/NettyServerHandler.java
similarity index 96%
rename from netty/src/main/java/io/grpc/transport/netty/NettyServerHandler.java
rename to netty/src/main/java/io/grpc/netty/NettyServerHandler.java
index 8733e95..0fd7930 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyServerHandler.java
+++ b/netty/src/main/java/io/grpc/netty/NettyServerHandler.java
@@ -29,19 +29,19 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import static io.grpc.transport.netty.Utils.CONTENT_TYPE_GRPC;
-import static io.grpc.transport.netty.Utils.CONTENT_TYPE_HEADER;
-import static io.grpc.transport.netty.Utils.HTTP_METHOD;
-import static io.grpc.transport.netty.Utils.TE_HEADER;
-import static io.grpc.transport.netty.Utils.TE_TRAILERS;
+import static io.grpc.netty.Utils.CONTENT_TYPE_GRPC;
+import static io.grpc.netty.Utils.CONTENT_TYPE_HEADER;
+import static io.grpc.netty.Utils.HTTP_METHOD;
+import static io.grpc.netty.Utils.TE_HEADER;
+import static io.grpc.netty.Utils.TE_TRAILERS;
 
 import com.google.common.base.Preconditions;
 
 import io.grpc.Status;
-import io.grpc.transport.ServerStreamListener;
-import io.grpc.transport.ServerTransportListener;
+import io.grpc.internal.ServerStreamListener;
+import io.grpc.internal.ServerTransportListener;
 import io.netty.buffer.ByteBuf;
 import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelFutureListener;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyServerStream.java b/netty/src/main/java/io/grpc/netty/NettyServerStream.java
similarity index 97%
rename from netty/src/main/java/io/grpc/transport/netty/NettyServerStream.java
rename to netty/src/main/java/io/grpc/netty/NettyServerStream.java
index 65ad17a..2646ba6 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyServerStream.java
+++ b/netty/src/main/java/io/grpc/netty/NettyServerStream.java
@@ -29,14 +29,14 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import io.grpc.Metadata;
 import io.grpc.Status;
-import io.grpc.transport.AbstractServerStream;
-import io.grpc.transport.WritableBuffer;
+import io.grpc.internal.AbstractServerStream;
+import io.grpc.internal.WritableBuffer;
 import io.netty.buffer.ByteBuf;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyServerTransport.java b/netty/src/main/java/io/grpc/netty/NettyServerTransport.java
similarity index 97%
rename from netty/src/main/java/io/grpc/transport/netty/NettyServerTransport.java
rename to netty/src/main/java/io/grpc/netty/NettyServerTransport.java
index f3b31f5..d9bc0f8 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyServerTransport.java
+++ b/netty/src/main/java/io/grpc/netty/NettyServerTransport.java
@@ -29,12 +29,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.Preconditions;
 
-import io.grpc.transport.ServerTransport;
-import io.grpc.transport.ServerTransportListener;
+import io.grpc.internal.ServerTransport;
+import io.grpc.internal.ServerTransportListener;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelFutureListener;
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyWritableBuffer.java b/netty/src/main/java/io/grpc/netty/NettyWritableBuffer.java
similarity index 96%
rename from netty/src/main/java/io/grpc/transport/netty/NettyWritableBuffer.java
rename to netty/src/main/java/io/grpc/netty/NettyWritableBuffer.java
index e01c4b8..e92b640 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyWritableBuffer.java
+++ b/netty/src/main/java/io/grpc/netty/NettyWritableBuffer.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import io.grpc.transport.WritableBuffer;
+import io.grpc.internal.WritableBuffer;
 import io.netty.buffer.ByteBuf;
 
 /**
diff --git a/netty/src/main/java/io/grpc/transport/netty/NettyWritableBufferAllocator.java b/netty/src/main/java/io/grpc/netty/NettyWritableBufferAllocator.java
similarity index 95%
rename from netty/src/main/java/io/grpc/transport/netty/NettyWritableBufferAllocator.java
rename to netty/src/main/java/io/grpc/netty/NettyWritableBufferAllocator.java
index f3ec07a..e9abb22 100644
--- a/netty/src/main/java/io/grpc/transport/netty/NettyWritableBufferAllocator.java
+++ b/netty/src/main/java/io/grpc/netty/NettyWritableBufferAllocator.java
@@ -29,10 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import io.grpc.transport.WritableBuffer;
-import io.grpc.transport.WritableBufferAllocator;
+import io.grpc.internal.WritableBuffer;
+import io.grpc.internal.WritableBufferAllocator;
 import io.netty.buffer.ByteBufAllocator;
 
 /**
diff --git a/netty/src/main/java/io/grpc/transport/netty/ProtocolNegotiator.java b/netty/src/main/java/io/grpc/netty/ProtocolNegotiator.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/ProtocolNegotiator.java
rename to netty/src/main/java/io/grpc/netty/ProtocolNegotiator.java
index 259b9a4..7fc0464 100644
--- a/netty/src/main/java/io/grpc/transport/netty/ProtocolNegotiator.java
+++ b/netty/src/main/java/io/grpc/netty/ProtocolNegotiator.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import io.netty.channel.ChannelHandler;
 import io.netty.handler.codec.http2.Http2ConnectionHandler;
diff --git a/netty/src/main/java/io/grpc/transport/netty/ProtocolNegotiators.java b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
similarity index 99%
rename from netty/src/main/java/io/grpc/transport/netty/ProtocolNegotiators.java
rename to netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
index aa9078e..c2da308 100644
--- a/netty/src/main/java/io/grpc/transport/netty/ProtocolNegotiators.java
+++ b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.Preconditions;
 
diff --git a/netty/src/main/java/io/grpc/transport/netty/RequestMessagesCommand.java b/netty/src/main/java/io/grpc/netty/RequestMessagesCommand.java
similarity index 96%
rename from netty/src/main/java/io/grpc/transport/netty/RequestMessagesCommand.java
rename to netty/src/main/java/io/grpc/netty/RequestMessagesCommand.java
index a34c4fc..e940eed 100644
--- a/netty/src/main/java/io/grpc/transport/netty/RequestMessagesCommand.java
+++ b/netty/src/main/java/io/grpc/netty/RequestMessagesCommand.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import io.grpc.transport.AbstractStream;
+import io.grpc.internal.AbstractStream;
 
 /**
  * Command which requests messages from the deframer.
diff --git a/netty/src/main/java/io/grpc/transport/netty/SendGrpcFrameCommand.java b/netty/src/main/java/io/grpc/netty/SendGrpcFrameCommand.java
similarity index 97%
rename from netty/src/main/java/io/grpc/transport/netty/SendGrpcFrameCommand.java
rename to netty/src/main/java/io/grpc/netty/SendGrpcFrameCommand.java
index c98c5b3..c06150a 100644
--- a/netty/src/main/java/io/grpc/transport/netty/SendGrpcFrameCommand.java
+++ b/netty/src/main/java/io/grpc/netty/SendGrpcFrameCommand.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import io.grpc.transport.AbstractStream;
+import io.grpc.internal.AbstractStream;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufHolder;
 import io.netty.buffer.DefaultByteBufHolder;
diff --git a/netty/src/main/java/io/grpc/transport/netty/SendPingCommand.java b/netty/src/main/java/io/grpc/netty/SendPingCommand.java
similarity index 95%
rename from netty/src/main/java/io/grpc/transport/netty/SendPingCommand.java
rename to netty/src/main/java/io/grpc/netty/SendPingCommand.java
index b8ccb91..cbe0b94 100644
--- a/netty/src/main/java/io/grpc/transport/netty/SendPingCommand.java
+++ b/netty/src/main/java/io/grpc/netty/SendPingCommand.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import io.grpc.transport.ClientTransport.PingCallback;
+import io.grpc.internal.ClientTransport.PingCallback;
 
 import java.util.concurrent.Executor;
 
diff --git a/netty/src/main/java/io/grpc/transport/netty/SendResponseHeadersCommand.java b/netty/src/main/java/io/grpc/netty/SendResponseHeadersCommand.java
similarity index 98%
rename from netty/src/main/java/io/grpc/transport/netty/SendResponseHeadersCommand.java
rename to netty/src/main/java/io/grpc/netty/SendResponseHeadersCommand.java
index 784d9f9..46bb0e5 100644
--- a/netty/src/main/java/io/grpc/transport/netty/SendResponseHeadersCommand.java
+++ b/netty/src/main/java/io/grpc/netty/SendResponseHeadersCommand.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.Preconditions;
 
diff --git a/netty/src/main/java/io/grpc/transport/netty/Utils.java b/netty/src/main/java/io/grpc/netty/Utils.java
similarity index 96%
rename from netty/src/main/java/io/grpc/transport/netty/Utils.java
rename to netty/src/main/java/io/grpc/netty/Utils.java
index ee22e8e..9092e65 100644
--- a/netty/src/main/java/io/grpc/transport/netty/Utils.java
+++ b/netty/src/main/java/io/grpc/netty/Utils.java
@@ -29,20 +29,19 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import static io.grpc.transport.HttpUtil.CONTENT_TYPE_KEY;
-import static io.grpc.transport.HttpUtil.USER_AGENT_KEY;
+import static io.grpc.internal.HttpUtil.CONTENT_TYPE_KEY;
+import static io.grpc.internal.HttpUtil.USER_AGENT_KEY;
 import static io.netty.util.CharsetUtil.UTF_8;
 
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
 import io.grpc.Metadata;
-import io.grpc.SharedResourceHolder.Resource;
-import io.grpc.transport.HttpUtil;
-import io.grpc.transport.TransportFrameUtil;
-
+import io.grpc.internal.HttpUtil;
+import io.grpc.internal.SharedResourceHolder.Resource;
+import io.grpc.internal.TransportFrameUtil;
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.handler.codec.http2.DefaultHttp2Headers;
diff --git a/netty/src/main/java/io/grpc/transport/netty/WriteQueue.java b/netty/src/main/java/io/grpc/netty/WriteQueue.java
similarity index 99%
rename from netty/src/main/java/io/grpc/transport/netty/WriteQueue.java
rename to netty/src/main/java/io/grpc/netty/WriteQueue.java
index 0059222..02afa7c 100644
--- a/netty/src/main/java/io/grpc/transport/netty/WriteQueue.java
+++ b/netty/src/main/java/io/grpc/netty/WriteQueue.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.Preconditions;
 
diff --git a/netty/src/main/java/io/grpc/transport/netty/CancelServerStreamCommand.java b/netty/src/main/java/io/grpc/transport/netty/CancelServerStreamCommand.java
index 36165a3..6efffbb 100644
--- a/netty/src/main/java/io/grpc/transport/netty/CancelServerStreamCommand.java
+++ b/netty/src/main/java/io/grpc/transport/netty/CancelServerStreamCommand.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
diff --git a/netty/src/test/java/io/grpc/transport/netty/BufferingHttp2ConnectionEncoderTest.java b/netty/src/test/java/io/grpc/netty/BufferingHttp2ConnectionEncoderTest.java
similarity index 99%
rename from netty/src/test/java/io/grpc/transport/netty/BufferingHttp2ConnectionEncoderTest.java
rename to netty/src/test/java/io/grpc/netty/BufferingHttp2ConnectionEncoderTest.java
index 0bea052..57fedc4 100644
--- a/netty/src/test/java/io/grpc/transport/netty/BufferingHttp2ConnectionEncoderTest.java
+++ b/netty/src/test/java/io/grpc/netty/BufferingHttp2ConnectionEncoderTest.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import static io.grpc.transport.HttpUtil.Http2Error.CANCEL;
+import static io.grpc.internal.HttpUtil.Http2Error.CANCEL;
 import static io.netty.handler.codec.http2.Http2CodecUtil.DEFAULT_MAX_FRAME_SIZE;
 import static io.netty.handler.codec.http2.Http2CodecUtil.DEFAULT_PRIORITY_WEIGHT;
 import static io.netty.handler.codec.http2.Http2Stream.State.HALF_CLOSED_LOCAL;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyClientHandlerTest.java b/netty/src/test/java/io/grpc/netty/NettyClientHandlerTest.java
similarity index 97%
rename from netty/src/test/java/io/grpc/transport/netty/NettyClientHandlerTest.java
rename to netty/src/test/java/io/grpc/netty/NettyClientHandlerTest.java
index ff8a1dc..2f176a3 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyClientHandlerTest.java
+++ b/netty/src/test/java/io/grpc/netty/NettyClientHandlerTest.java
@@ -29,16 +29,16 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static com.google.common.base.Charsets.UTF_8;
-import static io.grpc.transport.netty.Utils.CONTENT_TYPE_GRPC;
-import static io.grpc.transport.netty.Utils.CONTENT_TYPE_HEADER;
-import static io.grpc.transport.netty.Utils.HTTPS;
-import static io.grpc.transport.netty.Utils.HTTP_METHOD;
-import static io.grpc.transport.netty.Utils.STATUS_OK;
-import static io.grpc.transport.netty.Utils.TE_HEADER;
-import static io.grpc.transport.netty.Utils.TE_TRAILERS;
+import static io.grpc.netty.Utils.CONTENT_TYPE_GRPC;
+import static io.grpc.netty.Utils.CONTENT_TYPE_HEADER;
+import static io.grpc.netty.Utils.HTTPS;
+import static io.grpc.netty.Utils.HTTP_METHOD;
+import static io.grpc.netty.Utils.STATUS_OK;
+import static io.grpc.netty.Utils.TE_HEADER;
+import static io.grpc.netty.Utils.TE_TRAILERS;
 import static io.netty.handler.codec.http2.Http2CodecUtil.DEFAULT_WINDOW_SIZE;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -64,9 +64,8 @@
 import io.grpc.Status;
 import io.grpc.Status.Code;
 import io.grpc.StatusException;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.ClientTransport.PingCallback;
-
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.ClientTransport.PingCallback;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.ChannelHandlerContext;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyClientStreamTest.java b/netty/src/test/java/io/grpc/netty/NettyClientStreamTest.java
similarity index 97%
rename from netty/src/test/java/io/grpc/transport/netty/NettyClientStreamTest.java
rename to netty/src/test/java/io/grpc/netty/NettyClientStreamTest.java
index 6b15510..e6d9caf 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyClientStreamTest.java
+++ b/netty/src/test/java/io/grpc/netty/NettyClientStreamTest.java
@@ -29,12 +29,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import static io.grpc.transport.netty.NettyTestUtil.messageFrame;
-import static io.grpc.transport.netty.Utils.CONTENT_TYPE_GRPC;
-import static io.grpc.transport.netty.Utils.CONTENT_TYPE_HEADER;
-import static io.grpc.transport.netty.Utils.STATUS_OK;
+import static io.grpc.netty.NettyTestUtil.messageFrame;
+import static io.grpc.netty.Utils.CONTENT_TYPE_GRPC;
+import static io.grpc.netty.Utils.CONTENT_TYPE_HEADER;
+import static io.grpc.netty.Utils.STATUS_OK;
 import static io.netty.util.CharsetUtil.UTF_8;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -53,8 +53,7 @@
 
 import io.grpc.Metadata;
 import io.grpc.Status;
-import io.grpc.transport.ClientStreamListener;
-
+import io.grpc.internal.ClientStreamListener;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.ChannelPromise;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyClientTransportTest.java b/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java
similarity index 96%
rename from netty/src/test/java/io/grpc/transport/netty/NettyClientTransportTest.java
rename to netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java
index 548396c..fcbfbcb 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyClientTransportTest.java
+++ b/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java
@@ -29,10 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static com.google.common.base.Charsets.UTF_8;
-import static io.grpc.transport.HttpUtil.USER_AGENT_KEY;
+import static io.grpc.internal.HttpUtil.USER_AGENT_KEY;
 import static io.netty.handler.codec.http2.Http2CodecUtil.DEFAULT_WINDOW_SIZE;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
@@ -45,17 +45,16 @@
 import io.grpc.MethodDescriptor;
 import io.grpc.Status;
 import io.grpc.StatusException;
+import io.grpc.internal.ClientStream;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.HttpUtil;
+import io.grpc.internal.ServerListener;
+import io.grpc.internal.ServerStream;
+import io.grpc.internal.ServerStreamListener;
+import io.grpc.internal.ServerTransport;
+import io.grpc.internal.ServerTransportListener;
 import io.grpc.testing.TestUtils;
-import io.grpc.transport.ClientStream;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.HttpUtil;
-import io.grpc.transport.ServerListener;
-import io.grpc.transport.ServerStream;
-import io.grpc.transport.ServerStreamListener;
-import io.grpc.transport.ServerTransport;
-import io.grpc.transport.ServerTransportListener;
-
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.channel.socket.nio.NioServerSocketChannel;
 import io.netty.channel.socket.nio.NioSocketChannel;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyHandlerTestBase.java b/netty/src/test/java/io/grpc/netty/NettyHandlerTestBase.java
similarity index 99%
rename from netty/src/test/java/io/grpc/transport/netty/NettyHandlerTestBase.java
rename to netty/src/test/java/io/grpc/netty/NettyHandlerTestBase.java
index 3533a25..a52a305 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyHandlerTestBase.java
+++ b/netty/src/test/java/io/grpc/netty/NettyHandlerTestBase.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyReadableBufferTest.java b/netty/src/test/java/io/grpc/netty/NettyReadableBufferTest.java
similarity index 94%
rename from netty/src/test/java/io/grpc/transport/netty/NettyReadableBufferTest.java
rename to netty/src/test/java/io/grpc/netty/NettyReadableBufferTest.java
index fbdf2cd..a57ae31 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyReadableBufferTest.java
+++ b/netty/src/test/java/io/grpc/netty/NettyReadableBufferTest.java
@@ -29,13 +29,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static com.google.common.base.Charsets.UTF_8;
 import static org.junit.Assert.assertEquals;
 
-import io.grpc.transport.ReadableBuffer;
-import io.grpc.transport.ReadableBufferTestBase;
+import io.grpc.internal.ReadableBuffer;
+import io.grpc.internal.ReadableBufferTestBase;
 import io.netty.buffer.Unpooled;
 
 import org.junit.Before;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyServerHandlerTest.java b/netty/src/test/java/io/grpc/netty/NettyServerHandlerTest.java
similarity index 96%
rename from netty/src/test/java/io/grpc/transport/netty/NettyServerHandlerTest.java
rename to netty/src/test/java/io/grpc/netty/NettyServerHandlerTest.java
index aeb3045..3b2fa7e 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyServerHandlerTest.java
+++ b/netty/src/test/java/io/grpc/netty/NettyServerHandlerTest.java
@@ -29,14 +29,14 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static com.google.common.base.Charsets.UTF_8;
-import static io.grpc.transport.netty.Utils.CONTENT_TYPE_GRPC;
-import static io.grpc.transport.netty.Utils.CONTENT_TYPE_HEADER;
-import static io.grpc.transport.netty.Utils.HTTP_METHOD;
-import static io.grpc.transport.netty.Utils.TE_HEADER;
-import static io.grpc.transport.netty.Utils.TE_TRAILERS;
+import static io.grpc.netty.Utils.CONTENT_TYPE_GRPC;
+import static io.grpc.netty.Utils.CONTENT_TYPE_HEADER;
+import static io.grpc.netty.Utils.HTTP_METHOD;
+import static io.grpc.netty.Utils.TE_HEADER;
+import static io.grpc.netty.Utils.TE_TRAILERS;
 import static io.netty.handler.codec.http2.Http2CodecUtil.DEFAULT_WINDOW_SIZE;
 import static io.netty.handler.codec.http2.Http2CodecUtil.toByteBuf;
 import static io.netty.handler.codec.http2.Http2Exception.connectionError;
@@ -58,11 +58,11 @@
 import io.grpc.Metadata;
 import io.grpc.Status;
 import io.grpc.Status.Code;
-import io.grpc.transport.MessageFramer;
-import io.grpc.transport.ServerStream;
-import io.grpc.transport.ServerStreamListener;
-import io.grpc.transport.ServerTransportListener;
-import io.grpc.transport.WritableBuffer;
+import io.grpc.internal.MessageFramer;
+import io.grpc.internal.ServerStream;
+import io.grpc.internal.ServerStreamListener;
+import io.grpc.internal.ServerTransportListener;
+import io.grpc.internal.WritableBuffer;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufAllocator;
 import io.netty.buffer.Unpooled;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyServerStreamTest.java b/netty/src/test/java/io/grpc/netty/NettyServerStreamTest.java
similarity index 98%
rename from netty/src/test/java/io/grpc/transport/netty/NettyServerStreamTest.java
rename to netty/src/test/java/io/grpc/netty/NettyServerStreamTest.java
index 0469d44..89cc124 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyServerStreamTest.java
+++ b/netty/src/test/java/io/grpc/netty/NettyServerStreamTest.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import static io.grpc.transport.netty.NettyTestUtil.messageFrame;
+import static io.grpc.netty.NettyTestUtil.messageFrame;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
@@ -49,8 +49,7 @@
 
 import io.grpc.Metadata;
 import io.grpc.Status;
-import io.grpc.transport.ServerStreamListener;
-
+import io.grpc.internal.ServerStreamListener;
 import io.netty.buffer.EmptyByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
 import io.netty.channel.ChannelPromise;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyStreamTestBase.java b/netty/src/test/java/io/grpc/netty/NettyStreamTestBase.java
similarity index 97%
rename from netty/src/test/java/io/grpc/transport/netty/NettyStreamTestBase.java
rename to netty/src/test/java/io/grpc/netty/NettyStreamTestBase.java
index 7d3d127..90099af 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyStreamTestBase.java
+++ b/netty/src/test/java/io/grpc/netty/NettyStreamTestBase.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import static io.grpc.transport.netty.NettyTestUtil.messageFrame;
+import static io.grpc.netty.NettyTestUtil.messageFrame;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -43,8 +43,8 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import io.grpc.transport.AbstractStream;
-import io.grpc.transport.StreamListener;
+import io.grpc.internal.AbstractStream;
+import io.grpc.internal.StreamListener;
 import io.netty.buffer.UnpooledByteBufAllocator;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyTestUtil.java b/netty/src/test/java/io/grpc/netty/NettyTestUtil.java
similarity index 98%
rename from netty/src/test/java/io/grpc/transport/netty/NettyTestUtil.java
rename to netty/src/test/java/io/grpc/netty/NettyTestUtil.java
index 7c6c64b..f378a05 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyTestUtil.java
+++ b/netty/src/test/java/io/grpc/netty/NettyTestUtil.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static io.netty.util.CharsetUtil.UTF_8;
 
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyWritableBufferAllocatorTest.java b/netty/src/test/java/io/grpc/netty/NettyWritableBufferAllocatorTest.java
similarity index 93%
rename from netty/src/test/java/io/grpc/transport/netty/NettyWritableBufferAllocatorTest.java
rename to netty/src/test/java/io/grpc/netty/NettyWritableBufferAllocatorTest.java
index 0b34766..d3e6827 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyWritableBufferAllocatorTest.java
+++ b/netty/src/test/java/io/grpc/netty/NettyWritableBufferAllocatorTest.java
@@ -29,13 +29,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
 import static org.junit.Assert.assertEquals;
 
-import io.grpc.transport.WritableBuffer;
-import io.grpc.transport.WritableBufferAllocator;
-import io.grpc.transport.WritableBufferAllocatorTestBase;
+import io.grpc.internal.WritableBuffer;
+import io.grpc.internal.WritableBufferAllocator;
+import io.grpc.internal.WritableBufferAllocatorTestBase;
 import io.netty.buffer.ByteBufAllocator;
 
 import org.junit.Test;
diff --git a/netty/src/test/java/io/grpc/transport/netty/NettyWritableBufferTest.java b/netty/src/test/java/io/grpc/netty/NettyWritableBufferTest.java
similarity index 94%
rename from netty/src/test/java/io/grpc/transport/netty/NettyWritableBufferTest.java
rename to netty/src/test/java/io/grpc/netty/NettyWritableBufferTest.java
index 233aad4..8353c5e 100644
--- a/netty/src/test/java/io/grpc/transport/netty/NettyWritableBufferTest.java
+++ b/netty/src/test/java/io/grpc/netty/NettyWritableBufferTest.java
@@ -29,11 +29,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.netty;
+package io.grpc.netty;
 
-import io.grpc.transport.WritableBuffer;
-import io.grpc.transport.WritableBufferTestBase;
+import io.grpc.internal.WritableBuffer;
+import io.grpc.internal.WritableBufferTestBase;
 import io.netty.buffer.Unpooled;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.runner.RunWith;
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/AsyncFrameWriter.java b/okhttp/src/main/java/io/grpc/okhttp/AsyncFrameWriter.java
similarity index 98%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/AsyncFrameWriter.java
rename to okhttp/src/main/java/io/grpc/okhttp/AsyncFrameWriter.java
index 8615e48..9eec4ab 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/AsyncFrameWriter.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/AsyncFrameWriter.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 import com.google.common.base.Preconditions;
 
@@ -38,7 +38,7 @@
 import com.squareup.okhttp.internal.spdy.Header;
 import com.squareup.okhttp.internal.spdy.Settings;
 
-import io.grpc.SerializingExecutor;
+import io.grpc.internal.SerializingExecutor;
 
 import okio.Buffer;
 
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/Headers.java b/okhttp/src/main/java/io/grpc/okhttp/Headers.java
similarity index 94%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/Headers.java
rename to okhttp/src/main/java/io/grpc/okhttp/Headers.java
index addf596..df8020e 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/Headers.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/Headers.java
@@ -29,18 +29,18 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
-import static io.grpc.transport.HttpUtil.CONTENT_TYPE_KEY;
-import static io.grpc.transport.HttpUtil.USER_AGENT_KEY;
+import static io.grpc.internal.HttpUtil.CONTENT_TYPE_KEY;
+import static io.grpc.internal.HttpUtil.USER_AGENT_KEY;
 
 import com.google.common.base.Preconditions;
 
 import com.squareup.okhttp.internal.spdy.Header;
 
 import io.grpc.Metadata;
-import io.grpc.transport.HttpUtil;
-import io.grpc.transport.TransportFrameUtil;
+import io.grpc.internal.HttpUtil;
+import io.grpc.internal.TransportFrameUtil;
 
 import okio.ByteString;
 
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/NegotiationType.java b/okhttp/src/main/java/io/grpc/okhttp/NegotiationType.java
similarity index 97%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/NegotiationType.java
rename to okhttp/src/main/java/io/grpc/okhttp/NegotiationType.java
index ab34411..a3da2d2 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/NegotiationType.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/NegotiationType.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 /**
  * Identifies the negotiation used for starting up HTTP/2.
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpChannelBuilder.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpChannelBuilder.java
similarity index 97%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpChannelBuilder.java
rename to okhttp/src/main/java/io/grpc/okhttp/OkHttpChannelBuilder.java
index bfb2f72..0d707a1 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpChannelBuilder.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpChannelBuilder.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
@@ -39,9 +39,9 @@
 import com.squareup.okhttp.TlsVersion;
 
 import io.grpc.AbstractChannelBuilder;
-import io.grpc.SharedResourceHolder;
-import io.grpc.SharedResourceHolder.Resource;
-import io.grpc.transport.ClientTransportFactory;
+import io.grpc.internal.ClientTransportFactory;
+import io.grpc.internal.SharedResourceHolder;
+import io.grpc.internal.SharedResourceHolder.Resource;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientStream.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientStream.java
similarity index 97%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientStream.java
rename to okhttp/src/main/java/io/grpc/okhttp/OkHttpClientStream.java
index cebb726..21abb7b 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientStream.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientStream.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
@@ -40,9 +40,9 @@
 import io.grpc.Metadata;
 import io.grpc.MethodDescriptor.MethodType;
 import io.grpc.Status;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.Http2ClientStream;
-import io.grpc.transport.WritableBuffer;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.Http2ClientStream;
+import io.grpc.internal.WritableBuffer;
 
 import okio.Buffer;
 
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientTransport.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransport.java
similarity index 98%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientTransport.java
rename to okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransport.java
index 88f4943..f5ab7ae 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientTransport.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransport.java
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 import static com.google.common.base.Preconditions.checkState;
 
@@ -53,13 +53,13 @@
 import io.grpc.Metadata;
 import io.grpc.MethodDescriptor;
 import io.grpc.MethodDescriptor.MethodType;
-import io.grpc.SerializingExecutor;
 import io.grpc.Status;
 import io.grpc.Status.Code;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.Http2Ping;
-import io.grpc.transport.HttpUtil;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.Http2Ping;
+import io.grpc.internal.HttpUtil;
+import io.grpc.internal.SerializingExecutor;
 
 import okio.Buffer;
 import okio.BufferedSink;
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientTransportFactory.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransportFactory.java
similarity index 95%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientTransportFactory.java
rename to okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransportFactory.java
index c030503..534adde 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpClientTransportFactory.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransportFactory.java
@@ -29,14 +29,14 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 import com.google.common.base.Preconditions;
 
 import com.squareup.okhttp.ConnectionSpec;
 
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.ClientTransportFactory;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.ClientTransportFactory;
 
 import java.util.concurrent.ExecutorService;
 
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpReadableBuffer.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpReadableBuffer.java
similarity index 95%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpReadableBuffer.java
rename to okhttp/src/main/java/io/grpc/okhttp/OkHttpReadableBuffer.java
index 8cba436..fc99d59 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpReadableBuffer.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpReadableBuffer.java
@@ -29,10 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
-import io.grpc.transport.AbstractReadableBuffer;
-import io.grpc.transport.ReadableBuffer;
+import io.grpc.internal.AbstractReadableBuffer;
+import io.grpc.internal.ReadableBuffer;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpWritableBuffer.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpWritableBuffer.java
similarity index 96%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpWritableBuffer.java
rename to okhttp/src/main/java/io/grpc/okhttp/OkHttpWritableBuffer.java
index 0afb89e..cef39bd 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpWritableBuffer.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpWritableBuffer.java
@@ -29,9 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
-import io.grpc.transport.WritableBuffer;
+import io.grpc.internal.WritableBuffer;
 import okio.Buffer;
 
 class OkHttpWritableBuffer implements WritableBuffer {
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpWritableBufferAllocator.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpWritableBufferAllocator.java
similarity index 95%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpWritableBufferAllocator.java
rename to okhttp/src/main/java/io/grpc/okhttp/OkHttpWritableBufferAllocator.java
index 36bd66c..2256c35 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/OkHttpWritableBufferAllocator.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpWritableBufferAllocator.java
@@ -29,10 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
-import io.grpc.transport.WritableBuffer;
-import io.grpc.transport.WritableBufferAllocator;
+import io.grpc.internal.WritableBuffer;
+import io.grpc.internal.WritableBufferAllocator;
 import okio.Buffer;
 
 /**
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/OutboundFlowController.java b/okhttp/src/main/java/io/grpc/okhttp/OutboundFlowController.java
similarity index 98%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/OutboundFlowController.java
rename to okhttp/src/main/java/io/grpc/okhttp/OutboundFlowController.java
index a5e07a2..b686667 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/OutboundFlowController.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/OutboundFlowController.java
@@ -29,10 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
-import static io.grpc.transport.okhttp.Utils.CONNECTION_STREAM_ID;
-import static io.grpc.transport.okhttp.Utils.DEFAULT_WINDOW_SIZE;
+import static io.grpc.okhttp.Utils.CONNECTION_STREAM_ID;
+import static io.grpc.okhttp.Utils.DEFAULT_WINDOW_SIZE;
 import static java.lang.Math.ceil;
 import static java.lang.Math.max;
 import static java.lang.Math.min;
diff --git a/okhttp/src/main/java/io/grpc/transport/okhttp/Utils.java b/okhttp/src/main/java/io/grpc/okhttp/Utils.java
similarity index 96%
rename from okhttp/src/main/java/io/grpc/transport/okhttp/Utils.java
rename to okhttp/src/main/java/io/grpc/okhttp/Utils.java
index 8aa7355..5daf74f 100644
--- a/okhttp/src/main/java/io/grpc/transport/okhttp/Utils.java
+++ b/okhttp/src/main/java/io/grpc/okhttp/Utils.java
@@ -29,12 +29,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 import com.squareup.okhttp.internal.spdy.Header;
 
 import io.grpc.Metadata;
-import io.grpc.transport.TransportFrameUtil;
+import io.grpc.internal.TransportFrameUtil;
 
 import java.util.List;
 
diff --git a/okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpClientTransportTest.java b/okhttp/src/test/java/io/grpc/okhttp/OkHttpClientTransportTest.java
similarity index 98%
rename from okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpClientTransportTest.java
rename to okhttp/src/test/java/io/grpc/okhttp/OkHttpClientTransportTest.java
index 725dc85..509d6ba 100644
--- a/okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpClientTransportTest.java
+++ b/okhttp/src/test/java/io/grpc/okhttp/OkHttpClientTransportTest.java
@@ -29,13 +29,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 import static com.google.common.base.Charsets.UTF_8;
-import static io.grpc.transport.okhttp.Headers.CONTENT_TYPE_HEADER;
-import static io.grpc.transport.okhttp.Headers.METHOD_HEADER;
-import static io.grpc.transport.okhttp.Headers.SCHEME_HEADER;
-import static io.grpc.transport.okhttp.Headers.TE_HEADER;
+import static io.grpc.okhttp.Headers.CONTENT_TYPE_HEADER;
+import static io.grpc.okhttp.Headers.METHOD_HEADER;
+import static io.grpc.okhttp.Headers.SCHEME_HEADER;
+import static io.grpc.okhttp.Headers.TE_HEADER;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -73,11 +73,11 @@
 import io.grpc.MethodDescriptor.MethodType;
 import io.grpc.Status;
 import io.grpc.StatusException;
-import io.grpc.transport.AbstractStream;
-import io.grpc.transport.ClientStreamListener;
-import io.grpc.transport.ClientTransport;
-import io.grpc.transport.HttpUtil;
-import io.grpc.transport.okhttp.OkHttpClientTransport.ClientFrameHandler;
+import io.grpc.internal.AbstractStream;
+import io.grpc.internal.ClientStreamListener;
+import io.grpc.internal.ClientTransport;
+import io.grpc.internal.HttpUtil;
+import io.grpc.okhttp.OkHttpClientTransport.ClientFrameHandler;
 
 import okio.Buffer;
 
diff --git a/okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpReadableBufferTest.java b/okhttp/src/test/java/io/grpc/okhttp/OkHttpReadableBufferTest.java
similarity index 94%
rename from okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpReadableBufferTest.java
rename to okhttp/src/test/java/io/grpc/okhttp/OkHttpReadableBufferTest.java
index 28c70d3..9cef89c 100644
--- a/okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpReadableBufferTest.java
+++ b/okhttp/src/test/java/io/grpc/okhttp/OkHttpReadableBufferTest.java
@@ -29,10 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
-import io.grpc.transport.ReadableBuffer;
-import io.grpc.transport.ReadableBufferTestBase;
+import io.grpc.internal.ReadableBuffer;
+import io.grpc.internal.ReadableBufferTestBase;
 
 import okio.Buffer;
 
diff --git a/okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpWritableBufferAllocatorTest.java b/okhttp/src/test/java/io/grpc/okhttp/OkHttpWritableBufferAllocatorTest.java
similarity index 93%
rename from okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpWritableBufferAllocatorTest.java
rename to okhttp/src/test/java/io/grpc/okhttp/OkHttpWritableBufferAllocatorTest.java
index 14d6c25..49560f3 100644
--- a/okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpWritableBufferAllocatorTest.java
+++ b/okhttp/src/test/java/io/grpc/okhttp/OkHttpWritableBufferAllocatorTest.java
@@ -29,13 +29,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
 import static org.junit.Assert.assertEquals;
 
-import io.grpc.transport.WritableBuffer;
-import io.grpc.transport.WritableBufferAllocator;
-import io.grpc.transport.WritableBufferAllocatorTestBase;
+import io.grpc.internal.WritableBuffer;
+import io.grpc.internal.WritableBufferAllocator;
+import io.grpc.internal.WritableBufferAllocatorTestBase;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpWritableBufferTest.java b/okhttp/src/test/java/io/grpc/okhttp/OkHttpWritableBufferTest.java
similarity index 94%
rename from okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpWritableBufferTest.java
rename to okhttp/src/test/java/io/grpc/okhttp/OkHttpWritableBufferTest.java
index bb1c431..6160cc3 100644
--- a/okhttp/src/test/java/io/grpc/transport/okhttp/OkHttpWritableBufferTest.java
+++ b/okhttp/src/test/java/io/grpc/okhttp/OkHttpWritableBufferTest.java
@@ -29,10 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package io.grpc.transport.okhttp;
+package io.grpc.okhttp;
 
-import io.grpc.transport.WritableBuffer;
-import io.grpc.transport.WritableBufferTestBase;
+import io.grpc.internal.WritableBuffer;
+import io.grpc.internal.WritableBufferTestBase;
 import okio.Buffer;
 import org.junit.Before;
 import org.junit.runner.RunWith;