diff --git a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/NodeDiscoveryService.kt b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/NodeDiscoveryService.kt
index bc8920b..9a0fcc0 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/NodeDiscoveryService.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/NodeDiscoveryService.kt
@@ -16,6 +16,21 @@
  */
 package org.apache.tuweni.devp2p.v5
 
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import org.apache.tuweni.bytes.Bytes
+import org.apache.tuweni.crypto.SECP256K1
+import org.apache.tuweni.devp2p.EthereumNodeRecord
+import org.apache.tuweni.devp2p.v5.internal.DefaultUdpConnector
+import org.apache.tuweni.devp2p.v5.packet.RandomMessage
+import org.apache.tuweni.io.Base64URLSafe
+import java.net.InetSocketAddress
+import java.time.Instant
+import kotlin.coroutines.CoroutineContext
+
 /**
  * Service executes network discovery, according to discv5 specification
  * (https://github.com/ethereum/devp2p/blob/master/discv5/discv5.md)
@@ -31,4 +46,54 @@
    * Executes service shut down
    */
   fun terminate(await: Boolean = false)
+
+}
+
+internal class DefaultNodeDiscoveryService(
+  private val keyPair: SECP256K1.KeyPair,
+  private val localPort: Int,
+  private val bindAddress: InetSocketAddress = InetSocketAddress(localPort),
+  private val bootstrapENRList: List<String> = emptyList(),
+  private val enrSeq: Long = Instant.now().toEpochMilli(),
+  private val selfENR: Bytes = EthereumNodeRecord.toRLP(
+    keyPair,
+    enrSeq,
+    emptyMap(),
+    bindAddress.address,
+    null,
+    bindAddress.port
+  ),
+  private val connector: UdpConnector = DefaultUdpConnector(bindAddress, keyPair, selfENR),
+  override val coroutineContext: CoroutineContext = Dispatchers.Default
+) : NodeDiscoveryService, CoroutineScope {
+
+  override fun start() {
+    connector.start()
+    launch { bootstrap() }
+  }
+
+  override fun terminate(await: Boolean) {
+    runBlocking {
+      val job = async { connector.terminate() }
+      if (await) {
+        job.await()
+      }
+    }
+  }
+
+  private fun bootstrap() {
+    bootstrapENRList.forEach {
+      if (it.startsWith("enr:")) {
+        val encodedEnr = it.substringAfter("enr:")
+        val rlpENR = Base64URLSafe.decode(encodedEnr)
+        val enr = EthereumNodeRecord.fromRLP(rlpENR)
+
+        val randomMessage = RandomMessage()
+        val address = InetSocketAddress(enr.ip(), enr.udp())
+
+        connector.addPendingNodeId(address, rlpENR)
+        connector.send(address, randomMessage, rlpENR)
+      }
+    }
+  }
 }
diff --git a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/encrypt/AES128GCM.kt b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/encrypt/AES128GCM.kt
index 48c359d..bb3eaee 100644
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/encrypt/AES128GCM.kt
+++ b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/encrypt/AES128GCM.kt
@@ -61,11 +61,11 @@
 
     cipher.updateAAD(data)
 
-    val encriptedText = Bytes.wrap(cipher.doFinal(message))
+    val encryptedText = Bytes.wrap(cipher.doFinal(message))
 
     val wrappedNonce = Bytes.wrap(nonce)
     val nonceSize = Bytes.ofUnsignedInt(nonce.size.toLong())
-    return Bytes.wrap(nonceSize, wrappedNonce, encriptedText).toArray()
+    return Bytes.wrap(nonceSize, wrappedNonce, encryptedText).toArray()
   }
 
   /**
@@ -92,8 +92,8 @@
     val nonceLength = buffer.int
     val nonce = ByteArray(nonceLength)
     buffer.get(nonce)
-    val encriptedText = ByteArray(buffer.remaining())
-    buffer.get(encriptedText)
+    val encryptedText = ByteArray(buffer.remaining())
+    buffer.get(encryptedText)
 
     val keySpec = SecretKeySpec(key, ALGO_NAME)
 
@@ -103,6 +103,6 @@
 
     cipher.updateAAD(data)
 
-    return cipher.doFinal(encriptedText)
+    return cipher.doFinal(encryptedText)
   }
 }
diff --git a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultNodeDiscoveryService.kt b/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultNodeDiscoveryService.kt
deleted file mode 100644
index 8575452..0000000
--- a/devp2p/src/main/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultNodeDiscoveryService.kt
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.tuweni.devp2p.v5.internal
-
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.async
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.runBlocking
-import org.apache.tuweni.bytes.Bytes
-import org.apache.tuweni.crypto.SECP256K1
-import org.apache.tuweni.devp2p.EthereumNodeRecord
-import org.apache.tuweni.devp2p.v5.NodeDiscoveryService
-import org.apache.tuweni.devp2p.v5.UdpConnector
-import org.apache.tuweni.devp2p.v5.packet.RandomMessage
-import org.apache.tuweni.io.Base64URLSafe
-import java.net.InetSocketAddress
-import java.time.Instant
-import kotlin.coroutines.CoroutineContext
-
-class DefaultNodeDiscoveryService(
-  private val keyPair: SECP256K1.KeyPair,
-  private val localPort: Int,
-  private val bindAddress: InetSocketAddress = InetSocketAddress(localPort),
-  private val bootstrapENRList: List<String> = emptyList(),
-  private val enrSeq: Long = Instant.now().toEpochMilli(),
-  private val selfENR: Bytes = EthereumNodeRecord.toRLP(
-    keyPair,
-    enrSeq,
-    emptyMap(),
-    bindAddress.address,
-    null,
-    bindAddress.port
-  ),
-  private val connector: UdpConnector = DefaultUdpConnector(bindAddress, keyPair, selfENR),
-  override val coroutineContext: CoroutineContext = Dispatchers.Default
-) : NodeDiscoveryService, CoroutineScope {
-
-  override fun start() {
-    connector.start()
-    launch { bootstrap() }
-  }
-
-  override fun terminate(await: Boolean) {
-    runBlocking {
-      val job = async { connector.terminate() }
-      if (await) {
-        job.await()
-      }
-    }
-  }
-
-  private fun bootstrap() {
-    bootstrapENRList.forEach {
-      if (it.startsWith("enr:")) {
-        val encodedEnr = it.substringAfter("enr:")
-        val rlpENR = Base64URLSafe.decode(encodedEnr)
-        val enr = EthereumNodeRecord.fromRLP(rlpENR)
-
-        val randomMessage = RandomMessage()
-        val address = InetSocketAddress(enr.ip(), enr.udp())
-
-        connector.addPendingNodeId(address, rlpENR)
-        connector.send(address, randomMessage, rlpENR)
-      }
-    }
-  }
-}
diff --git a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultNodeDiscoveryServiceTest.kt b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/DefaultNodeDiscoveryServiceTest.kt
similarity index 89%
rename from devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultNodeDiscoveryServiceTest.kt
rename to devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/DefaultNodeDiscoveryServiceTest.kt
index 895db0b..a9f64e5 100644
--- a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/internal/DefaultNodeDiscoveryServiceTest.kt
+++ b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/DefaultNodeDiscoveryServiceTest.kt
@@ -14,14 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tuweni.devp2p.v5.internal
+package org.apache.tuweni.devp2p.v5
 
 import kotlinx.coroutines.runBlocking
 import org.apache.tuweni.bytes.Bytes
 import org.apache.tuweni.crypto.SECP256K1
 import org.apache.tuweni.devp2p.EthereumNodeRecord
-import org.apache.tuweni.devp2p.v5.NodeDiscoveryService
-import org.apache.tuweni.devp2p.v5.UdpConnector
+import org.apache.tuweni.devp2p.v5.internal.DefaultUdpConnector
 import org.apache.tuweni.devp2p.v5.packet.RandomMessage
 import org.apache.tuweni.devp2p.v5.packet.UdpMessage
 import org.apache.tuweni.io.Base64URLSafe
@@ -41,7 +40,6 @@
   private val recipientEnr: Bytes =
     EthereumNodeRecord.toRLP(recipientKeyPair, ip = InetAddress.getLocalHost(), udp = 9091)
   private val encodedEnr: String = "enr:${Base64URLSafe.encode(recipientEnr)}"
-
   private val keyPair: SECP256K1.KeyPair = SECP256K1.KeyPair.random()
   private val localPort: Int = 9090
   private val bindAddress: InetSocketAddress = InetSocketAddress(localPort)
@@ -55,10 +53,19 @@
     null,
     bindAddress.port
   )
-  private val connector: UdpConnector = DefaultUdpConnector(bindAddress, keyPair, selfENR)
+  private val connector: UdpConnector =
+    DefaultUdpConnector(bindAddress, keyPair, selfENR)
 
   private val nodeDiscoveryService: NodeDiscoveryService =
-    DefaultNodeDiscoveryService(keyPair, localPort, bindAddress, bootstrapENRList, enrSeq, selfENR, connector)
+    DefaultNodeDiscoveryService(
+      keyPair,
+      localPort,
+      bindAddress,
+      bootstrapENRList,
+      enrSeq,
+      selfENR,
+      connector
+    )
 
   @Test
   fun startInitializesConnectorAndBootstraps() {
diff --git a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/HandshakeIntegrationTest.kt b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/HandshakeIntegrationTest.kt
index ebbad34..46b0d47 100644
--- a/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/HandshakeIntegrationTest.kt
+++ b/devp2p/src/test/kotlin/org/apache/tuweni/devp2p/v5/HandshakeIntegrationTest.kt
@@ -22,7 +22,6 @@
 import org.apache.tuweni.crypto.SECP256K1
 import org.apache.tuweni.devp2p.EthereumNodeRecord
 import org.apache.tuweni.devp2p.v5.internal.DefaultAuthenticationProvider
-import org.apache.tuweni.devp2p.v5.internal.DefaultNodeDiscoveryService
 import org.apache.tuweni.devp2p.v5.internal.DefaultPacketCodec
 import org.apache.tuweni.devp2p.v5.internal.DefaultUdpConnector
 import org.apache.tuweni.devp2p.v5.packet.FindNodeMessage
