diff --git a/contrib/import-control.xml b/contrib/import-control.xml
index 60eae35..f94af1b 100644
--- a/contrib/import-control.xml
+++ b/contrib/import-control.xml
@@ -37,8 +37,6 @@
     <allow pkg="org.apache.accumulo.core.conf"/>
 
     <!-- TODO refactor code to remove the following exceptions -->
-    <allow class="org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType"/>
-    <allow class="org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException"/>
     <allow class="org.apache.accumulo.core.metadata.MetadataTable"/>
     <allow class="org.apache.accumulo.core.replication.ReplicationTable"/>
     <allow class="org.apache.accumulo.core.spi.scan.HintScanPrioritizer"/>
diff --git a/src/main/java/org/apache/accumulo/testing/randomwalk/concurrent/Config.java b/src/main/java/org/apache/accumulo/testing/randomwalk/concurrent/Config.java
index 3353403..b209d33 100644
--- a/src/main/java/org/apache/accumulo/testing/randomwalk/concurrent/Config.java
+++ b/src/main/java/org/apache/accumulo/testing/randomwalk/concurrent/Config.java
@@ -20,8 +20,8 @@
 import java.util.SortedSet;
 
 import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType;
-import org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException;
+import org.apache.accumulo.core.client.NamespaceNotFoundException;
+import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.testing.randomwalk.RandWalkEnv;
 import org.apache.accumulo.testing.randomwalk.State;
@@ -131,10 +131,8 @@
           env.getAccumuloClient().tableOperations().setProperty(table, property.getKey(),
               property.getDefaultValue());
         } catch (AccumuloException ex) {
-          if (ex.getCause() instanceof ThriftTableOperationException) {
-            ThriftTableOperationException ttoe = (ThriftTableOperationException) ex.getCause();
-            if (ttoe.type == TableOperationExceptionType.NOTFOUND)
-              return;
+          if (ex.getCause() instanceof TableNotFoundException) {
+            return;
           }
           throw ex;
         }
@@ -153,10 +151,8 @@
           env.getAccumuloClient().namespaceOperations().setProperty(namespace, property.getKey(),
               property.getDefaultValue());
         } catch (AccumuloException ex) {
-          if (ex.getCause() instanceof ThriftTableOperationException) {
-            ThriftTableOperationException ttoe = (ThriftTableOperationException) ex.getCause();
-            if (ttoe.type == TableOperationExceptionType.NAMESPACE_NOTFOUND)
-              return;
+          if (ex.getCause() instanceof NamespaceNotFoundException) {
+            return;
           }
           throw ex;
         }
@@ -197,10 +193,8 @@
       env.getAccumuloClient().tableOperations().setProperty(table, setting.property.getKey(),
           "" + newValue);
     } catch (AccumuloException ex) {
-      if (ex.getCause() instanceof ThriftTableOperationException) {
-        ThriftTableOperationException ttoe = (ThriftTableOperationException) ex.getCause();
-        if (ttoe.type == TableOperationExceptionType.NOTFOUND)
-          return;
+      if (ex.getCause() instanceof TableNotFoundException) {
+        return;
       }
       throw ex;
     }
@@ -228,10 +222,8 @@
       env.getAccumuloClient().namespaceOperations().setProperty(namespace,
           setting.property.getKey(), "" + newValue);
     } catch (AccumuloException ex) {
-      if (ex.getCause() instanceof ThriftTableOperationException) {
-        ThriftTableOperationException ttoe = (ThriftTableOperationException) ex.getCause();
-        if (ttoe.type == TableOperationExceptionType.NAMESPACE_NOTFOUND)
-          return;
+      if (ex.getCause() instanceof NamespaceNotFoundException) {
+        return;
       }
       throw ex;
     }
