diff --git a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java
index f5985c3..7e1a4eb 100644
--- a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java
+++ b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameClient.java
@@ -74,8 +74,7 @@
       @Parameter(NameResolverRetryCount.class) final int retryCount,
       @Parameter(NameResolverRetryTimeout.class) final int retryTimeout,
       final LocalAddressProvider localAddressProvider,
-      final TransportFactory tpFactory,
-      final NameLookupClient lookupClient) {
+      final TransportFactory tpFactory) {
 
     final BlockingQueue<NamingLookupResponse> replyLookupQueue = new LinkedBlockingQueue<>();
     final BlockingQueue<NamingRegisterResponse> replyRegisterQueue = new LinkedBlockingQueue<>();
@@ -86,7 +85,8 @@
             new NamingResponseHandler(replyLookupQueue, replyRegisterQueue), codec)),
         null, retryCount, retryTimeout);
 
-    this.lookupClient = lookupClient;
+    this.lookupClient = new NameLookupClient(serverAddr, serverPort, timeout, factory,
+        retryCount, retryTimeout, replyLookupQueue, this.transport);
 
     this.registryClient = new NameRegistryClient(serverAddr, serverPort, timeout,
         factory, replyRegisterQueue, this.transport);
diff --git a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java
index efc61a6..327b9d6 100644
--- a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java
+++ b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameLookupClient.java
@@ -72,6 +72,37 @@
   private final int retryCount;
   private final int retryTimeout;
 
+
+  /**
+   * Constructs a naming lookup client.
+   *
+   * @param serverAddr a server address
+   * @param serverPort a server port number
+   * @param timeout    request timeout in ms
+   * @param factory    an identifier factory
+   * @param retryCount a count of retrying lookup
+   * @param retryTimeout retry timeout
+   * @param replyQueue a reply queue
+   * @param transport  a transport
+   */
+  NameLookupClient(final String serverAddr,
+                          final int serverPort,
+                          final long timeout,
+                          final IdentifierFactory factory,
+                          final int retryCount,
+                          final int retryTimeout,
+                          final BlockingQueue<NamingLookupResponse> replyQueue,
+                          final Transport transport) {
+    this.serverSocketAddr = new InetSocketAddress(serverAddr, serverPort);
+    this.timeout = timeout;
+    this.cache = new NameCache(timeout);
+    this.codec = NamingCodecFactory.createFullCodec(factory);
+    this.replyQueue = replyQueue;
+    this.retryCount = retryCount;
+    this.retryTimeout = retryTimeout;
+    this.transport = transport;
+  }
+
   /**
     * Constructs a naming lookup client.
     *
@@ -91,7 +122,6 @@
             @Parameter(NameResolverRetryTimeout.class) final int retryTimeout,
             final LocalAddressProvider localAddressProvider,
             final TransportFactory tpFactory) {
-
     this.serverSocketAddr = new InetSocketAddress(serverAddr, serverPort);
     this.timeout = timeout;
     this.cache = new NameCache(timeout);
diff --git a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameRegistryClient.java b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameRegistryClient.java
index a3de2b6..e354efe 100644
--- a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameRegistryClient.java
+++ b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameRegistryClient.java
@@ -70,7 +70,7 @@
    * @param serverPort a name server port
    * @param factory    an identifier factory
    */
-  public NameRegistryClient(
+  NameRegistryClient(
       final String serverAddr, final int serverPort, final IdentifierFactory factory,
       final LocalAddressProvider localAddressProvider) {
     this(serverAddr, serverPort, 10000, factory, localAddressProvider);
@@ -84,7 +84,7 @@
    * @param timeout    timeout in ms
    * @param factory    an identifier factory
    */
-  public NameRegistryClient(final String serverAddr,
+  NameRegistryClient(final String serverAddr,
                             final int serverPort,
                             final long timeout,
                             final IdentifierFactory factory,
@@ -107,7 +107,7 @@
     }
   }
 
-  public NameRegistryClient(final String serverAddr, final int serverPort,
+  NameRegistryClient(final String serverAddr, final int serverPort,
                             final long timeout, final IdentifierFactory factory,
                             final BlockingQueue<NamingRegisterResponse> replyQueue,
                             final Transport transport) {
