diff --git a/java/src/main/java/com/google/crypto/tink/aead/AeadConfig.java b/java/src/main/java/com/google/crypto/tink/aead/AeadConfig.java
index 7f303a1..d311175 100644
--- a/java/src/main/java/com/google/crypto/tink/aead/AeadConfig.java
+++ b/java/src/main/java/com/google/crypto/tink/aead/AeadConfig.java
@@ -97,13 +97,13 @@
    */
   public static void register() throws GeneralSecurityException {
     MacConfig.register();
-    Registry.registerKeyManager(new AesCtrHmacAeadKeyManager(), /*newKeyAllowed=*/ true);
-    Registry.registerKeyManager(new AesEaxKeyManager(), /*newKeyAllowed=*/ true);
+    AesCtrHmacAeadKeyManager.register(/*newKeyAllowed=*/ true);
+    AesEaxKeyManager.register(/*newKeyAllowed=*/ true);
     AesGcmKeyManager.register(/*newKeyAllowed=*/ true);
-    Registry.registerKeyManager(new ChaCha20Poly1305KeyManager(), /*newKeyAllowed=*/ true);
-    Registry.registerKeyManager(new KmsAeadKeyManager(), /*newKeyAllowed=*/ true);
-    Registry.registerKeyManager(new KmsEnvelopeAeadKeyManager(), /*newKeyAllowed=*/ true);
-    Registry.registerKeyManager(new XChaCha20Poly1305KeyManager(), /*newKeyAllowed=*/ true);
+    ChaCha20Poly1305KeyManager.register(/*newKeyAllowed=*/ true);
+    KmsAeadKeyManager.register(/*newKeyAllowed=*/ true);
+    KmsEnvelopeAeadKeyManager.register(/*newKeyAllowed=*/ true);
+    XChaCha20Poly1305KeyManager.register(/*newKeyAllowed=*/ true);
     AeadWrapper.register();
   }
 
diff --git a/java/src/main/java/com/google/crypto/tink/aead/AesCtrHmacAeadKeyManager.java b/java/src/main/java/com/google/crypto/tink/aead/AesCtrHmacAeadKeyManager.java
index db261b8..50368d8 100644
--- a/java/src/main/java/com/google/crypto/tink/aead/AesCtrHmacAeadKeyManager.java
+++ b/java/src/main/java/com/google/crypto/tink/aead/AesCtrHmacAeadKeyManager.java
@@ -19,6 +19,7 @@
 import com.google.crypto.tink.Aead;
 import com.google.crypto.tink.KeyTypeManager;
 import com.google.crypto.tink.Mac;
+import com.google.crypto.tink.Registry;
 import com.google.crypto.tink.mac.HmacKeyManager;
 import com.google.crypto.tink.proto.AesCtrHmacAeadKey;
 import com.google.crypto.tink.proto.AesCtrHmacAeadKeyFormat;
@@ -36,8 +37,8 @@
  * This key manager generates new {@link AesCtrHmacAeadKey} keys and produces new instances of
  * {@link EncryptThenAuthenticate}.
  */
-class AesCtrHmacAeadKeyManager extends KeyTypeManager<AesCtrHmacAeadKey> {
-  public AesCtrHmacAeadKeyManager() {
+public class AesCtrHmacAeadKeyManager extends KeyTypeManager<AesCtrHmacAeadKey> {
+  AesCtrHmacAeadKeyManager() {
     super(
         AesCtrHmacAeadKey.class,
         new PrimitiveFactory<Aead, AesCtrHmacAeadKey>(Aead.class) {
@@ -110,4 +111,8 @@
       }
     };
   }
+
+  public static void register(boolean newKeyAllowed) throws GeneralSecurityException {
+    Registry.registerKeyManager(new AesCtrHmacAeadKeyManager(), newKeyAllowed);
+  }
 }
diff --git a/java/src/main/java/com/google/crypto/tink/aead/AesCtrKeyManager.java b/java/src/main/java/com/google/crypto/tink/aead/AesCtrKeyManager.java
index 968a1ed..30eebec 100644
--- a/java/src/main/java/com/google/crypto/tink/aead/AesCtrKeyManager.java
+++ b/java/src/main/java/com/google/crypto/tink/aead/AesCtrKeyManager.java
@@ -17,6 +17,7 @@
 package com.google.crypto.tink.aead;
 
 import com.google.crypto.tink.KeyTypeManager;
+import com.google.crypto.tink.Registry;
 import com.google.crypto.tink.proto.AesCtrKey;
 import com.google.crypto.tink.proto.AesCtrKeyFormat;
 import com.google.crypto.tink.proto.AesCtrParams;
@@ -33,8 +34,8 @@
  * This key manager generates new {@code AesCtrKey} keys and produces new instances of {@code
  * AesCtrJceCipher}.
  */
-class AesCtrKeyManager extends KeyTypeManager<AesCtrKey> {
-  public AesCtrKeyManager() {
+public class AesCtrKeyManager extends KeyTypeManager<AesCtrKey> {
+  AesCtrKeyManager() {
     super(
         AesCtrKey.class,
         new PrimitiveFactory<IndCpaCipher, AesCtrKey>(IndCpaCipher.class) {
@@ -113,4 +114,8 @@
       throw new GeneralSecurityException("invalid IV size");
     }
   }
+
+  public static void register(boolean newKeyAllowed) throws GeneralSecurityException {
+    Registry.registerKeyManager(new AesCtrKeyManager(), newKeyAllowed);
+  }
 }
diff --git a/java/src/main/java/com/google/crypto/tink/aead/AesEaxKeyManager.java b/java/src/main/java/com/google/crypto/tink/aead/AesEaxKeyManager.java
index bbdfb39..bb7b6ed 100644
--- a/java/src/main/java/com/google/crypto/tink/aead/AesEaxKeyManager.java
+++ b/java/src/main/java/com/google/crypto/tink/aead/AesEaxKeyManager.java
@@ -18,6 +18,7 @@
 
 import com.google.crypto.tink.Aead;
 import com.google.crypto.tink.KeyTypeManager;
+import com.google.crypto.tink.Registry;
 import com.google.crypto.tink.proto.AesEaxKey;
 import com.google.crypto.tink.proto.AesEaxKeyFormat;
 import com.google.crypto.tink.proto.KeyData.KeyMaterialType;
@@ -32,8 +33,8 @@
  * This key manager generates new {@code AesEaxKey} keys and produces new instances of {@code
  * AesEaxJce}.
  */
-class AesEaxKeyManager extends KeyTypeManager<AesEaxKey> {
-  public AesEaxKeyManager() {
+public class AesEaxKeyManager extends KeyTypeManager<AesEaxKey> {
+  AesEaxKeyManager() {
     super(
         AesEaxKey.class,
         new PrimitiveFactory<Aead, AesEaxKey>(Aead.class) {
@@ -102,4 +103,8 @@
       }
     };
   }
+
+  public static void register(boolean newKeyAllowed) throws GeneralSecurityException {
+    Registry.registerKeyManager(new AesEaxKeyManager(), newKeyAllowed);
+  }
 }
diff --git a/java/src/main/java/com/google/crypto/tink/aead/ChaCha20Poly1305KeyManager.java b/java/src/main/java/com/google/crypto/tink/aead/ChaCha20Poly1305KeyManager.java
index e047b84..bae2303 100644
--- a/java/src/main/java/com/google/crypto/tink/aead/ChaCha20Poly1305KeyManager.java
+++ b/java/src/main/java/com/google/crypto/tink/aead/ChaCha20Poly1305KeyManager.java
@@ -18,6 +18,7 @@
 
 import com.google.crypto.tink.Aead;
 import com.google.crypto.tink.KeyTypeManager;
+import com.google.crypto.tink.Registry;
 import com.google.crypto.tink.proto.ChaCha20Poly1305Key;
 import com.google.crypto.tink.proto.ChaCha20Poly1305KeyFormat;
 import com.google.crypto.tink.proto.KeyData.KeyMaterialType;
@@ -32,8 +33,8 @@
  * This instance of {@code KeyManager} generates new {@code ChaCha20Poly1305} keys and produces new
  * instances of {@code ChaCha20Poly1305}.
  */
-class ChaCha20Poly1305KeyManager extends KeyTypeManager<ChaCha20Poly1305Key> {
-  public ChaCha20Poly1305KeyManager() {
+public class ChaCha20Poly1305KeyManager extends KeyTypeManager<ChaCha20Poly1305Key> {
+  ChaCha20Poly1305KeyManager() {
     super(
         ChaCha20Poly1305Key.class,
         new PrimitiveFactory<Aead, ChaCha20Poly1305Key>(Aead.class) {
@@ -98,4 +99,8 @@
       }
     };
   }
+
+  public static void register(boolean newKeyAllowed) throws GeneralSecurityException {
+    Registry.registerKeyManager(new ChaCha20Poly1305KeyManager(), newKeyAllowed);
+  }
 }
diff --git a/java/src/main/java/com/google/crypto/tink/aead/KmsAeadKeyManager.java b/java/src/main/java/com/google/crypto/tink/aead/KmsAeadKeyManager.java
index b3af757..4eaff5a 100644
--- a/java/src/main/java/com/google/crypto/tink/aead/KmsAeadKeyManager.java
+++ b/java/src/main/java/com/google/crypto/tink/aead/KmsAeadKeyManager.java
@@ -20,6 +20,7 @@
 import com.google.crypto.tink.KeyTypeManager;
 import com.google.crypto.tink.KmsClient;
 import com.google.crypto.tink.KmsClients;
+import com.google.crypto.tink.Registry;
 import com.google.crypto.tink.proto.KeyData.KeyMaterialType;
 import com.google.crypto.tink.proto.KmsAeadKey;
 import com.google.crypto.tink.proto.KmsAeadKeyFormat;
@@ -32,8 +33,8 @@
  * This key manager produces new instances of {@code Aead} that forwards encrypt/decrypt requests to
  * a key residing in a remote KMS.
  */
-class KmsAeadKeyManager extends KeyTypeManager<KmsAeadKey> {
-  public KmsAeadKeyManager() {
+public class KmsAeadKeyManager extends KeyTypeManager<KmsAeadKey> {
+  KmsAeadKeyManager() {
     super(
         KmsAeadKey.class,
         new PrimitiveFactory<Aead, KmsAeadKey>(Aead.class) {
@@ -89,4 +90,8 @@
       }
     };
   }
+
+  public static void register(boolean newKeyAllowed) throws GeneralSecurityException {
+    Registry.registerKeyManager(new KmsAeadKeyManager(), newKeyAllowed);
+  }
 }
diff --git a/java/src/main/java/com/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager.java b/java/src/main/java/com/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager.java
index 3dddb30..c900c18 100644
--- a/java/src/main/java/com/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager.java
+++ b/java/src/main/java/com/google/crypto/tink/aead/KmsEnvelopeAeadKeyManager.java
@@ -20,6 +20,7 @@
 import com.google.crypto.tink.KeyTypeManager;
 import com.google.crypto.tink.KmsClient;
 import com.google.crypto.tink.KmsClients;
+import com.google.crypto.tink.Registry;
 import com.google.crypto.tink.proto.KeyData.KeyMaterialType;
 import com.google.crypto.tink.proto.KmsEnvelopeAeadKey;
 import com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormat;
@@ -32,8 +33,8 @@
  * This key manager generates new {@code KmsEnvelopeAeadKey} keys and produces new instances of
  * {@code KmsEnvelopeAead}.
  */
-class KmsEnvelopeAeadKeyManager extends KeyTypeManager<KmsEnvelopeAeadKey> {
-  public KmsEnvelopeAeadKeyManager() {
+public class KmsEnvelopeAeadKeyManager extends KeyTypeManager<KmsEnvelopeAeadKey> {
+  KmsEnvelopeAeadKeyManager() {
     super(
         KmsEnvelopeAeadKey.class,
         new PrimitiveFactory<Aead, KmsEnvelopeAeadKey>(Aead.class) {
@@ -93,4 +94,8 @@
       }
     };
   }
+
+  public static void register(boolean newKeyAllowed) throws GeneralSecurityException {
+    Registry.registerKeyManager(new KmsEnvelopeAeadKeyManager(), newKeyAllowed);
+  }
 }
diff --git a/java/src/main/java/com/google/crypto/tink/aead/XChaCha20Poly1305KeyManager.java b/java/src/main/java/com/google/crypto/tink/aead/XChaCha20Poly1305KeyManager.java
index 8b123f3..ec4c8ad 100644
--- a/java/src/main/java/com/google/crypto/tink/aead/XChaCha20Poly1305KeyManager.java
+++ b/java/src/main/java/com/google/crypto/tink/aead/XChaCha20Poly1305KeyManager.java
@@ -18,6 +18,7 @@
 
 import com.google.crypto.tink.Aead;
 import com.google.crypto.tink.KeyTypeManager;
+import com.google.crypto.tink.Registry;
 import com.google.crypto.tink.proto.KeyData.KeyMaterialType;
 import com.google.crypto.tink.proto.XChaCha20Poly1305Key;
 import com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormat;
@@ -32,8 +33,8 @@
  * This instance of {@code KeyManager} generates new {@code XChaCha20Poly1305} keys and produces new
  * instances of {@code XChaCha20Poly1305}.
  */
-class XChaCha20Poly1305KeyManager extends KeyTypeManager<XChaCha20Poly1305Key> {
-  public XChaCha20Poly1305KeyManager() {
+public class XChaCha20Poly1305KeyManager extends KeyTypeManager<XChaCha20Poly1305Key> {
+  XChaCha20Poly1305KeyManager() {
     super(
         XChaCha20Poly1305Key.class,
         new PrimitiveFactory<Aead, XChaCha20Poly1305Key>(Aead.class) {
@@ -99,4 +100,8 @@
       }
     };
   }
+
+  public static void register(boolean newKeyAllowed) throws GeneralSecurityException {
+    Registry.registerKeyManager(new XChaCha20Poly1305KeyManager(), newKeyAllowed);
+  }
 }
