diff --git a/build/source_list.bzl b/build/source_list.bzl
index 4d88da3..fa32a50 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -970,13 +970,13 @@
     "quic/core/quic_packet_reader.h",
     "quic/core/quic_syscall_wrapper.h",
     "quic/core/quic_udp_socket.h",
+    "quic/masque/masque_client.h",
     "quic/masque/masque_client_session.h",
     "quic/masque/masque_client_tools.h",
     "quic/masque/masque_dispatcher.h",
+    "quic/masque/masque_encapsulated_client.h",
     "quic/masque/masque_encapsulated_client_session.h",
-    "quic/masque/masque_encapsulated_epoll_client.h",
-    "quic/masque/masque_epoll_client.h",
-    "quic/masque/masque_epoll_server.h",
+    "quic/masque/masque_server.h",
     "quic/masque/masque_server_backend.h",
     "quic/masque/masque_server_session.h",
     "quic/masque/masque_utils.h",
@@ -999,13 +999,13 @@
     "quic/core/quic_packet_reader.cc",
     "quic/core/quic_syscall_wrapper.cc",
     "quic/core/quic_udp_socket_posix.cc",
+    "quic/masque/masque_client.cc",
     "quic/masque/masque_client_session.cc",
     "quic/masque/masque_client_tools.cc",
     "quic/masque/masque_dispatcher.cc",
+    "quic/masque/masque_encapsulated_client.cc",
     "quic/masque/masque_encapsulated_client_session.cc",
-    "quic/masque/masque_encapsulated_epoll_client.cc",
-    "quic/masque/masque_epoll_client.cc",
-    "quic/masque/masque_epoll_server.cc",
+    "quic/masque/masque_server.cc",
     "quic/masque/masque_server_backend.cc",
     "quic/masque/masque_server_session.cc",
     "quic/masque/masque_utils.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index 34c4230..d36d591 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -970,13 +970,13 @@
     "src/quiche/quic/core/quic_packet_reader.h",
     "src/quiche/quic/core/quic_syscall_wrapper.h",
     "src/quiche/quic/core/quic_udp_socket.h",
+    "src/quiche/quic/masque/masque_client.h",
     "src/quiche/quic/masque/masque_client_session.h",
     "src/quiche/quic/masque/masque_client_tools.h",
     "src/quiche/quic/masque/masque_dispatcher.h",
+    "src/quiche/quic/masque/masque_encapsulated_client.h",
     "src/quiche/quic/masque/masque_encapsulated_client_session.h",
-    "src/quiche/quic/masque/masque_encapsulated_epoll_client.h",
-    "src/quiche/quic/masque/masque_epoll_client.h",
-    "src/quiche/quic/masque/masque_epoll_server.h",
+    "src/quiche/quic/masque/masque_server.h",
     "src/quiche/quic/masque/masque_server_backend.h",
     "src/quiche/quic/masque/masque_server_session.h",
     "src/quiche/quic/masque/masque_utils.h",
@@ -999,13 +999,13 @@
     "src/quiche/quic/core/quic_packet_reader.cc",
     "src/quiche/quic/core/quic_syscall_wrapper.cc",
     "src/quiche/quic/core/quic_udp_socket_posix.cc",
+    "src/quiche/quic/masque/masque_client.cc",
     "src/quiche/quic/masque/masque_client_session.cc",
     "src/quiche/quic/masque/masque_client_tools.cc",
     "src/quiche/quic/masque/masque_dispatcher.cc",
+    "src/quiche/quic/masque/masque_encapsulated_client.cc",
     "src/quiche/quic/masque/masque_encapsulated_client_session.cc",
-    "src/quiche/quic/masque/masque_encapsulated_epoll_client.cc",
-    "src/quiche/quic/masque/masque_epoll_client.cc",
-    "src/quiche/quic/masque/masque_epoll_server.cc",
+    "src/quiche/quic/masque/masque_server.cc",
     "src/quiche/quic/masque/masque_server_backend.cc",
     "src/quiche/quic/masque/masque_server_session.cc",
     "src/quiche/quic/masque/masque_utils.cc",
diff --git a/build/source_list.json b/build/source_list.json
index a74080f..753c2fd 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -969,13 +969,13 @@
     "quiche/quic/core/quic_packet_reader.h",
     "quiche/quic/core/quic_syscall_wrapper.h",
     "quiche/quic/core/quic_udp_socket.h",
+    "quiche/quic/masque/masque_client.h",
     "quiche/quic/masque/masque_client_session.h",
     "quiche/quic/masque/masque_client_tools.h",
     "quiche/quic/masque/masque_dispatcher.h",
+    "quiche/quic/masque/masque_encapsulated_client.h",
     "quiche/quic/masque/masque_encapsulated_client_session.h",
-    "quiche/quic/masque/masque_encapsulated_epoll_client.h",
-    "quiche/quic/masque/masque_epoll_client.h",
-    "quiche/quic/masque/masque_epoll_server.h",
+    "quiche/quic/masque/masque_server.h",
     "quiche/quic/masque/masque_server_backend.h",
     "quiche/quic/masque/masque_server_session.h",
     "quiche/quic/masque/masque_utils.h",
@@ -998,13 +998,13 @@
     "quiche/quic/core/quic_packet_reader.cc",
     "quiche/quic/core/quic_syscall_wrapper.cc",
     "quiche/quic/core/quic_udp_socket_posix.cc",
+    "quiche/quic/masque/masque_client.cc",
     "quiche/quic/masque/masque_client_session.cc",
     "quiche/quic/masque/masque_client_tools.cc",
     "quiche/quic/masque/masque_dispatcher.cc",
+    "quiche/quic/masque/masque_encapsulated_client.cc",
     "quiche/quic/masque/masque_encapsulated_client_session.cc",
-    "quiche/quic/masque/masque_encapsulated_epoll_client.cc",
-    "quiche/quic/masque/masque_epoll_client.cc",
-    "quiche/quic/masque/masque_epoll_server.cc",
+    "quiche/quic/masque/masque_server.cc",
     "quiche/quic/masque/masque_server_backend.cc",
     "quiche/quic/masque/masque_server_session.cc",
     "quiche/quic/masque/masque_utils.cc",
diff --git a/quiche/quic/masque/masque_epoll_client.cc b/quiche/quic/masque/masque_client.cc
similarity index 71%
rename from quiche/quic/masque/masque_epoll_client.cc
rename to quiche/quic/masque/masque_client.cc
index 0f2619f..b30597b 100644
--- a/quiche/quic/masque/masque_epoll_client.cc
+++ b/quiche/quic/masque/masque_client.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quiche/quic/masque/masque_epoll_client.h"
+#include "quiche/quic/masque/masque_client.h"
 
 #include <string>
 
@@ -14,17 +14,17 @@
 
 namespace quic {
 
-MasqueEpollClient::MasqueEpollClient(
-    QuicSocketAddress server_address, const QuicServerId& server_id,
-    MasqueMode masque_mode, QuicEventLoop* event_loop,
-    std::unique_ptr<ProofVerifier> proof_verifier,
-    const std::string& uri_template)
+MasqueClient::MasqueClient(QuicSocketAddress server_address,
+                           const QuicServerId& server_id,
+                           MasqueMode masque_mode, QuicEventLoop* event_loop,
+                           std::unique_ptr<ProofVerifier> proof_verifier,
+                           const std::string& uri_template)
     : QuicDefaultClient(server_address, server_id, MasqueSupportedVersions(),
                         event_loop, std::move(proof_verifier)),
       masque_mode_(masque_mode),
       uri_template_(uri_template) {}
 
-std::unique_ptr<QuicSession> MasqueEpollClient::CreateQuicClientSession(
+std::unique_ptr<QuicSession> MasqueClient::CreateQuicClientSession(
     const ParsedQuicVersionVector& supported_versions,
     QuicConnection* connection) {
   QUIC_DLOG(INFO) << "Creating MASQUE session for "
@@ -34,21 +34,21 @@
       server_id(), crypto_config(), push_promise_index(), this);
 }
 
-MasqueClientSession* MasqueEpollClient::masque_client_session() {
+MasqueClientSession* MasqueClient::masque_client_session() {
   return static_cast<MasqueClientSession*>(QuicDefaultClient::session());
 }
 
-QuicConnectionId MasqueEpollClient::connection_id() {
+QuicConnectionId MasqueClient::connection_id() {
   return masque_client_session()->connection_id();
 }
 
-std::string MasqueEpollClient::authority() const {
+std::string MasqueClient::authority() const {
   QuicUrl url(uri_template_);
   return absl::StrCat(url.host(), ":", url.port());
 }
 
 // static
-std::unique_ptr<MasqueEpollClient> MasqueEpollClient::Create(
+std::unique_ptr<MasqueClient> MasqueClient::Create(
     const std::string& uri_template, MasqueMode masque_mode,
     QuicEventLoop* event_loop, std::unique_ptr<ProofVerifier> proof_verifier) {
   QuicUrl url(uri_template);
@@ -61,12 +61,12 @@
     return nullptr;
   }
   QuicServerId server_id(host, port);
-  // Use absl::WrapUnique(new MasqueEpollClient(...)) instead of
-  // std::make_unique<MasqueEpollClient>(...) because the constructor for
-  // MasqueEpollClient is private and therefore not accessible from make_unique.
+  // Use absl::WrapUnique(new MasqueClient(...)) instead of
+  // std::make_unique<MasqueClient>(...) because the constructor for
+  // MasqueClient is private and therefore not accessible from make_unique.
   auto masque_client = absl::WrapUnique(
-      new MasqueEpollClient(addr, server_id, masque_mode, event_loop,
-                            std::move(proof_verifier), uri_template));
+      new MasqueClient(addr, server_id, masque_mode, event_loop,
+                       std::move(proof_verifier), uri_template));
 
   if (masque_client == nullptr) {
     QUIC_LOG(ERROR) << "Failed to create masque_client";
@@ -94,9 +94,9 @@
   return masque_client;
 }
 
-void MasqueEpollClient::OnSettingsReceived() { settings_received_ = true; }
+void MasqueClient::OnSettingsReceived() { settings_received_ = true; }
 
-bool MasqueEpollClient::WaitUntilSettingsReceived() {
+bool MasqueClient::WaitUntilSettingsReceived() {
   while (connected() && !settings_received_) {
     network_helper()->RunEventLoop();
   }
diff --git a/quiche/quic/masque/masque_epoll_client.h b/quiche/quic/masque/masque_client.h
similarity index 64%
rename from quiche/quic/masque/masque_epoll_client.h
rename to quiche/quic/masque/masque_client.h
index 8326e38..d3332ac 100644
--- a/quiche/quic/masque/masque_epoll_client.h
+++ b/quiche/quic/masque/masque_client.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef QUICHE_QUIC_MASQUE_MASQUE_EPOLL_CLIENT_H_
-#define QUICHE_QUIC_MASQUE_MASQUE_EPOLL_CLIENT_H_
+#ifndef QUICHE_QUIC_MASQUE_MASQUE_CLIENT_H_
+#define QUICHE_QUIC_MASQUE_MASQUE_CLIENT_H_
 
 #include <string>
 
@@ -16,11 +16,11 @@
 namespace quic {
 
 // QUIC client that implements MASQUE.
-class QUIC_NO_EXPORT MasqueEpollClient : public QuicDefaultClient,
-                                         public MasqueClientSession::Owner {
+class QUIC_NO_EXPORT MasqueClient : public QuicDefaultClient,
+                                    public MasqueClientSession::Owner {
  public:
-  // Constructs a MasqueEpollClient, performs a synchronous DNS lookup.
-  static std::unique_ptr<MasqueEpollClient> Create(
+  // Constructs a MasqueClient, performs a synchronous DNS lookup.
+  static std::unique_ptr<MasqueClient> Create(
       const std::string& uri_template, MasqueMode masque_mode,
       QuicEventLoop* event_loop, std::unique_ptr<ProofVerifier> proof_verifier);
 
@@ -42,11 +42,10 @@
 
  private:
   // Constructor is private, use Create() instead.
-  MasqueEpollClient(QuicSocketAddress server_address,
-                    const QuicServerId& server_id, MasqueMode masque_mode,
-                    QuicEventLoop* event_loop,
-                    std::unique_ptr<ProofVerifier> proof_verifier,
-                    const std::string& uri_template);
+  MasqueClient(QuicSocketAddress server_address, const QuicServerId& server_id,
+               MasqueMode masque_mode, QuicEventLoop* event_loop,
+               std::unique_ptr<ProofVerifier> proof_verifier,
+               const std::string& uri_template);
 
   // Wait synchronously until we receive the peer's settings. Returns whether
   // they were received.
@@ -55,8 +54,8 @@
   std::string authority() const;
 
   // Disallow copy and assign.
-  MasqueEpollClient(const MasqueEpollClient&) = delete;
-  MasqueEpollClient& operator=(const MasqueEpollClient&) = delete;
+  MasqueClient(const MasqueClient&) = delete;
+  MasqueClient& operator=(const MasqueClient&) = delete;
 
   MasqueMode masque_mode_;
   std::string uri_template_;
@@ -65,4 +64,4 @@
 
 }  // namespace quic
 
-#endif  // QUICHE_QUIC_MASQUE_MASQUE_EPOLL_CLIENT_H_
+#endif  // QUICHE_QUIC_MASQUE_MASQUE_CLIENT_H_
diff --git a/quiche/quic/masque/masque_client_bin.cc b/quiche/quic/masque/masque_client_bin.cc
index c2918ef..ae495f8 100644
--- a/quiche/quic/masque/masque_client_bin.cc
+++ b/quiche/quic/masque/masque_client_bin.cc
@@ -17,9 +17,9 @@
 #include "quiche/quic/core/io/quic_event_loop.h"
 #include "quiche/quic/core/quic_default_clock.h"
 #include "quiche/quic/core/quic_server_id.h"
+#include "quiche/quic/masque/masque_client.h"
 #include "quiche/quic/masque/masque_client_tools.h"
-#include "quiche/quic/masque/masque_encapsulated_epoll_client.h"
-#include "quiche/quic/masque/masque_epoll_client.h"
+#include "quiche/quic/masque/masque_encapsulated_client.h"
 #include "quiche/quic/masque/masque_utils.h"
 #include "quiche/quic/platform/api/quic_default_proof_providers.h"
 #include "quiche/quic/platform/api/quic_flags.h"
@@ -93,7 +93,7 @@
     std::cerr << "Invalid masque_mode \"" << mode_string << "\"" << std::endl;
     return 1;
   }
-  std::unique_ptr<MasqueEpollClient> masque_client = MasqueEpollClient::Create(
+  std::unique_ptr<MasqueClient> masque_client = MasqueClient::Create(
       uri_template, masque_mode, event_loop.get(), std::move(proof_verifier));
   if (masque_client == nullptr) {
     return 1;
diff --git a/quiche/quic/masque/masque_client_tools.cc b/quiche/quic/masque/masque_client_tools.cc
index cd87b50..06ca3ef 100644
--- a/quiche/quic/masque/masque_client_tools.cc
+++ b/quiche/quic/masque/masque_client_tools.cc
@@ -4,7 +4,7 @@
 
 #include "quiche/quic/masque/masque_client_tools.h"
 
-#include "quiche/quic/masque/masque_encapsulated_epoll_client.h"
+#include "quiche/quic/masque/masque_encapsulated_client.h"
 #include "quiche/quic/masque/masque_utils.h"
 #include "quiche/quic/platform/api/quic_default_proof_providers.h"
 #include "quiche/quic/tools/fake_proof_verifier.h"
@@ -15,7 +15,7 @@
 namespace quic {
 namespace tools {
 
-bool SendEncapsulatedMasqueRequest(MasqueEpollClient* masque_client,
+bool SendEncapsulatedMasqueRequest(MasqueClient* masque_client,
                                    QuicEventLoop* event_loop,
                                    std::string url_string,
                                    bool disable_certificate_verification) {
@@ -35,11 +35,11 @@
     return false;
   }
   const QuicServerId server_id(url.host(), url.port());
-  auto client = std::make_unique<MasqueEncapsulatedEpollClient>(
+  auto client = std::make_unique<MasqueEncapsulatedClient>(
       addr, server_id, event_loop, std::move(proof_verifier), masque_client);
 
   if (client == nullptr) {
-    QUIC_LOG(ERROR) << "Failed to create MasqueEncapsulatedEpollClient for "
+    QUIC_LOG(ERROR) << "Failed to create MasqueEncapsulatedClient for "
                     << url_string;
     return false;
   }
@@ -47,7 +47,7 @@
   client->set_initial_max_packet_length(kMasqueMaxEncapsulatedPacketSize);
   client->set_drop_response_body(false);
   if (!client->Initialize()) {
-    QUIC_LOG(ERROR) << "Failed to initialize MasqueEncapsulatedEpollClient for "
+    QUIC_LOG(ERROR) << "Failed to initialize MasqueEncapsulatedClient for "
                     << url_string;
     return false;
   }
diff --git a/quiche/quic/masque/masque_client_tools.h b/quiche/quic/masque/masque_client_tools.h
index 6953ef0..307a09f 100644
--- a/quiche/quic/masque/masque_client_tools.h
+++ b/quiche/quic/masque/masque_client_tools.h
@@ -5,7 +5,7 @@
 #ifndef QUICHE_QUIC_MASQUE_MASQUE_CLIENT_TOOLS_H_
 #define QUICHE_QUIC_MASQUE_MASQUE_CLIENT_TOOLS_H_
 
-#include "quiche/quic/masque/masque_epoll_client.h"
+#include "quiche/quic/masque/masque_client.h"
 
 namespace quic {
 namespace tools {
@@ -14,7 +14,7 @@
 // connection represented by |masque_client|. A valid and owned |event_loop|
 // is required. |disable_certificate_verification| allows disabling verification
 // of the HTTP server's TLS certificate.
-bool SendEncapsulatedMasqueRequest(MasqueEpollClient* masque_client,
+bool SendEncapsulatedMasqueRequest(MasqueClient* masque_client,
                                    QuicEventLoop* event_loop,
                                    std::string url_string,
                                    bool disable_certificate_verification);
diff --git a/quiche/quic/masque/masque_encapsulated_epoll_client.cc b/quiche/quic/masque/masque_encapsulated_client.cc
similarity index 84%
rename from quiche/quic/masque/masque_encapsulated_epoll_client.cc
rename to quiche/quic/masque/masque_encapsulated_client.cc
index 8f92203..a8d6207 100644
--- a/quiche/quic/masque/masque_encapsulated_epoll_client.cc
+++ b/quiche/quic/masque/masque_encapsulated_client.cc
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quiche/quic/masque/masque_encapsulated_epoll_client.h"
+#include "quiche/quic/masque/masque_encapsulated_client.h"
 
 #include "quiche/quic/core/quic_utils.h"
+#include "quiche/quic/masque/masque_client.h"
 #include "quiche/quic/masque/masque_client_session.h"
 #include "quiche/quic/masque/masque_encapsulated_client_session.h"
-#include "quiche/quic/masque/masque_epoll_client.h"
 #include "quiche/quic/masque/masque_utils.h"
 #include "quiche/quic/tools/quic_client_default_network_helper.h"
 
@@ -19,7 +19,7 @@
 // packets.
 class MasquePacketWriter : public QuicPacketWriter {
  public:
-  explicit MasquePacketWriter(MasqueEncapsulatedEpollClient* client)
+  explicit MasquePacketWriter(MasqueEncapsulatedClient* client)
       : client_(client) {}
   WriteResult WritePacket(const char* buffer, size_t buf_len,
                           const QuicIpAddress& /*self_address*/,
@@ -59,7 +59,7 @@
   WriteResult Flush() override { return WriteResult(WRITE_STATUS_OK, 0); }
 
  private:
-  MasqueEncapsulatedEpollClient* client_;  // Unowned.
+  MasqueEncapsulatedClient* client_;  // Unowned.
 };
 
 // Custom network helper that allows injecting a custom packet writer in order
@@ -67,22 +67,22 @@
 class MasqueClientDefaultNetworkHelper : public QuicClientDefaultNetworkHelper {
  public:
   MasqueClientDefaultNetworkHelper(QuicEventLoop* event_loop,
-                                   MasqueEncapsulatedEpollClient* client)
+                                   MasqueEncapsulatedClient* client)
       : QuicClientDefaultNetworkHelper(event_loop, client), client_(client) {}
   QuicPacketWriter* CreateQuicPacketWriter() override {
     return new MasquePacketWriter(client_);
   }
 
  private:
-  MasqueEncapsulatedEpollClient* client_;  // Unowned.
+  MasqueEncapsulatedClient* client_;  // Unowned.
 };
 
 }  // namespace
 
-MasqueEncapsulatedEpollClient::MasqueEncapsulatedEpollClient(
+MasqueEncapsulatedClient::MasqueEncapsulatedClient(
     QuicSocketAddress server_address, const QuicServerId& server_id,
     QuicEventLoop* event_loop, std::unique_ptr<ProofVerifier> proof_verifier,
-    MasqueEpollClient* masque_client)
+    MasqueClient* masque_client)
     : QuicDefaultClient(
           server_address, server_id, MasqueSupportedVersions(),
           MasqueEncapsulatedConfig(), event_loop,
@@ -90,13 +90,12 @@
           std::move(proof_verifier)),
       masque_client_(masque_client) {}
 
-MasqueEncapsulatedEpollClient::~MasqueEncapsulatedEpollClient() {
+MasqueEncapsulatedClient::~MasqueEncapsulatedClient() {
   masque_client_->masque_client_session()->CloseConnectUdpStream(
       masque_encapsulated_client_session());
 }
 
-std::unique_ptr<QuicSession>
-MasqueEncapsulatedEpollClient::CreateQuicClientSession(
+std::unique_ptr<QuicSession> MasqueEncapsulatedClient::CreateQuicClientSession(
     const ParsedQuicVersionVector& supported_versions,
     QuicConnection* connection) {
   QUIC_DLOG(INFO) << "Creating MASQUE encapsulated session for "
@@ -107,7 +106,7 @@
 }
 
 MasqueEncapsulatedClientSession*
-MasqueEncapsulatedEpollClient::masque_encapsulated_client_session() {
+MasqueEncapsulatedClient::masque_encapsulated_client_session() {
   return static_cast<MasqueEncapsulatedClientSession*>(
       QuicDefaultClient::session());
 }
diff --git a/quiche/quic/masque/masque_encapsulated_client.h b/quiche/quic/masque/masque_encapsulated_client.h
new file mode 100644
index 0000000..42fda86
--- /dev/null
+++ b/quiche/quic/masque/masque_encapsulated_client.h
@@ -0,0 +1,47 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_QUIC_MASQUE_MASQUE_ENCAPSULATED_CLIENT_H_
+#define QUICHE_QUIC_MASQUE_MASQUE_ENCAPSULATED_CLIENT_H_
+
+#include "quiche/quic/core/io/quic_event_loop.h"
+#include "quiche/quic/masque/masque_client.h"
+#include "quiche/quic/masque/masque_encapsulated_client_session.h"
+#include "quiche/quic/platform/api/quic_export.h"
+#include "quiche/quic/tools/quic_default_client.h"
+
+namespace quic {
+
+// QUIC client for QUIC encapsulated in MASQUE.
+class QUIC_NO_EXPORT MasqueEncapsulatedClient : public QuicDefaultClient {
+ public:
+  MasqueEncapsulatedClient(QuicSocketAddress server_address,
+                           const QuicServerId& server_id,
+                           QuicEventLoop* event_loop,
+                           std::unique_ptr<ProofVerifier> proof_verifier,
+                           MasqueClient* masque_client);
+  ~MasqueEncapsulatedClient() override;
+
+  // Disallow copy and assign.
+  MasqueEncapsulatedClient(const MasqueEncapsulatedClient&) = delete;
+  MasqueEncapsulatedClient& operator=(const MasqueEncapsulatedClient&) = delete;
+
+  // From QuicClient.
+  std::unique_ptr<QuicSession> CreateQuicClientSession(
+      const ParsedQuicVersionVector& supported_versions,
+      QuicConnection* connection) override;
+
+  // MASQUE client that this client is encapsulated in.
+  MasqueClient* masque_client() { return masque_client_; }
+
+  // Client session for this client.
+  MasqueEncapsulatedClientSession* masque_encapsulated_client_session();
+
+ private:
+  MasqueClient* masque_client_;  // Unowned.
+};
+
+}  // namespace quic
+
+#endif  // QUICHE_QUIC_MASQUE_MASQUE_ENCAPSULATED_CLIENT_H_
diff --git a/quiche/quic/masque/masque_encapsulated_epoll_client.h b/quiche/quic/masque/masque_encapsulated_epoll_client.h
deleted file mode 100644
index 06777b9..0000000
--- a/quiche/quic/masque/masque_encapsulated_epoll_client.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef QUICHE_QUIC_MASQUE_MASQUE_ENCAPSULATED_EPOLL_CLIENT_H_
-#define QUICHE_QUIC_MASQUE_MASQUE_ENCAPSULATED_EPOLL_CLIENT_H_
-
-#include "quiche/quic/core/io/quic_event_loop.h"
-#include "quiche/quic/masque/masque_encapsulated_client_session.h"
-#include "quiche/quic/masque/masque_epoll_client.h"
-#include "quiche/quic/platform/api/quic_export.h"
-#include "quiche/quic/tools/quic_default_client.h"
-
-namespace quic {
-
-// QUIC client for QUIC encapsulated in MASQUE.
-class QUIC_NO_EXPORT MasqueEncapsulatedEpollClient : public QuicDefaultClient {
- public:
-  MasqueEncapsulatedEpollClient(QuicSocketAddress server_address,
-                                const QuicServerId& server_id,
-                                QuicEventLoop* event_loop,
-                                std::unique_ptr<ProofVerifier> proof_verifier,
-                                MasqueEpollClient* masque_client);
-  ~MasqueEncapsulatedEpollClient() override;
-
-  // Disallow copy and assign.
-  MasqueEncapsulatedEpollClient(const MasqueEncapsulatedEpollClient&) = delete;
-  MasqueEncapsulatedEpollClient& operator=(
-      const MasqueEncapsulatedEpollClient&) = delete;
-
-  // From QuicClient.
-  std::unique_ptr<QuicSession> CreateQuicClientSession(
-      const ParsedQuicVersionVector& supported_versions,
-      QuicConnection* connection) override;
-
-  // MASQUE client that this client is encapsulated in.
-  MasqueEpollClient* masque_client() { return masque_client_; }
-
-  // Client session for this client.
-  MasqueEncapsulatedClientSession* masque_encapsulated_client_session();
-
- private:
-  MasqueEpollClient* masque_client_;  // Unowned.
-};
-
-}  // namespace quic
-
-#endif  // QUICHE_QUIC_MASQUE_MASQUE_ENCAPSULATED_EPOLL_CLIENT_H_
diff --git a/quiche/quic/masque/masque_epoll_server.h b/quiche/quic/masque/masque_epoll_server.h
deleted file mode 100644
index 588d0e7..0000000
--- a/quiche/quic/masque/masque_epoll_server.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef QUICHE_QUIC_MASQUE_MASQUE_EPOLL_SERVER_H_
-#define QUICHE_QUIC_MASQUE_MASQUE_EPOLL_SERVER_H_
-
-#include "quiche/quic/masque/masque_server_backend.h"
-#include "quiche/quic/masque/masque_utils.h"
-#include "quiche/quic/platform/api/quic_export.h"
-#include "quiche/quic/tools/quic_server.h"
-
-namespace quic {
-
-// QUIC server that implements MASQUE.
-class QUIC_NO_EXPORT MasqueEpollServer : public QuicServer {
- public:
-  explicit MasqueEpollServer(MasqueMode masque_mode,
-                             MasqueServerBackend* masque_server_backend);
-
-  // Disallow copy and assign.
-  MasqueEpollServer(const MasqueEpollServer&) = delete;
-  MasqueEpollServer& operator=(const MasqueEpollServer&) = delete;
-
-  // From QuicServer.
-  QuicDispatcher* CreateQuicDispatcher() override;
-
- private:
-  MasqueMode masque_mode_;
-  MasqueServerBackend* masque_server_backend_;  // Unowned.
-};
-
-}  // namespace quic
-
-#endif  // QUICHE_QUIC_MASQUE_MASQUE_EPOLL_SERVER_H_
diff --git a/quiche/quic/masque/masque_epoll_server.cc b/quiche/quic/masque/masque_server.cc
similarity index 80%
rename from quiche/quic/masque/masque_epoll_server.cc
rename to quiche/quic/masque/masque_server.cc
index 80d9d2e..b05e306 100644
--- a/quiche/quic/masque/masque_epoll_server.cc
+++ b/quiche/quic/masque/masque_server.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "quiche/quic/masque/masque_epoll_server.h"
+#include "quiche/quic/masque/masque_server.h"
 
 #include "quiche/quic/core/quic_default_connection_helper.h"
 #include "quiche/quic/masque/masque_dispatcher.h"
@@ -12,14 +12,14 @@
 
 namespace quic {
 
-MasqueEpollServer::MasqueEpollServer(MasqueMode masque_mode,
-                                     MasqueServerBackend* masque_server_backend)
+MasqueServer::MasqueServer(MasqueMode masque_mode,
+                           MasqueServerBackend* masque_server_backend)
     : QuicServer(CreateDefaultProofSource(), masque_server_backend,
                  MasqueSupportedVersions()),
       masque_mode_(masque_mode),
       masque_server_backend_(masque_server_backend) {}
 
-QuicDispatcher* MasqueEpollServer::CreateQuicDispatcher() {
+QuicDispatcher* MasqueServer::CreateQuicDispatcher() {
   return new MasqueDispatcher(
       masque_mode_, &config(), &crypto_config(), version_manager(),
       event_loop(), std::make_unique<QuicDefaultConnectionHelper>(),
diff --git a/quiche/quic/masque/masque_server.h b/quiche/quic/masque/masque_server.h
new file mode 100644
index 0000000..0d09d7f
--- /dev/null
+++ b/quiche/quic/masque/masque_server.h
@@ -0,0 +1,35 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_QUIC_MASQUE_MASQUE_SERVER_H_
+#define QUICHE_QUIC_MASQUE_MASQUE_SERVER_H_
+
+#include "quiche/quic/masque/masque_server_backend.h"
+#include "quiche/quic/masque/masque_utils.h"
+#include "quiche/quic/platform/api/quic_export.h"
+#include "quiche/quic/tools/quic_server.h"
+
+namespace quic {
+
+// QUIC server that implements MASQUE.
+class QUIC_NO_EXPORT MasqueServer : public QuicServer {
+ public:
+  explicit MasqueServer(MasqueMode masque_mode,
+                        MasqueServerBackend* masque_server_backend);
+
+  // Disallow copy and assign.
+  MasqueServer(const MasqueServer&) = delete;
+  MasqueServer& operator=(const MasqueServer&) = delete;
+
+  // From QuicServer.
+  QuicDispatcher* CreateQuicDispatcher() override;
+
+ private:
+  MasqueMode masque_mode_;
+  MasqueServerBackend* masque_server_backend_;  // Unowned.
+};
+
+}  // namespace quic
+
+#endif  // QUICHE_QUIC_MASQUE_MASQUE_SERVER_H_
diff --git a/quiche/quic/masque/masque_server_bin.cc b/quiche/quic/masque/masque_server_bin.cc
index 23d9d69..148d640 100644
--- a/quiche/quic/masque/masque_server_bin.cc
+++ b/quiche/quic/masque/masque_server_bin.cc
@@ -9,7 +9,7 @@
 
 #include <memory>
 
-#include "quiche/quic/masque/masque_epoll_server.h"
+#include "quiche/quic/masque/masque_server.h"
 #include "quiche/quic/masque/masque_server_backend.h"
 #include "quiche/quic/platform/api/quic_flags.h"
 #include "quiche/quic/platform/api/quic_logging.h"
@@ -57,7 +57,7 @@
       quiche::GetQuicheCommandLineFlag(FLAGS_cache_dir));
 
   auto server =
-      std::make_unique<quic::MasqueEpollServer>(masque_mode, backend.get());
+      std::make_unique<quic::MasqueServer>(masque_mode, backend.get());
 
   if (!server->CreateUDPSocketAndListen(quic::QuicSocketAddress(
           quic::QuicIpAddress::Any6(),
