diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index 6a4ce01..b8e7f0c 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -204,7 +204,10 @@
       allow_short_initial_server_connection_ids_(false),
       expected_server_connection_id_length_(
           expected_server_connection_id_length),
-      should_update_expected_server_connection_id_length_(false) {}
+      should_update_expected_server_connection_id_length_(false) {
+  QUIC_DLOG(INFO) << "Created QuicDispatcher with versions: "
+                  << ParsedQuicVersionVectorToString(GetSupportedVersions());
+}
 
 QuicDispatcher::~QuicDispatcher() {
   session_map_.clear();
diff --git a/quic/tools/quic_epoll_server_factory.cc b/quic/tools/quic_epoll_server_factory.cc
index 9662658..baa1392 100644
--- a/quic/tools/quic_epoll_server_factory.cc
+++ b/quic/tools/quic_epoll_server_factory.cc
@@ -10,8 +10,10 @@
 
 std::unique_ptr<quic::QuicSpdyServerBase> QuicEpollServerFactory::CreateServer(
     quic::QuicSimpleServerBackend* backend,
-    std::unique_ptr<quic::ProofSource> proof_source) {
-  return std::make_unique<quic::QuicServer>(std::move(proof_source), backend);
+    std::unique_ptr<quic::ProofSource> proof_source,
+    const quic::ParsedQuicVersionVector& supported_versions) {
+  return std::make_unique<quic::QuicServer>(std::move(proof_source), backend,
+                                            supported_versions);
 }
 
 }  // namespace quic
diff --git a/quic/tools/quic_epoll_server_factory.h b/quic/tools/quic_epoll_server_factory.h
index 391f3cd..9070291 100644
--- a/quic/tools/quic_epoll_server_factory.h
+++ b/quic/tools/quic_epoll_server_factory.h
@@ -15,7 +15,8 @@
  public:
   std::unique_ptr<QuicSpdyServerBase> CreateServer(
       QuicSimpleServerBackend* backend,
-      std::unique_ptr<ProofSource> proof_source) override;
+      std::unique_ptr<ProofSource> proof_source,
+      const quic::ParsedQuicVersionVector& supported_versions) override;
 
  private:
   QuicEpollServer epoll_server_;
diff --git a/quic/tools/quic_server.cc b/quic/tools/quic_server.cc
index 46b04a5..294dbc5 100644
--- a/quic/tools/quic_server.cc
+++ b/quic/tools/quic_server.cc
@@ -51,9 +51,16 @@
 QuicServer::QuicServer(std::unique_ptr<ProofSource> proof_source,
                        QuicSimpleServerBackend* quic_simple_server_backend)
     : QuicServer(std::move(proof_source),
+                 quic_simple_server_backend,
+                 AllSupportedVersions()) {}
+
+QuicServer::QuicServer(std::unique_ptr<ProofSource> proof_source,
+                       QuicSimpleServerBackend* quic_simple_server_backend,
+                       const ParsedQuicVersionVector& supported_versions)
+    : QuicServer(std::move(proof_source),
                  QuicConfig(),
                  QuicCryptoServerConfig::ConfigOptions(),
-                 AllSupportedVersions(),
+                 supported_versions,
                  quic_simple_server_backend,
                  kQuicDefaultConnectionIdLength) {}
 
diff --git a/quic/tools/quic_server.h b/quic/tools/quic_server.h
index 755e5e3..0b11be3 100644
--- a/quic/tools/quic_server.h
+++ b/quic/tools/quic_server.h
@@ -39,8 +39,11 @@
   QuicServer(std::unique_ptr<ProofSource> proof_source,
              QuicSimpleServerBackend* quic_simple_server_backend);
   QuicServer(std::unique_ptr<ProofSource> proof_source,
+             QuicSimpleServerBackend* quic_simple_server_backend,
+             const ParsedQuicVersionVector& supported_versions);
+  QuicServer(std::unique_ptr<ProofSource> proof_source,
              const QuicConfig& config,
-             const QuicCryptoServerConfig::ConfigOptions& server_config_options,
+             const QuicCryptoServerConfig::ConfigOptions& crypto_config_options,
              const ParsedQuicVersionVector& supported_versions,
              QuicSimpleServerBackend* quic_simple_server_backend,
              uint8_t expected_server_connection_id_length);
diff --git a/quic/tools/quic_toy_server.cc b/quic/tools/quic_toy_server.cc
index 39f206f..c572c7a 100644
--- a/quic/tools/quic_toy_server.cc
+++ b/quic/tools/quic_toy_server.cc
@@ -49,15 +49,19 @@
     : backend_factory_(backend_factory), server_factory_(server_factory) {}
 
 int QuicToyServer::Start() {
+  ParsedQuicVersionVector supported_versions;
   if (GetQuicFlag(FLAGS_quic_ietf_draft)) {
     QuicVersionInitializeSupportForIetfDraft();
-    quic::QuicEnableVersion(
-        quic::ParsedQuicVersion(quic::PROTOCOL_TLS1_3, quic::QUIC_VERSION_99));
+    ParsedQuicVersion version(PROTOCOL_TLS1_3, QUIC_VERSION_99);
+    QuicEnableVersion(version);
+    supported_versions = {version};
+  } else {
+    supported_versions = AllSupportedVersions();
   }
   auto proof_source = quic::CreateDefaultProofSource();
   auto backend = backend_factory_->CreateBackend();
-  auto server =
-      server_factory_->CreateServer(backend.get(), std::move(proof_source));
+  auto server = server_factory_->CreateServer(
+      backend.get(), std::move(proof_source), supported_versions);
 
   if (!server->CreateUDPSocketAndListen(quic::QuicSocketAddress(
           quic::QuicIpAddress::Any6(), GetQuicFlag(FLAGS_port)))) {
diff --git a/quic/tools/quic_toy_server.h b/quic/tools/quic_toy_server.h
index 6c5c486..6168b3f 100644
--- a/quic/tools/quic_toy_server.h
+++ b/quic/tools/quic_toy_server.h
@@ -24,7 +24,8 @@
     // responses, and |proof_source| for certificates.
     virtual std::unique_ptr<QuicSpdyServerBase> CreateServer(
         QuicSimpleServerBackend* backend,
-        std::unique_ptr<ProofSource> proof_source) = 0;
+        std::unique_ptr<ProofSource> proof_source,
+        const ParsedQuicVersionVector& supported_versions) = 0;
   };
 
   // A facotry for creating QuicSimpleServerBackend instances.
