diff --git a/xds/src/main/java/io/grpc/xds/CdsLoadBalancerProvider.java b/xds/src/main/java/io/grpc/xds/CdsLoadBalancerProvider.java
index 7e28927..d2e3de1 100644
--- a/xds/src/main/java/io/grpc/xds/CdsLoadBalancerProvider.java
+++ b/xds/src/main/java/io/grpc/xds/CdsLoadBalancerProvider.java
@@ -55,7 +55,7 @@
 
   @Override
   public LoadBalancer newLoadBalancer(Helper helper) {
-    return new CdsLoadBalancer(helper);
+    return new CdsLoadBalancer2(helper);
   }
 
   @Override
diff --git a/xds/src/test/java/io/grpc/xds/CdsLoadBalancerProviderTest.java b/xds/src/test/java/io/grpc/xds/CdsLoadBalancerProviderTest.java
index b937fc6..0cd3d73 100644
--- a/xds/src/test/java/io/grpc/xds/CdsLoadBalancerProviderTest.java
+++ b/xds/src/test/java/io/grpc/xds/CdsLoadBalancerProviderTest.java
@@ -17,8 +17,15 @@
 package io.grpc.xds;
 
 import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
+import io.grpc.LoadBalancer;
+import io.grpc.LoadBalancer.Helper;
+import io.grpc.LoadBalancerProvider;
+import io.grpc.LoadBalancerRegistry;
 import io.grpc.NameResolver.ConfigOrError;
+import io.grpc.SynchronizationContext;
 import io.grpc.internal.JsonParser;
 import io.grpc.xds.CdsLoadBalancerProvider.CdsConfig;
 import java.io.IOException;
@@ -45,4 +52,28 @@
     CdsConfig config = (CdsConfig) result.getConfig();
     assertThat(config.name).isEqualTo("cluster-foo.googleapis.com");
   }
+
+  @Test
+  public void provided() {
+    LoadBalancerProvider provider =
+        LoadBalancerRegistry.getDefaultRegistry().getProvider(XdsLbPolicies.CDS_POLICY_NAME);
+    assertThat(provider).isInstanceOf(CdsLoadBalancerProvider.class);
+  }
+
+  @Test
+  public void providesLoadBalancer()  {
+    Helper helper = mock(Helper.class);
+
+    SynchronizationContext syncContext = new SynchronizationContext(
+        new Thread.UncaughtExceptionHandler() {
+          @Override
+          public void uncaughtException(Thread t, Throwable e) {
+            throw new AssertionError(e);
+          }
+        });
+    when(helper.getSynchronizationContext()).thenReturn(syncContext);
+    LoadBalancerProvider provider = new CdsLoadBalancerProvider();
+    LoadBalancer loadBalancer = provider.newLoadBalancer(helper);
+    assertThat(loadBalancer).isInstanceOf(CdsLoadBalancer2.class);
+  }
 }
