diff --git a/tcpip/adapters/gonet/gonet.go b/tcpip/adapters/gonet/gonet.go
index 60e81ef..2094bda 100644
--- a/tcpip/adapters/gonet/gonet.go
+++ b/tcpip/adapters/gonet/gonet.go
@@ -14,6 +14,7 @@
 
 	"github.com/google/netstack/tcpip"
 	"github.com/google/netstack/tcpip/buffer"
+	"github.com/google/netstack/tcpip/stack"
 	"github.com/google/netstack/tcpip/transport/tcp"
 	"github.com/google/netstack/tcpip/transport/udp"
 	"github.com/google/netstack/waiter"
@@ -31,14 +32,14 @@
 // A Listener is a wrapper around a tcpip endpoint that implements
 // net.Listener.
 type Listener struct {
-	stack  tcpip.Stack
+	stack  *stack.Stack
 	ep     tcpip.Endpoint
 	wq     *waiter.Queue
 	cancel chan struct{}
 }
 
 // NewListener creates a new Listener.
-func NewListener(s tcpip.Stack, addr tcpip.FullAddress, network tcpip.NetworkProtocolNumber) (*Listener, error) {
+func NewListener(s *stack.Stack, addr tcpip.FullAddress, network tcpip.NetworkProtocolNumber) (*Listener, error) {
 	// Create TCP endpoint, bind it, then start listening.
 	var wq waiter.Queue
 	ep, err := s.NewEndpoint(tcp.ProtocolNumber, network, &wq)
@@ -427,7 +428,7 @@
 }
 
 // DialTCP creates a new TCP Conn connected to the specified address.
-func DialTCP(s tcpip.Stack, addr tcpip.FullAddress, network tcpip.NetworkProtocolNumber) (*Conn, error) {
+func DialTCP(s *stack.Stack, addr tcpip.FullAddress, network tcpip.NetworkProtocolNumber) (*Conn, error) {
 	// Create TCP endpoint, then connect.
 	var wq waiter.Queue
 	ep, err := s.NewEndpoint(tcp.ProtocolNumber, network, &wq)
@@ -466,13 +467,13 @@
 type PacketConn struct {
 	deadlineTimer
 
-	stack tcpip.Stack
+	stack *stack.Stack
 	ep    tcpip.Endpoint
 	wq    *waiter.Queue
 }
 
 // NewPacketConn creates a new PacketConn.
-func NewPacketConn(s tcpip.Stack, addr tcpip.FullAddress, network tcpip.NetworkProtocolNumber) (*PacketConn, error) {
+func NewPacketConn(s *stack.Stack, addr tcpip.FullAddress, network tcpip.NetworkProtocolNumber) (*PacketConn, error) {
 	// Create UDP endpoint and bind it.
 	var wq waiter.Queue
 	ep, err := s.NewEndpoint(udp.ProtocolNumber, network, &wq)
diff --git a/tcpip/stack/stack.go b/tcpip/stack/stack.go
index 6cbdfa1..d0a0960 100644
--- a/tcpip/stack/stack.go
+++ b/tcpip/stack/stack.go
@@ -144,6 +144,7 @@
 // NOTE: The underlying stats are updated using atomic instructions as a result
 // the snapshot returned does not represent the value of all the stats at any
 // single given point of time.
+// TODO: Make stats available in sentry for debugging/diag.
 func (s *Stack) Stats() tcpip.Stats {
 	return tcpip.Stats{
 		UnknownProtocolRcvdPackets:        atomic.LoadUint64(&s.stats.UnknownProtocolRcvdPackets),
@@ -162,7 +163,7 @@
 }
 
 // SetRouteTable assigns the route table to be used by this stack. It
-// specifies which NIC to use for a given destination address mask.
+// specifies which NIC to use for given destination address ranges.
 func (s *Stack) SetRouteTable(table []tcpip.Route) {
 	s.mu.Lock()
 	defer s.mu.Unlock()
diff --git a/tcpip/tcpip.go b/tcpip/tcpip.go
index c7f7d94..cf6f422 100644
--- a/tcpip/tcpip.go
+++ b/tcpip/tcpip.go
@@ -371,47 +371,6 @@
 // NetworkProtocolNumber is the number of a network protocol.
 type NetworkProtocolNumber uint32
 
-// Stack represents a networking stack, with all supported protocols, NICs, and
-// route table.
-type Stack interface {
-	// NewEndpoint creates a new transport layer endpoint of the given
-	// protocol.
-	NewEndpoint(transport TransportProtocolNumber, network NetworkProtocolNumber, waiterQueue *waiter.Queue) (Endpoint, *Error)
-
-	// SetRouteTable assigns the route table to be used by this stack. It
-	// specifies which NICs to use for given destination address ranges.
-	SetRouteTable(table []Route)
-
-	// CreateNIC creates a NIC with the provided id and link-layer sender.
-	CreateNIC(id NICID, linkEndpoint LinkEndpointID) *Error
-
-	// AddAddress adds a new network-layer address to the specified NIC.
-	AddAddress(id NICID, protocol NetworkProtocolNumber, addr Address) *Error
-
-	// Stats returns a snapshot of the current stats.
-	// TODO: Make stats available in sentry for debugging/diag.
-	Stats() Stats
-
-	// NICSubnets returns a map of NICIDs to their associated subnets.
-	NICSubnets() map[NICID][]Subnet
-
-	// CheckNetworkProtocol checks if a given network protocol is enabled in the
-	// stack.
-	CheckNetworkProtocol(protocol NetworkProtocolNumber) bool
-
-	// SetNetworkProtocolOption allows configuring individual protocol level
-	// options. This method returns an error if the protocol is not
-	// supported or option is not supported by the protocol implementation
-	// or the provided value is incorrect.
-	SetNetworkProtocolOption(network NetworkProtocolNumber, option interface{}) *Error
-
-	// SetTransportProtocolOption allows configuring individual protocol
-	// level options. This method returns an error if the protocol is not
-	// supported or option is not supported by the protocol implementation
-	// or the provided value is incorrect.
-	SetTransportProtocolOption(transport TransportProtocolNumber, option interface{}) *Error
-}
-
 // Stats holds statistics about the networking stack.
 type Stats struct {
 	// UnkownProtocolRcvdPackets is the number of packets received by the
diff --git a/tcpip/transport/tcp/tcp_test.go b/tcpip/transport/tcp/tcp_test.go
index 842870e..b1839f8 100644
--- a/tcpip/transport/tcp/tcp_test.go
+++ b/tcpip/transport/tcp/tcp_test.go
@@ -15,7 +15,6 @@
 	"github.com/google/netstack/tcpip/header"
 	"github.com/google/netstack/tcpip/network/ipv4"
 	"github.com/google/netstack/tcpip/seqnum"
-	"github.com/google/netstack/tcpip/stack"
 	"github.com/google/netstack/tcpip/transport/tcp"
 	"github.com/google/netstack/tcpip/transport/tcp/testing/context"
 	"github.com/google/netstack/waiter"
@@ -1116,7 +1115,7 @@
 	c := context.New(t, mtu)
 	defer c.Cleanup()
 
-	s := c.Stack().(*stack.Stack)
+	s := c.Stack()
 	ch := make(chan *tcpip.Error, 1)
 	f := tcp.NewForwarder(s, 65536, 10, func(r *tcp.ForwarderRequest) {
 		var err *tcpip.Error
diff --git a/tcpip/transport/tcp/testing/context/context.go b/tcpip/transport/tcp/testing/context/context.go
index d4ae3ef..1592b58 100644
--- a/tcpip/transport/tcp/testing/context/context.go
+++ b/tcpip/transport/tcp/testing/context/context.go
@@ -100,7 +100,7 @@
 type Context struct {
 	t      *testing.T
 	linkEP *channel.Endpoint
-	s      tcpip.Stack
+	s      *stack.Stack
 
 	// IRS holds the initial sequence number in the SYN sent by endpoint in
 	// case of an active connect or the sequence number sent by the endpoint
@@ -177,7 +177,7 @@
 }
 
 // Stack returns a reference to the stack in the Context.
-func (c *Context) Stack() tcpip.Stack {
+func (c *Context) Stack() *stack.Stack {
 	return c.s
 }
 
diff --git a/tcpip/transport/udp/udp_test.go b/tcpip/transport/udp/udp_test.go
index 19069c1..9638232 100644
--- a/tcpip/transport/udp/udp_test.go
+++ b/tcpip/transport/udp/udp_test.go
@@ -44,7 +44,7 @@
 type testContext struct {
 	t      *testing.T
 	linkEP *channel.Endpoint
-	s      tcpip.Stack
+	s      *stack.Stack
 
 	ep tcpip.Endpoint
 	wq waiter.Queue
