diff --git a/core/src/main/java/org/apache/accumulo/testing/core/TestEnv.java b/core/src/main/java/org/apache/accumulo/testing/core/TestEnv.java
index 04efb40..0890029 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/TestEnv.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/TestEnv.java
@@ -117,7 +117,7 @@
    */
   public AccumuloClient getAccumuloClient() throws AccumuloException, AccumuloSecurityException {
     if (client == null) {
-      client = Accumulo.newClient().usingClientInfo(info).build();
+      client = Accumulo.newClient().from(info).build();
     }
     return client;
   }
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/ingest/TestIngest.java b/core/src/main/java/org/apache/accumulo/testing/core/ingest/TestIngest.java
index 88b329f..96020bb 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/ingest/TestIngest.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/ingest/TestIngest.java
@@ -33,7 +33,7 @@
 import org.apache.accumulo.core.client.MutationsRejectedException;
 import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.impl.TabletServerBatchWriter;
+import org.apache.accumulo.core.clientImpl.TabletServerBatchWriter;
 import org.apache.accumulo.core.client.security.SecurityErrorCode;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/performance/impl/PerfTestRunner.java b/core/src/main/java/org/apache/accumulo/testing/core/performance/impl/PerfTestRunner.java
index 03566e4..7a50803 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/performance/impl/PerfTestRunner.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/performance/impl/PerfTestRunner.java
@@ -43,7 +43,7 @@
 
     PerformanceTest perfTest = Class.forName(className).asSubclass(PerformanceTest.class).newInstance();
 
-    AccumuloClient client = Accumulo.newClient().usingProperties(clientProps).build();
+    AccumuloClient client = Accumulo.newClient().from(clientProps).build();
 
     Instant start = Instant.now();
 
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/concurrent/Config.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/concurrent/Config.java
index db6937e..280ac81 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/concurrent/Config.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/concurrent/Config.java
@@ -20,8 +20,8 @@
 import java.util.SortedSet;
 
 import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
-import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
+import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType;
+import org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.testing.core.randomwalk.RandWalkEnv;
 import org.apache.accumulo.testing.core.randomwalk.State;
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTool.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTool.java
index df265eb..18393d9 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTool.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/multitable/CopyTool.java
@@ -56,7 +56,7 @@
       return 1;
     }
 
-    ClientInfo info = Accumulo.newClient().usingProperties(args[0]).info();
+    ClientInfo info = Accumulo.newClient().from(args[0]).info();
     job.setInputFormatClass(AccumuloInputFormat.class);
     AccumuloInputFormat.setClientInfo(job, info);
     AccumuloInputFormat.setInputTableName(job, args[1]);
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerifyTool.java b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerifyTool.java
index de952ee..2751fbb 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerifyTool.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/randomwalk/sequential/MapRedVerifyTool.java
@@ -87,7 +87,7 @@
       return 1;
     }
 
-    ClientInfo info = Accumulo.newClient().usingProperties(args[0]).info();
+    ClientInfo info = Accumulo.newClient().from(args[0]).info();
     AccumuloInputFormat.setClientInfo(job, info);
     AccumuloInputFormat.setInputTableName(job, args[1]);
 
diff --git a/core/src/main/java/org/apache/accumulo/testing/core/scalability/ScaleTest.java b/core/src/main/java/org/apache/accumulo/testing/core/scalability/ScaleTest.java
index 7042f0f..d511bfb 100644
--- a/core/src/main/java/org/apache/accumulo/testing/core/scalability/ScaleTest.java
+++ b/core/src/main/java/org/apache/accumulo/testing/core/scalability/ScaleTest.java
@@ -47,7 +47,7 @@
     String password = this.scaleProps.getProperty("PASSWORD");
     System.out.println(password);
 
-    client = Accumulo.newClient().forInstance(instanceName, zookeepers).usingToken(user, new PasswordToken(password)).build();
+    client = Accumulo.newClient().to(instanceName, zookeepers).as(user, new PasswordToken(password)).build();
   }
 
   protected void startTimer() {
diff --git a/core/src/test/java/org/apache/accumulo/testing/core/randomwalk/ReplicationRandomWalkIT.java b/core/src/test/java/org/apache/accumulo/testing/core/randomwalk/ReplicationRandomWalkIT.java
index a2a5124..d5659a2 100644
--- a/core/src/test/java/org/apache/accumulo/testing/core/randomwalk/ReplicationRandomWalkIT.java
+++ b/core/src/test/java/org/apache/accumulo/testing/core/randomwalk/ReplicationRandomWalkIT.java
@@ -19,7 +19,7 @@
 import static org.apache.accumulo.core.conf.Property.TSERV_NATIVEMAP_ENABLED;
 import static org.apache.accumulo.core.conf.Property.TSERV_WALOG_MAX_SIZE;
 
-import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;
+import org.apache.accumulo.miniclusterImpl.MiniAccumuloConfigImpl;
 import org.apache.accumulo.test.functional.ConfigurableMacBase;
 import org.apache.accumulo.testing.core.randomwalk.concurrent.Replication;
 import org.apache.hadoop.conf.Configuration;
