[SUREFIRE-1793] Change the Java packge of surefire-api to the distinct package org.apache.maven.surefire.api
diff --git a/maven-failsafe-plugin/pom.xml b/maven-failsafe-plugin/pom.xml
index a6474f4..e0e8c0c 100644
--- a/maven-failsafe-plugin/pom.xml
+++ b/maven-failsafe-plugin/pom.xml
@@ -292,7 +292,6 @@
                         </executions>
                         <configuration>
                             <javaHome>${jdk.home}</javaHome>
-                            <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
                         </configuration>
                     </plugin>
                 </plugins>
diff --git a/maven-failsafe-plugin/src/it/settings.xml b/maven-failsafe-plugin/src/it/settings.xml
index 2ec940a..90ecf59 100644
--- a/maven-failsafe-plugin/src/it/settings.xml
+++ b/maven-failsafe-plugin/src/it/settings.xml
@@ -18,36 +18,5 @@
   ~ under the License.
   -->
 <settings>
-  <profiles>
-    <profile>
-      <id>it-repo</id>
-      <activation>
-        <activeByDefault>true</activeByDefault>
-      </activation>
-      <repositories>
-        <repository>
-          <id>local.central</id>
-          <url>@localRepositoryUrl@</url>
-          <releases>
-            <enabled>true</enabled>
-          </releases>
-          <snapshots>
-            <enabled>false</enabled>
-          </snapshots>
-        </repository>
-      </repositories>
-      <pluginRepositories>
-        <pluginRepository>
-          <id>local.central</id>
-          <url>@localRepositoryUrl@</url>
-          <releases>
-            <enabled>true</enabled>
-          </releases>
-          <snapshots>
-            <enabled>true</enabled>
-          </snapshots>
-        </pluginRepository>
-      </pluginRepositories>
-    </profile>
-  </profiles>
+    <localRepository>@localRepositoryUrl@</localRepository>
 </settings>
diff --git a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
index 71c652b..332c311 100644
--- a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
+++ b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
@@ -28,7 +28,7 @@
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java
index 2fa31e1..dd8950d 100644
--- a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java
+++ b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java
@@ -31,8 +31,8 @@
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.suite.RunResult;
 import org.codehaus.plexus.logging.Logger;
 
 import java.io.File;
@@ -40,7 +40,7 @@
 
 import static org.apache.maven.plugin.surefire.SurefireHelper.reportExecution;
 import static org.apache.maven.surefire.shared.utils.StringUtils.capitalizeFirstLetter;
-import static org.apache.maven.surefire.suite.RunResult.noTestsRun;
+import static org.apache.maven.surefire.api.suite.RunResult.noTestsRun;
 
 /**
  * Verify integration tests ran using Surefire.
diff --git a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/util/FailsafeSummaryXmlUtils.java b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/util/FailsafeSummaryXmlUtils.java
index f8f1579..5b83696 100644
--- a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/util/FailsafeSummaryXmlUtils.java
+++ b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/util/FailsafeSummaryXmlUtils.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.surefire.shared.io.IOUtils;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 import org.w3c.dom.Node;
 import org.xml.sax.InputSource;
 
diff --git a/maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/MarshallerUnmarshallerTest.java b/maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/MarshallerUnmarshallerTest.java
index 94e65c8..2e16cbf 100644
--- a/maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/MarshallerUnmarshallerTest.java
+++ b/maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/MarshallerUnmarshallerTest.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.failsafe.util.FailsafeSummaryXmlUtils;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 import org.junit.Test;
 
 import java.io.File;
diff --git a/maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/RunResultTest.java b/maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/RunResultTest.java
index 3ef140c..e16505a 100644
--- a/maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/RunResultTest.java
+++ b/maven-failsafe-plugin/src/test/java/org/apache/maven/plugin/failsafe/RunResultTest.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.failsafe.util.FailsafeSummaryXmlUtils;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 import org.junit.Test;
 
 import java.io.File;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index b1197e1..8ab5d64 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -68,24 +68,24 @@
 import org.apache.maven.surefire.booter.ModularClasspathConfiguration;
 import org.apache.maven.surefire.booter.ProcessCheckerType;
 import org.apache.maven.surefire.booter.ProviderConfiguration;
-import org.apache.maven.surefire.booter.ProviderParameterNames;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.ProviderParameterNames;
+import org.apache.maven.surefire.api.booter.Shutdown;
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.booter.SurefireBooterForkException;
 import org.apache.maven.surefire.booter.SurefireExecutionException;
-import org.apache.maven.surefire.cli.CommandLineOption;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
 import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.providerapi.SurefireProvider;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.DefaultScanResult;
-import org.apache.maven.surefire.util.RunOrder;
+import org.apache.maven.surefire.api.provider.SurefireProvider;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
+import org.apache.maven.surefire.api.util.RunOrder;
 import org.apache.maven.toolchain.DefaultToolchain;
 import org.apache.maven.toolchain.Toolchain;
 import org.apache.maven.toolchain.ToolchainManager;
@@ -142,10 +142,10 @@
 import static org.apache.maven.surefire.booter.SystemUtils.isJava9AtLeast;
 import static org.apache.maven.surefire.booter.SystemUtils.toJdkHomeFromJvmExec;
 import static org.apache.maven.surefire.booter.SystemUtils.toJdkVersionFromReleaseFile;
-import static org.apache.maven.surefire.suite.RunResult.failure;
-import static org.apache.maven.surefire.suite.RunResult.noTestsRun;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray;
-import static org.apache.maven.surefire.util.ReflectionUtils.tryGetMethod;
+import static org.apache.maven.surefire.api.suite.RunResult.failure;
+import static org.apache.maven.surefire.api.suite.RunResult.noTestsRun;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.tryGetMethod;
 
 /**
  * Abstract base class for running tests using Surefire.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector.java
index 466148f..989a524 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector.java
@@ -25,15 +25,15 @@
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLoggerDecorator;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
-import org.apache.maven.surefire.util.SurefireReflectionException;
+import org.apache.maven.surefire.api.util.SurefireReflectionException;
 
 import javax.annotation.Nonnull;
 import java.io.File;
 import java.lang.reflect.Constructor;
 
-import static org.apache.maven.surefire.util.ReflectionUtils.getConstructor;
-import static org.apache.maven.surefire.util.ReflectionUtils.instantiateObject;
-import static org.apache.maven.surefire.util.ReflectionUtils.newInstance;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.getConstructor;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.instantiateObject;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.newInstance;
 
 /**
  * @author Kristian Rosenvold
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/InPluginVMSurefireStarter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/InPluginVMSurefireStarter.java
index 1d85001..2e54e0d 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/InPluginVMSurefireStarter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/InPluginVMSurefireStarter.java
@@ -24,9 +24,9 @@
 import org.apache.maven.surefire.booter.ProviderConfiguration;
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.booter.SurefireExecutionException;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.DefaultScanResult;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
 
 import javax.annotation.Nonnull;
 import java.lang.reflect.InvocationTargetException;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java
index bb40574..d0cac4d 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java
@@ -24,10 +24,10 @@
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.surefire.log.PluginConsoleLogger;
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.internal.DumpFileUtils;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.internal.DumpFileUtils;
 
 import javax.annotation.Nonnull;
 import java.io.File;
@@ -39,13 +39,13 @@
 
 import static java.util.Collections.unmodifiableList;
 import static org.apache.maven.surefire.shared.lang3.SystemUtils.IS_OS_WINDOWS;
-import static org.apache.maven.surefire.booter.DumpErrorSingleton.DUMPSTREAM_FILE_EXT;
-import static org.apache.maven.surefire.booter.DumpErrorSingleton.DUMP_FILE_EXT;
-import static org.apache.maven.surefire.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
-import static org.apache.maven.surefire.cli.CommandLineOption.LOGGING_LEVEL_ERROR;
-import static org.apache.maven.surefire.cli.CommandLineOption.LOGGING_LEVEL_INFO;
-import static org.apache.maven.surefire.cli.CommandLineOption.LOGGING_LEVEL_WARN;
-import static org.apache.maven.surefire.cli.CommandLineOption.SHOW_ERRORS;
+import static org.apache.maven.surefire.api.booter.DumpErrorSingleton.DUMPSTREAM_FILE_EXT;
+import static org.apache.maven.surefire.api.booter.DumpErrorSingleton.DUMP_FILE_EXT;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.LOGGING_LEVEL_ERROR;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.LOGGING_LEVEL_INFO;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.LOGGING_LEVEL_WARN;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.SHOW_ERRORS;
 
 /**
  * Helper class for surefire plugins
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java
index 9a04326..c8aee3c 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/BooterSerializer.java
@@ -26,14 +26,14 @@
 import org.apache.maven.surefire.booter.ProcessCheckerType;
 import org.apache.maven.surefire.booter.ProviderConfiguration;
 import org.apache.maven.surefire.booter.StartupConfiguration;
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.util.RunOrder;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.util.RunOrder;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java
index af09d67..5336ac6 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/DefaultForkConfiguration.java
@@ -27,7 +27,7 @@
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.booter.SurefireBooterForkException;
 import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.util.internal.ImmutableMap;
+import org.apache.maven.surefire.api.util.internal.ImmutableMap;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
index 428f4e3..3a8cd4f 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
@@ -37,7 +37,7 @@
 import org.apache.maven.surefire.booter.PropertiesWrapper;
 import org.apache.maven.surefire.booter.ProviderConfiguration;
 import org.apache.maven.surefire.booter.ProviderFactory;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Shutdown;
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.booter.SurefireBooterForkException;
 import org.apache.maven.surefire.booter.SurefireExecutionException;
@@ -50,11 +50,11 @@
 import org.apache.maven.surefire.extensions.util.CommandlineStreams;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
 import org.apache.maven.surefire.extensions.util.LineConsumerThread;
-import org.apache.maven.surefire.providerapi.SurefireProvider;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.util.DefaultScanResult;
+import org.apache.maven.surefire.api.provider.SurefireProvider;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
 
 import javax.annotation.Nonnull;
 import java.io.Closeable;
@@ -93,16 +93,16 @@
 import static org.apache.maven.plugin.surefire.booterclient.ForkNumberBucket.returnNumber;
 import static org.apache.maven.plugin.surefire.booterclient.lazytestprovider.TestLessInputStream.TestLessInputStreamBuilder;
 import static org.apache.maven.surefire.booter.SystemPropertyManager.writePropertiesFile;
-import static org.apache.maven.surefire.cli.CommandLineOption.SHOW_ERRORS;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.SHOW_ERRORS;
 import static org.apache.maven.surefire.shared.utils.cli.ShutdownHookUtils.addShutDownHook;
 import static org.apache.maven.surefire.shared.utils.cli.ShutdownHookUtils.removeShutdownHook;
-import static org.apache.maven.surefire.suite.RunResult.SUCCESS;
-import static org.apache.maven.surefire.suite.RunResult.failure;
-import static org.apache.maven.surefire.suite.RunResult.timeout;
-import static org.apache.maven.surefire.util.internal.ConcurrencyUtils.countDownToZero;
-import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThread;
-import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.suite.RunResult.SUCCESS;
+import static org.apache.maven.surefire.api.suite.RunResult.failure;
+import static org.apache.maven.surefire.api.suite.RunResult.timeout;
+import static org.apache.maven.surefire.api.util.internal.ConcurrencyUtils.countDownToZero;
+import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThread;
+import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 
 /**
  * Starts the fork or runs in-process.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java
index 382bec6..f0c4011 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/JarManifestForkConfiguration.java
@@ -54,7 +54,7 @@
 import static org.apache.maven.plugin.surefire.SurefireHelper.escapeToPlatformPath;
 import static org.apache.maven.plugin.surefire.booterclient.JarManifestForkConfiguration.ClasspathElementUri.absolute;
 import static org.apache.maven.plugin.surefire.booterclient.JarManifestForkConfiguration.ClasspathElementUri.relative;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 
 /**
  * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java
index d659a6c..52729c3 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java
@@ -46,7 +46,7 @@
 import static java.io.File.pathSeparatorChar;
 import static org.apache.maven.plugin.surefire.SurefireHelper.escapeToPlatformPath;
 import static org.apache.maven.surefire.shared.utils.StringUtils.replace;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 
 /**
  * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Platform.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Platform.java
index 14196f8..97a3121 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Platform.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/Platform.java
@@ -26,7 +26,7 @@
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.RunnableFuture;
 
-import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThread;
+import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThread;
 
 /**
  * Loads platform specifics.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/DefaultCommandReader.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/DefaultCommandReader.java
index 9aa19c3..5d9dc4c 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/DefaultCommandReader.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/DefaultCommandReader.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
+import org.apache.maven.surefire.api.booter.Command;
 
 import java.io.IOException;
 
@@ -28,7 +28,7 @@
  *
  * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
  * @since 2.19
- * @see org.apache.maven.surefire.booter.Command
+ * @see Command
  */
 public abstract class DefaultCommandReader
         extends AbstractCommandReader
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/NotifiableTestStream.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/NotifiableTestStream.java
index add5a63..b23c532 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/NotifiableTestStream.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/NotifiableTestStream.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Shutdown;
 
 /**
  * Remote interface of forked JVM with command methods.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestLessInputStream.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestLessInputStream.java
index a1060a7..6c49a50 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestLessInputStream.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestLessInputStream.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.booter.Shutdown;
 
 import java.io.IOException;
 import java.util.Iterator;
@@ -33,10 +33,10 @@
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
-import static org.apache.maven.surefire.booter.Command.BYE_ACK;
-import static org.apache.maven.surefire.booter.Command.NOOP;
-import static org.apache.maven.surefire.booter.Command.SKIP_SINCE_NEXT_TEST;
-import static org.apache.maven.surefire.booter.Command.toShutdown;
+import static org.apache.maven.surefire.api.booter.Command.BYE_ACK;
+import static org.apache.maven.surefire.api.booter.Command.NOOP;
+import static org.apache.maven.surefire.api.booter.Command.SKIP_SINCE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.Command.toShutdown;
 
 /**
  * Dispatches commands without tests.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java
index 6f3a4de..a23c2ff 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.booter.Shutdown;
 
 import java.io.IOException;
 import java.util.Queue;
@@ -28,12 +28,12 @@
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import static org.apache.maven.surefire.booter.Command.BYE_ACK;
-import static org.apache.maven.surefire.booter.Command.NOOP;
-import static org.apache.maven.surefire.booter.Command.SKIP_SINCE_NEXT_TEST;
-import static org.apache.maven.surefire.booter.Command.TEST_SET_FINISHED;
-import static org.apache.maven.surefire.booter.Command.toRunClass;
-import static org.apache.maven.surefire.booter.Command.toShutdown;
+import static org.apache.maven.surefire.api.booter.Command.BYE_ACK;
+import static org.apache.maven.surefire.api.booter.Command.NOOP;
+import static org.apache.maven.surefire.api.booter.Command.SKIP_SINCE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.Command.TEST_SET_FINISHED;
+import static org.apache.maven.surefire.api.booter.Command.toRunClass;
+import static org.apache.maven.surefire.api.booter.Command.toShutdown;
 
 /**
  * An {@link java.io.InputStream} that, when read, provides test class names out of a queue.
@@ -185,4 +185,4 @@
             throw new IOException( e.getLocalizedMessage(), e );
         }
     }
-}
\ No newline at end of file
+}
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java
index d7a01b6..460e497 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/DeserializedStacktraceWriter.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.SafeThrowable;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
 /**
  * Represents a deserialize stacktracewriter that has been
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
index bc76dfe..a1e54b1 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
@@ -22,15 +22,15 @@
 import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.NotifiableTestStream;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.extensions.EventHandler;
-import org.apache.maven.surefire.booter.MasterProcessChannelEncoder;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import javax.annotation.Nonnull;
 import java.io.File;
@@ -44,8 +44,8 @@
 
 import static java.lang.System.currentTimeMillis;
 import static java.util.Collections.unmodifiableMap;
-import static org.apache.maven.surefire.booter.Shutdown.KILL;
-import static org.apache.maven.surefire.report.CategorizedReportEntry.reportEntry;
+import static org.apache.maven.surefire.api.booter.Shutdown.KILL;
+import static org.apache.maven.surefire.api.report.CategorizedReportEntry.reportEntry;
 
 // todo move to the same package with ForkStarter
 
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessEventNotifier.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessEventNotifier.java
index 58f9344..1c47afb 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessEventNotifier.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessEventNotifier.java
@@ -19,39 +19,39 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ForkedProcessEventType;
-import org.apache.maven.surefire.eventapi.AbstractConsoleEvent;
-import org.apache.maven.surefire.eventapi.AbstractStandardStreamEvent;
-import org.apache.maven.surefire.eventapi.AbstractTestControlEvent;
-import org.apache.maven.surefire.eventapi.ConsoleErrorEvent;
-import org.apache.maven.surefire.eventapi.Event;
-import org.apache.maven.surefire.eventapi.JvmExitErrorEvent;
-import org.apache.maven.surefire.eventapi.SystemPropertyEvent;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.booter.ForkedProcessEventType;
+import org.apache.maven.surefire.api.event.AbstractConsoleEvent;
+import org.apache.maven.surefire.api.event.AbstractStandardStreamEvent;
+import org.apache.maven.surefire.api.event.AbstractTestControlEvent;
+import org.apache.maven.surefire.api.event.ConsoleErrorEvent;
+import org.apache.maven.surefire.api.event.Event;
+import org.apache.maven.surefire.api.event.JvmExitErrorEvent;
+import org.apache.maven.surefire.api.event.SystemPropertyEvent;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
 import static java.util.Objects.requireNonNull;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_BYE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_DEBUG;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_INFO;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_WARNING;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_NEXT_TEST;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDERR;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDERR_NEW_LINE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDOUT;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDOUT_NEW_LINE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STOP_ON_NEXT_TEST;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_COMPLETED;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_STARTING;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_ASSUMPTIONFAILURE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_ERROR;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_FAILED;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_SKIPPED;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_STARTING;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_SUCCEEDED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_BYE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_DEBUG;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_INFO;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_WARNING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDERR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDERR_NEW_LINE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDOUT;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDOUT_NEW_LINE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STOP_ON_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_COMPLETED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_STARTING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_ASSUMPTIONFAILURE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_ERROR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_FAILED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_SKIPPED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_STARTING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_SUCCEEDED;
 
 /**
  * magic number : run mode : opcode [: opcode specific data]*
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessExitErrorListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessExitErrorListener.java
index a8b4b0b..b88a7e1 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessExitErrorListener.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessExitErrorListener.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
 /**
  * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessPropertyEventListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessPropertyEventListener.java
index 9ef3e09..98cf092 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessPropertyEventListener.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessPropertyEventListener.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.RunMode;
 
 /**
  * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessReportEventListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessReportEventListener.java
index 06054df..1eec0ba 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessReportEventListener.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessReportEventListener.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
 /**
  * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessStackTraceEventListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessStackTraceEventListener.java
index 81bf53f..afedef5 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessStackTraceEventListener.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessStackTraceEventListener.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
 import javax.annotation.Nonnull;
 
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessStandardOutErrEventListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessStandardOutErrEventListener.java
index b60d6ed..86b7bb9 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessStandardOutErrEventListener.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedProcessStandardOutErrEventListener.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.RunMode;
 
 /**
  * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/InPluginProcessDumpSingleton.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/InPluginProcessDumpSingleton.java
index d7bbe9f..372c046 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/InPluginProcessDumpSingleton.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/InPluginProcessDumpSingleton.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.util.internal.DumpFileUtils;
+import org.apache.maven.surefire.api.util.internal.DumpFileUtils;
 
 import java.io.File;
 
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.java
index 9c72a04..7136834 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ThreadedStreamConsumer.java
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.shared.utils.cli.StreamConsumer;
 import org.apache.maven.surefire.extensions.EventHandler;
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 
 import javax.annotation.Nonnull;
 import java.io.Closeable;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/EventConsumerThread.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/EventConsumerThread.java
index a10a2f0..1d5686b 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/EventConsumerThread.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/EventConsumerThread.java
@@ -21,36 +21,36 @@
 
 import org.apache.maven.plugin.surefire.booterclient.output.DeserializedStacktraceWriter;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.booter.ForkedProcessEventType;
-import org.apache.maven.surefire.eventapi.ConsoleDebugEvent;
-import org.apache.maven.surefire.eventapi.ConsoleErrorEvent;
-import org.apache.maven.surefire.eventapi.ConsoleInfoEvent;
-import org.apache.maven.surefire.eventapi.ConsoleWarningEvent;
-import org.apache.maven.surefire.eventapi.ControlByeEvent;
-import org.apache.maven.surefire.eventapi.ControlNextTestEvent;
-import org.apache.maven.surefire.eventapi.ControlStopOnNextTestEvent;
-import org.apache.maven.surefire.eventapi.Event;
-import org.apache.maven.surefire.eventapi.JvmExitErrorEvent;
-import org.apache.maven.surefire.eventapi.StandardStreamErrEvent;
-import org.apache.maven.surefire.eventapi.StandardStreamErrWithNewLineEvent;
-import org.apache.maven.surefire.eventapi.StandardStreamOutEvent;
-import org.apache.maven.surefire.eventapi.StandardStreamOutWithNewLineEvent;
-import org.apache.maven.surefire.eventapi.SystemPropertyEvent;
-import org.apache.maven.surefire.eventapi.TestAssumptionFailureEvent;
-import org.apache.maven.surefire.eventapi.TestErrorEvent;
-import org.apache.maven.surefire.eventapi.TestFailedEvent;
-import org.apache.maven.surefire.eventapi.TestSkippedEvent;
-import org.apache.maven.surefire.eventapi.TestStartingEvent;
-import org.apache.maven.surefire.eventapi.TestSucceededEvent;
-import org.apache.maven.surefire.eventapi.TestsetCompletedEvent;
-import org.apache.maven.surefire.eventapi.TestsetStartingEvent;
+import org.apache.maven.surefire.api.booter.ForkedProcessEventType;
+import org.apache.maven.surefire.api.event.ConsoleDebugEvent;
+import org.apache.maven.surefire.api.event.ConsoleErrorEvent;
+import org.apache.maven.surefire.api.event.ConsoleInfoEvent;
+import org.apache.maven.surefire.api.event.ConsoleWarningEvent;
+import org.apache.maven.surefire.api.event.ControlByeEvent;
+import org.apache.maven.surefire.api.event.ControlNextTestEvent;
+import org.apache.maven.surefire.api.event.ControlStopOnNextTestEvent;
+import org.apache.maven.surefire.api.event.Event;
+import org.apache.maven.surefire.api.event.JvmExitErrorEvent;
+import org.apache.maven.surefire.api.event.StandardStreamErrEvent;
+import org.apache.maven.surefire.api.event.StandardStreamErrWithNewLineEvent;
+import org.apache.maven.surefire.api.event.StandardStreamOutEvent;
+import org.apache.maven.surefire.api.event.StandardStreamOutWithNewLineEvent;
+import org.apache.maven.surefire.api.event.SystemPropertyEvent;
+import org.apache.maven.surefire.api.event.TestAssumptionFailureEvent;
+import org.apache.maven.surefire.api.event.TestErrorEvent;
+import org.apache.maven.surefire.api.event.TestFailedEvent;
+import org.apache.maven.surefire.api.event.TestSkippedEvent;
+import org.apache.maven.surefire.api.event.TestStartingEvent;
+import org.apache.maven.surefire.api.event.TestSucceededEvent;
+import org.apache.maven.surefire.api.event.TestsetCompletedEvent;
+import org.apache.maven.surefire.api.event.TestsetStartingEvent;
 import org.apache.maven.surefire.extensions.CloseableDaemonThread;
 import org.apache.maven.surefire.extensions.EventHandler;
 import org.apache.maven.surefire.extensions.ForkNodeArguments;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.apache.maven.surefire.shared.codec.binary.Base64;
 
 import javax.annotation.Nonnull;
@@ -65,9 +65,9 @@
 import java.util.List;
 
 import static java.nio.charset.StandardCharsets.US_ASCII;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.MAGIC_NUMBER;
-import static org.apache.maven.surefire.report.CategorizedReportEntry.reportEntry;
-import static org.apache.maven.surefire.report.RunMode.MODES;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.MAGIC_NUMBER;
+import static org.apache.maven.surefire.api.report.CategorizedReportEntry.reportEntry;
+import static org.apache.maven.surefire.api.report.RunMode.MODES;
 
 /**
  *
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/LegacyForkChannel.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/LegacyForkChannel.java
index 2edb824..2400f94 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/LegacyForkChannel.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/LegacyForkChannel.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.extensions.CloseableDaemonThread;
 import org.apache.maven.surefire.extensions.CommandReader;
 import org.apache.maven.surefire.extensions.EventHandler;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/StreamFeeder.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/StreamFeeder.java
index 604ca33..3269967 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/StreamFeeder.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/StreamFeeder.java
@@ -20,11 +20,11 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.booter.MasterProcessCommand;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.booter.MasterProcessCommand;
 import org.apache.maven.surefire.extensions.CloseableDaemonThread;
 import org.apache.maven.surefire.extensions.CommandReader;
-import org.apache.maven.surefire.util.internal.ImmutableMap;
+import org.apache.maven.surefire.api.util.internal.ImmutableMap;
 
 import javax.annotation.Nonnull;
 import java.io.IOException;
@@ -36,13 +36,13 @@
 import java.util.Map;
 
 import static java.nio.charset.StandardCharsets.US_ASCII;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.BYE_ACK;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.MAGIC_NUMBER;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.NOOP;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.RUN_CLASS;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SHUTDOWN;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SKIP_SINCE_NEXT_TEST;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.TEST_SET_FINISHED;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.BYE_ACK;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.MAGIC_NUMBER;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.NOOP;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.RUN_CLASS;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SHUTDOWN;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SKIP_SINCE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.TEST_SET_FINISHED;
 
 /**
  * Commands which are sent from plugin to the forked jvm.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireConsoleOutputReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireConsoleOutputReporter.java
index e4ac7a6..d339f27 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireConsoleOutputReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireConsoleOutputReporter.java
@@ -23,7 +23,7 @@
 import org.apache.maven.plugin.surefire.report.DirectConsoleOutput;
 import org.apache.maven.surefire.extensions.ConsoleOutputReportEventListener;
 import org.apache.maven.surefire.extensions.ConsoleOutputReporter;
-import org.apache.maven.surefire.util.ReflectionUtils;
+import org.apache.maven.surefire.api.util.ReflectionUtils;
 
 import java.io.File;
 import java.io.PrintStream;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java
index 0cf7115..3ca2dad 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.surefire.booterclient.output.NativeStdOutStreamConsumer;
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.extensions.CloseableDaemonThread;
 import org.apache.maven.surefire.extensions.CommandReader;
 import org.apache.maven.surefire.extensions.EventHandler;
@@ -49,11 +49,11 @@
 import static java.net.StandardSocketOptions.TCP_NODELAY;
 import static java.nio.channels.AsynchronousChannelGroup.withThreadPool;
 import static java.nio.channels.AsynchronousServerSocketChannel.open;
-import static org.apache.maven.surefire.util.internal.Channels.newBufferedChannel;
-import static org.apache.maven.surefire.util.internal.Channels.newChannel;
-import static org.apache.maven.surefire.util.internal.Channels.newInputStream;
-import static org.apache.maven.surefire.util.internal.Channels.newOutputStream;
-import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
+import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newInputStream;
+import static org.apache.maven.surefire.api.util.internal.Channels.newOutputStream;
+import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
 
 /**
  * The TCP/IP server accepting only one client connection. The forked JVM connects to the server using the
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessReporter.java
index e907bfd..f8c5bd6 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessReporter.java
@@ -24,7 +24,7 @@
 import org.apache.maven.plugin.surefire.report.WrappedReportEntry;
 import org.apache.maven.surefire.extensions.StatelessReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessReporter;
-import org.apache.maven.surefire.util.ReflectionUtils;
+import org.apache.maven.surefire.api.util.ReflectionUtils;
 
 /**
  * Default implementation for extension of {@link StatelessXmlReporter} in plugin.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessTestsetInfoReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessTestsetInfoReporter.java
index 73a099c..2fb5bf7 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessTestsetInfoReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessTestsetInfoReporter.java
@@ -27,7 +27,7 @@
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoReporter;
-import org.apache.maven.surefire.util.ReflectionUtils;
+import org.apache.maven.surefire.api.util.ReflectionUtils;
 
 import java.io.File;
 import java.nio.charset.Charset;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ConsoleOutputFileReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ConsoleOutputFileReporter.java
index 3bc3f2c..c5b8f22 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ConsoleOutputFileReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ConsoleOutputFileReporter.java
@@ -20,8 +20,8 @@
  */
 
 import org.apache.maven.plugin.surefire.booterclient.output.InPluginProcessDumpSingleton;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
@@ -33,7 +33,7 @@
 import java.util.concurrent.locks.ReentrantLock;
 
 import static org.apache.maven.plugin.surefire.report.FileReporter.getReportFile;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 
 /**
  * Surefire output consumer proxy that writes test output to a {@link java.io.File} for each test suite.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ConsoleReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ConsoleReporter.java
index e51c9db..6541b05 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ConsoleReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ConsoleReporter.java
@@ -25,7 +25,7 @@
 import org.apache.maven.surefire.shared.utils.logging.MessageBuilder;
 import org.apache.maven.plugin.surefire.log.api.Level;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import static org.apache.maven.plugin.surefire.log.api.Level.resolveLevel;
 import static org.apache.maven.plugin.surefire.report.TestSetStats.concatenateWithTestGroup;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
index 7007695..7b0c18d 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
@@ -28,11 +28,11 @@
 import org.apache.maven.surefire.extensions.StatelessReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.report.RunStatistics;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -55,7 +55,7 @@
 import static org.apache.maven.plugin.surefire.report.ReportEntryType.FAILURE;
 import static org.apache.maven.plugin.surefire.report.ReportEntryType.SUCCESS;
 import static org.apache.maven.surefire.shared.utils.logging.MessageUtils.buffer;
-import static org.apache.maven.surefire.util.internal.ObjectUtils.useNonNull;
+import static org.apache.maven.surefire.api.util.internal.ObjectUtils.useNonNull;
 
 /**
  * Provides reporting modules on the plugin side.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DirectConsoleOutput.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DirectConsoleOutput.java
index 7ef2d82..3232e16 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DirectConsoleOutput.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DirectConsoleOutput.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.io.PrintStream;
 
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporter.java
index 7444dd5..b3410f7 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporter.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener;
-import org.apache.maven.surefire.report.ReporterException;
+import org.apache.maven.surefire.api.report.ReporterException;
 
 import java.io.BufferedWriter;
 import java.io.File;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullConsoleOutputReceiver.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullConsoleOutputReceiver.java
index a826b67..35d0b89 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullConsoleOutputReceiver.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullConsoleOutputReceiver.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 /**
  * TestcycleConsoleOutputReceiver doing nothing rather than using null.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullConsoleReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullConsoleReporter.java
index f33fca1..2c5ba59 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullConsoleReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullConsoleReporter.java
@@ -22,7 +22,7 @@
 import java.util.List;
 
 import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 /**
  * ConsoleReporter doing nothing rather than using null.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullStatisticsReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullStatisticsReporter.java
index 3d58096..ea11d0d 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullStatisticsReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullStatisticsReporter.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.surefire.runorder.StatisticsReporter;
-import org.apache.maven.surefire.report.ReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
 
 /**
  * StatisticsReporter doing nothing rather than using null.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java
index da1f708..e1f56c2 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java
@@ -23,8 +23,8 @@
 import org.apache.maven.surefire.shared.utils.xml.PrettyPrintXMLWriter;
 import org.apache.maven.surefire.shared.utils.xml.XMLWriter;
 import org.apache.maven.surefire.extensions.StatelessReportEventListener;
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.ReporterException;
+import org.apache.maven.surefire.api.report.SafeThrowable;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestMethodStats.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestMethodStats.java
index e202a48..96bca26 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestMethodStats.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestMethodStats.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
 /**
  *
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java
index 2adbac4..15b7ed8 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java
@@ -31,17 +31,17 @@
 import org.apache.maven.surefire.extensions.StatelessReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import static org.apache.maven.plugin.surefire.report.ReportEntryType.ERROR;
 import static org.apache.maven.plugin.surefire.report.ReportEntryType.FAILURE;
 import static org.apache.maven.plugin.surefire.report.ReportEntryType.SKIPPED;
 import static org.apache.maven.plugin.surefire.report.ReportEntryType.SUCCESS;
-import static org.apache.maven.surefire.report.RunMode.NORMAL_RUN;
+import static org.apache.maven.surefire.api.report.RunMode.NORMAL_RUN;
 import static java.util.Objects.requireNonNull;
 
 /**
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetStats.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetStats.java
index b34a25f..869f58a 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetStats.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetStats.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.surefire.shared.utils.logging.MessageBuilder;
-import org.apache.maven.surefire.report.ReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -29,7 +29,7 @@
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 import static org.apache.maven.surefire.shared.utils.logging.MessageUtils.buffer;
-import static org.apache.maven.surefire.report.CategorizedReportEntry.GROUP_PREFIX;
+import static org.apache.maven.surefire.api.report.CategorizedReportEntry.GROUP_PREFIX;
 
 /**
  * Maintains per-thread test result state. Not thread safe.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestcycleConsoleOutputReceiver.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestcycleConsoleOutputReceiver.java
index cdd4b3a..3d32073 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestcycleConsoleOutputReceiver.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestcycleConsoleOutputReceiver.java
@@ -20,8 +20,8 @@
  */
 
 import org.apache.maven.surefire.extensions.ConsoleOutputReportEventListener;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 /**
  * @author Kristian Rosenvold
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/Utf8RecodingDeferredFileOutputStream.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/Utf8RecodingDeferredFileOutputStream.java
index 948f131..a1a1f88 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/Utf8RecodingDeferredFileOutputStream.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/Utf8RecodingDeferredFileOutputStream.java
@@ -25,7 +25,7 @@
 import java.io.OutputStream;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 
 /**
  * A deferred file output stream decorator that recodes the bytes written into the stream from the VM default encoding
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java
index 3fe274a..75b1f66 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java
@@ -19,16 +19,16 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.util.Collections;
 import java.util.Map;
 
 import static java.util.Collections.unmodifiableMap;
 import static org.apache.maven.plugin.surefire.report.ReporterUtils.formatElapsedTime;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank;
 
 /**
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/runorder/StatisticsReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/runorder/StatisticsReporter.java
index fb5450b..1b7006e 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/runorder/StatisticsReporter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/runorder/StatisticsReporter.java
@@ -22,9 +22,10 @@
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.maven.surefire.report.ReportEntry;
+import org.apache.maven.surefire.api.runorder.RunEntryStatisticsMap;
+import org.apache.maven.surefire.api.report.ReportEntry;
 
-import static org.apache.maven.plugin.surefire.runorder.RunEntryStatisticsMap.fromFile;
+import static org.apache.maven.surefire.api.runorder.RunEntryStatisticsMap.fromFile;
 
 /**
  * @author Kristian Rosenvold
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/DependencyScanner.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/DependencyScanner.java
index 7ddcfbe..15aa0b2 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/DependencyScanner.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/DependencyScanner.java
@@ -22,9 +22,9 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
-import org.apache.maven.surefire.testset.TestFilter;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.util.DefaultScanResult;
+import org.apache.maven.surefire.api.testset.TestFilter;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/DirectoryScanner.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/DirectoryScanner.java
index b7cde4b..d96675b 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/DirectoryScanner.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/DirectoryScanner.java
@@ -23,8 +23,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.util.DefaultScanResult;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
 
 /**
  * Scans directories looking for tests.
@@ -51,4 +51,4 @@
         scanner.scanTo( result, filter );
         return new DefaultScanResult( result );
     }
-}
\ No newline at end of file
+}
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/FileScanner.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/FileScanner.java
index faabcac..69a6945 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/FileScanner.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/util/FileScanner.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestFilter;
+import org.apache.maven.surefire.api.testset.TestFilter;
 
 import java.io.File;
 import java.util.Collection;
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/surefire/providerapi/ServiceLoader.java b/maven-surefire-common/src/main/java/org/apache/maven/surefire/providerapi/ServiceLoader.java
index 9350228..89875a9 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/surefire/providerapi/ServiceLoader.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/surefire/providerapi/ServiceLoader.java
@@ -32,7 +32,7 @@
 import static java.lang.Character.isJavaIdentifierPart;
 import static java.lang.Character.isJavaIdentifierStart;
 import static java.util.Collections.emptySet;
-import static org.apache.maven.surefire.util.ReflectionUtils.getConstructor;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.getConstructor;
 
 /**
  * SPI loader for Surefire/Failsafe should use {@link Thread#getContextClassLoader() current ClassLoader}.
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/surefire/report/RunStatistics.java b/maven-surefire-common/src/main/java/org/apache/maven/surefire/report/RunStatistics.java
index 7c911ec..8ae941a 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/surefire/report/RunStatistics.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/surefire/report/RunStatistics.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 /**
  * @author Kristian Rosenvold
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
index e1a3b27..d02c7fd 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
@@ -29,8 +29,8 @@
 import org.apache.maven.surefire.booter.ModularClasspathConfiguration;
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.util.DefaultScanResult;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
 import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor;
 import org.codehaus.plexus.languages.java.jpms.LocationManager;
 import org.codehaus.plexus.languages.java.jpms.ResolvePathResult;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
index 8647c0f..0440816 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
@@ -47,8 +47,8 @@
 import org.apache.maven.surefire.booter.ModularClasspathConfiguration;
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.util.DefaultScanResult;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
 import org.apache.maven.toolchain.Toolchain;
 import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor;
 import org.codehaus.plexus.languages.java.jpms.LocationManager;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/CommonReflectorTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/CommonReflectorTest.java
index 4f954d4..b1f3f79 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/CommonReflectorTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/CommonReflectorTest.java
@@ -34,8 +34,8 @@
 import java.io.File;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.maven.surefire.util.ReflectionUtils.getMethod;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.getMethod;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
@@ -146,4 +146,4 @@
         assertThat( argumentMsg.getAllValues() ).hasSize( 1 );
         assertThat( argumentMsg.getAllValues().get( 0 ) ).isEqualTo( "msg" );
     }
-}
\ No newline at end of file
+}
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
index dda40b3..afcb642 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
@@ -29,8 +29,8 @@
 import org.apache.maven.plugin.surefire.extensions.SurefireStatelessReporter;
 import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
 import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.util.DefaultScanResult;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
 import org.apache.maven.toolchain.Toolchain;
 import org.junit.Test;
 
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireHelperTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireHelperTest.java
index 4e1ff70..19fe288 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireHelperTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireHelperTest.java
@@ -21,7 +21,7 @@
 
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.surefire.AbstractSurefireMojoTest.Mojo;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 import org.junit.Test;
 
 import java.io.File;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.java
index 10563a8..ac3eba5 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerProviderConfigurationTest.java
@@ -27,18 +27,18 @@
 import org.apache.maven.surefire.booter.ClasspathConfiguration;
 import org.apache.maven.surefire.booter.PropertiesWrapper;
 import org.apache.maven.surefire.booter.ProviderConfiguration;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Shutdown;
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.booter.TypeEncodedValue;
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.ResolvedTest;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.util.RunOrder;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.ResolvedTest;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.util.RunOrder;
 import org.junit.After;
 import org.junit.Before;
 
@@ -52,9 +52,9 @@
 import java.util.List;
 
 import static org.apache.maven.surefire.booter.ProcessCheckerType.ALL;
-import static org.apache.maven.surefire.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
-import static org.apache.maven.surefire.cli.CommandLineOption.REACTOR_FAIL_FAST;
-import static org.apache.maven.surefire.cli.CommandLineOption.SHOW_ERRORS;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.REACTOR_FAIL_FAST;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.SHOW_ERRORS;
 
 /**
  * Performs roundtrip testing of serialization/deserialization of the ProviderConfiguration
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java
index 63f6162..5a2d6cf 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/BooterDeserializerStartupConfigurationTest.java
@@ -27,17 +27,17 @@
 import org.apache.maven.surefire.booter.ClasspathConfiguration;
 import org.apache.maven.surefire.booter.PropertiesWrapper;
 import org.apache.maven.surefire.booter.ProviderConfiguration;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Shutdown;
 import org.apache.maven.surefire.booter.StartupConfiguration;
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
 import org.apache.maven.surefire.shared.io.FileUtils;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.util.RunOrder;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.util.RunOrder;
 import org.junit.After;
 import org.junit.Before;
 
@@ -50,9 +50,9 @@
 import java.util.List;
 
 import static org.apache.maven.surefire.booter.ProcessCheckerType.ALL;
-import static org.apache.maven.surefire.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
-import static org.apache.maven.surefire.cli.CommandLineOption.REACTOR_FAIL_FAST;
-import static org.apache.maven.surefire.cli.CommandLineOption.SHOW_ERRORS;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.REACTOR_FAIL_FAST;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.SHOW_ERRORS;
 
 /**
  * Performs roundtrip testing of serialization/deserialization of The StartupConfiguration
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkStarterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkStarterTest.java
index 55f789f..b1e1c91 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkStarterTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkStarterTest.java
@@ -35,11 +35,11 @@
 import org.apache.maven.surefire.booter.Classpath;
 import org.apache.maven.surefire.booter.PropertiesWrapper;
 import org.apache.maven.surefire.booter.ProviderConfiguration;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Shutdown;
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.booter.SurefireBooterForkException;
 import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
 import org.apache.maven.surefire.shared.compress.archivers.zip.Zip64Mode;
 import org.apache.maven.surefire.shared.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.maven.surefire.shared.compress.archivers.zip.ZipArchiveOutputStream;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java
index 4c1ac37..8d3a3e5 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java
@@ -24,22 +24,22 @@
 import org.apache.maven.plugin.surefire.booterclient.output.ForkClient;
 import org.apache.maven.plugin.surefire.extensions.EventConsumerThread;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.booter.ForkingRunListener;
+import org.apache.maven.surefire.api.booter.ForkingRunListener;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder;
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.extensions.EventHandler;
 import org.apache.maven.surefire.extensions.ForkNodeArguments;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
-import org.apache.maven.surefire.report.CategorizedReportEntry;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.LegacyPojoStackTraceWriter;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.report.TestSetReportEntry;
-import org.apache.maven.surefire.util.internal.WritableBufferedByteChannel;
+import org.apache.maven.surefire.api.report.CategorizedReportEntry;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.LegacyPojoStackTraceWriter;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.ReporterException;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel;
 
 import javax.annotation.Nonnull;
 import java.io.ByteArrayInputStream;
@@ -55,8 +55,8 @@
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
 
-import static org.apache.maven.surefire.util.internal.Channels.newBufferedChannel;
-import static org.apache.maven.surefire.util.internal.Channels.newChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newChannel;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockNotifiableTestStream.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockNotifiableTestStream.java
index c44b82d..0647cc0 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockNotifiableTestStream.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockNotifiableTestStream.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.NotifiableTestStream;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Shutdown;
 
 /**
  * Mock of {@link NotifiableTestStream} for testing purposes.
@@ -55,4 +55,4 @@
     public void acknowledgeByeEventReceived()
     {
     }
-}
\ No newline at end of file
+}
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java
index fdd9110..aab5731 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java
@@ -20,11 +20,11 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.TestSetReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
index 3770fa0..ace0e5d 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
@@ -25,7 +25,7 @@
 import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
 import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.api.report.RunListener;
 
 import java.io.File;
 
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestLessInputStreamBuilderTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestLessInputStreamBuilderTest.java
index 7c89492..3c68778 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestLessInputStreamBuilderTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestLessInputStreamBuilderTest.java
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.booter.MasterProcessCommand;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.booter.MasterProcessCommand;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelDecoder;
-import org.apache.maven.surefire.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -34,10 +34,10 @@
 
 import static java.nio.channels.Channels.newChannel;
 import static org.apache.maven.plugin.surefire.booterclient.lazytestprovider.TestLessInputStream.TestLessInputStreamBuilder;
-import static org.apache.maven.surefire.booter.Command.SKIP_SINCE_NEXT_TEST;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SHUTDOWN;
-import static org.apache.maven.surefire.booter.Shutdown.EXIT;
-import static org.apache.maven.surefire.booter.Shutdown.KILL;
+import static org.apache.maven.surefire.api.booter.Command.SKIP_SINCE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SHUTDOWN;
+import static org.apache.maven.surefire.api.booter.Shutdown.EXIT;
+import static org.apache.maven.surefire.api.booter.Shutdown.KILL;
 import static org.apache.maven.plugin.surefire.extensions.StreamFeeder.encode;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStreamTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStreamTest.java
index 3e2023e..e0acb9f 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStreamTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStreamTest.java
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
+import org.apache.maven.surefire.api.booter.Command;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelDecoder;
 import org.apache.maven.plugin.surefire.extensions.StreamFeeder;
-import org.apache.maven.surefire.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -37,8 +37,8 @@
 
 import static java.nio.channels.Channels.newChannel;
 import static java.nio.charset.StandardCharsets.US_ASCII;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.BYE_ACK;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.NOOP;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.BYE_ACK;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.NOOP;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.notNullValue;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java
index c286cc3..548c3e6 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java
@@ -24,36 +24,36 @@
 import org.apache.maven.plugin.surefire.extensions.EventConsumerThread;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
-import org.apache.maven.surefire.booter.Shutdown;
-import org.apache.maven.surefire.eventapi.ConsoleDebugEvent;
-import org.apache.maven.surefire.eventapi.ConsoleErrorEvent;
-import org.apache.maven.surefire.eventapi.ConsoleInfoEvent;
-import org.apache.maven.surefire.eventapi.ConsoleWarningEvent;
-import org.apache.maven.surefire.eventapi.ControlByeEvent;
-import org.apache.maven.surefire.eventapi.ControlNextTestEvent;
-import org.apache.maven.surefire.eventapi.ControlStopOnNextTestEvent;
-import org.apache.maven.surefire.eventapi.Event;
-import org.apache.maven.surefire.eventapi.StandardStreamErrEvent;
-import org.apache.maven.surefire.eventapi.StandardStreamErrWithNewLineEvent;
-import org.apache.maven.surefire.eventapi.StandardStreamOutEvent;
-import org.apache.maven.surefire.eventapi.StandardStreamOutWithNewLineEvent;
-import org.apache.maven.surefire.eventapi.SystemPropertyEvent;
-import org.apache.maven.surefire.eventapi.TestAssumptionFailureEvent;
-import org.apache.maven.surefire.eventapi.TestErrorEvent;
-import org.apache.maven.surefire.eventapi.TestFailedEvent;
-import org.apache.maven.surefire.eventapi.TestSkippedEvent;
-import org.apache.maven.surefire.eventapi.TestStartingEvent;
-import org.apache.maven.surefire.eventapi.TestSucceededEvent;
-import org.apache.maven.surefire.eventapi.TestsetCompletedEvent;
-import org.apache.maven.surefire.eventapi.TestsetStartingEvent;
+import org.apache.maven.surefire.api.booter.Shutdown;
+import org.apache.maven.surefire.api.event.ConsoleDebugEvent;
+import org.apache.maven.surefire.api.event.ConsoleErrorEvent;
+import org.apache.maven.surefire.api.event.ConsoleInfoEvent;
+import org.apache.maven.surefire.api.event.ConsoleWarningEvent;
+import org.apache.maven.surefire.api.event.ControlByeEvent;
+import org.apache.maven.surefire.api.event.ControlNextTestEvent;
+import org.apache.maven.surefire.api.event.ControlStopOnNextTestEvent;
+import org.apache.maven.surefire.api.event.Event;
+import org.apache.maven.surefire.api.event.StandardStreamErrEvent;
+import org.apache.maven.surefire.api.event.StandardStreamErrWithNewLineEvent;
+import org.apache.maven.surefire.api.event.StandardStreamOutEvent;
+import org.apache.maven.surefire.api.event.StandardStreamOutWithNewLineEvent;
+import org.apache.maven.surefire.api.event.SystemPropertyEvent;
+import org.apache.maven.surefire.api.event.TestAssumptionFailureEvent;
+import org.apache.maven.surefire.api.event.TestErrorEvent;
+import org.apache.maven.surefire.api.event.TestFailedEvent;
+import org.apache.maven.surefire.api.event.TestSkippedEvent;
+import org.apache.maven.surefire.api.event.TestStartingEvent;
+import org.apache.maven.surefire.api.event.TestSucceededEvent;
+import org.apache.maven.surefire.api.event.TestsetCompletedEvent;
+import org.apache.maven.surefire.api.event.TestsetStartingEvent;
 import org.apache.maven.surefire.extensions.EventHandler;
 import org.apache.maven.surefire.extensions.ForkNodeArguments;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.SafeThrowable;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 
@@ -83,9 +83,9 @@
 import static org.apache.maven.plugin.surefire.booterclient.MockReporter.TEST_SKIPPED;
 import static org.apache.maven.plugin.surefire.booterclient.MockReporter.TEST_STARTING;
 import static org.apache.maven.plugin.surefire.booterclient.MockReporter.TEST_SUCCEEDED;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_BYE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_ERROR;
-import static org.apache.maven.surefire.report.RunMode.NORMAL_RUN;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_BYE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_ERROR;
+import static org.apache.maven.surefire.api.report.RunMode.NORMAL_RUN;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.fest.assertions.MapAssert.entry;
 import static org.mockito.ArgumentMatchers.anyString;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/E2ETest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/E2ETest.java
index 5f63b9b..30517f3 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/E2ETest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/E2ETest.java
@@ -20,13 +20,13 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
 import org.apache.maven.surefire.booter.spi.SurefireMasterProcessChannelProcessorFactory;
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.extensions.EventHandler;
 import org.apache.maven.surefire.extensions.ForkNodeArguments;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.junit.Test;
 
 import javax.annotation.Nonnull;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/ForkedProcessEventNotifierTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/ForkedProcessEventNotifierTest.java
index 4078de0..9d38b65 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/ForkedProcessEventNotifierTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/ForkedProcessEventNotifierTest.java
@@ -31,16 +31,16 @@
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLoggerUtils;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder;
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.extensions.EventHandler;
 import org.apache.maven.surefire.extensions.ForkNodeArguments;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.SafeThrowable;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.util.internal.ObjectUtils;
-import org.apache.maven.surefire.util.internal.WritableBufferedByteChannel;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.util.internal.ObjectUtils;
+import org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.runners.Enclosed;
@@ -75,10 +75,10 @@
 import static java.lang.String.format;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.Arrays.copyOfRange;
-import static org.apache.maven.surefire.report.RunMode.NORMAL_RUN;
+import static org.apache.maven.surefire.api.report.RunMode.NORMAL_RUN;
 import static org.apache.maven.surefire.shared.codec.binary.Base64.encodeBase64String;
-import static org.apache.maven.surefire.util.internal.Channels.newBufferedChannel;
-import static org.apache.maven.surefire.util.internal.Channels.newChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newChannel;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.fest.assertions.Index.atIndex;
 import static org.junit.Assert.assertTrue;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/StreamFeederTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/StreamFeederTest.java
index 7da6745..06cef43 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/StreamFeederTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/StreamFeederTest.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.booter.Command;
+import org.apache.maven.surefire.api.booter.Command;
 import org.apache.maven.surefire.extensions.CommandReader;
 import org.junit.After;
 import org.junit.Before;
@@ -35,9 +35,9 @@
 import java.util.Iterator;
 
 import static java.util.Arrays.asList;
-import static org.apache.maven.surefire.booter.Command.TEST_SET_FINISHED;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.NOOP;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.RUN_CLASS;
+import static org.apache.maven.surefire.api.booter.Command.TEST_SET_FINISHED;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.NOOP;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.RUN_CLASS;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java
index abf25ee..14e4d82 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java
@@ -35,9 +35,9 @@
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
 import org.apache.maven.surefire.shared.utils.logging.MessageUtils;
 import org.apache.maven.surefire.report.RunStatistics;
-import org.apache.maven.surefire.report.SafeThrowable;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.Arrays.asList;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
index e6eec81..077a1a8 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
@@ -24,9 +24,9 @@
 import org.apache.maven.surefire.shared.utils.StringUtils;
 import org.apache.maven.surefire.shared.utils.xml.Xpp3Dom;
 import org.apache.maven.surefire.shared.utils.xml.Xpp3DomBuilder;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -38,7 +38,7 @@
 import java.util.concurrent.atomic.AtomicInteger;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.maven.surefire.util.internal.ObjectUtils.systemProps;
+import static org.apache.maven.surefire.api.util.internal.ObjectUtils.systemProps;
 
 /**
  *
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/TestSetStatsTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/TestSetStatsTest.java
index 63e1ac3..ebd6b32 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/TestSetStatsTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/TestSetStatsTest.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java
index 36d1696..208896e 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
 
 import junit.framework.TestCase;
 
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java
index 0997f0a..5f6840a 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java
@@ -29,15 +29,17 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.runorder.RunEntryStatistics;
+import org.apache.maven.surefire.api.runorder.RunEntryStatisticsMap;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.maven.surefire.shared.io.IOUtils.readLines;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.powermock.reflect.Whitebox.getInternalState;
 
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/util/DependenciesScannerTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/util/DependenciesScannerTest.java
index 48f5e1e..9f6b349 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/util/DependenciesScannerTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/util/DependenciesScannerTest.java
@@ -27,8 +27,8 @@
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.handler.DefaultArtifactHandler;
 import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.util.ScanResult;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.util.ScanResult;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/util/DirectoryScannerTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/util/DirectoryScannerTest.java
index f19b2a9..8996383 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/util/DirectoryScannerTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/util/DirectoryScannerTest.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.util.ScanResult;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.util.ScanResult;
 import org.hamcrest.Matcher;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/ForkChannelTest.java b/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/ForkChannelTest.java
index 070de1f..ac30a66 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/ForkChannelTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/ForkChannelTest.java
@@ -24,8 +24,8 @@
 import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.TestLessInputStream.TestLessInputStreamBuilder;
 import org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.eventapi.ControlByeEvent;
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.ControlByeEvent;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
 import org.junit.Test;
 
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporterTest.java
index 577bb91..389acdf 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporterTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporterTest.java
@@ -26,7 +26,7 @@
 import org.apache.maven.plugin.surefire.report.FileReporter;
 import org.apache.maven.plugin.surefire.report.TestSetStats;
 import org.apache.maven.plugin.surefire.report.WrappedReportEntry;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.apache.maven.surefire.shared.utils.logging.MessageUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.java
index 1408583..0846af3 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.java
@@ -29,6 +29,8 @@
 import org.apache.maven.plugin.surefire.report.ConsoleOutputFileReporter;
 
 import junit.framework.TestCase;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.apache.maven.surefire.shared.utils.io.FileUtils;
 
 import static java.nio.charset.StandardCharsets.US_ASCII;
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java
index cbb85cc..d064421 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java
@@ -28,6 +28,8 @@
 import org.apache.maven.plugin.surefire.report.WrappedReportEntry;
 
 import junit.framework.TestCase;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
 
 /**
  *
diff --git a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
index 35d15fa..f2b4fdc 100644
--- a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
+++ b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
@@ -30,7 +30,7 @@
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 import static org.apache.maven.plugin.surefire.SurefireHelper.reportExecution;
 
diff --git a/maven-surefire-plugin/src/test/java/org/apache/maven/plugin/surefire/SurefirePluginTest.java b/maven-surefire-plugin/src/test/java/org/apache/maven/plugin/surefire/SurefirePluginTest.java
index 19a5f96..71ad8e3 100644
--- a/maven-surefire-plugin/src/test/java/org/apache/maven/plugin/surefire/SurefirePluginTest.java
+++ b/maven-surefire-plugin/src/test/java/org/apache/maven/plugin/surefire/SurefirePluginTest.java
@@ -21,7 +21,7 @@
 
 import junit.framework.TestCase;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 import java.io.File;
 
diff --git a/pom.xml b/pom.xml
index b24b0e5..b25f80c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -614,7 +614,7 @@
                 <exclude>src/test/resources/**/*</exclude>
                 <exclude>src/test/resources/**/*.css</exclude>
                 <exclude>**/*.jj</exclude>
-                <exclude>src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
+                <exclude>src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
                 </exclude>
                 <exclude>DEPENDENCIES</exclude>
                 <exclude>.m2/**</exclude>
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/BaseProviderFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BaseProviderFactory.java
similarity index 85%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/BaseProviderFactory.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BaseProviderFactory.java
index 9ae9fbd..c229f52 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/BaseProviderFactory.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BaseProviderFactory.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,23 +19,23 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.providerapi.CommandChainReader;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.util.DefaultDirectoryScanner;
-import org.apache.maven.surefire.util.DefaultRunOrderCalculator;
-import org.apache.maven.surefire.util.DefaultScanResult;
-import org.apache.maven.surefire.util.DirectoryScanner;
-import org.apache.maven.surefire.util.RunOrderCalculator;
-import org.apache.maven.surefire.util.ScanResult;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.provider.CommandChainReader;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.util.DefaultDirectoryScanner;
+import org.apache.maven.surefire.api.util.DefaultRunOrderCalculator;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
+import org.apache.maven.surefire.api.util.DirectoryScanner;
+import org.apache.maven.surefire.api.util.RunOrderCalculator;
+import org.apache.maven.surefire.api.util.ScanResult;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/BiProperty.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BiProperty.java
similarity index 87%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/BiProperty.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BiProperty.java
index b49e12b..61862e7 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/BiProperty.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/BiProperty.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -27,23 +27,23 @@
  * @param <P1> first property
  * @param <P2> second property
  */
-final class BiProperty<P1, P2>
+public final class BiProperty<P1, P2>
 {
     private final P1 p1;
     private final P2 p2;
 
-    BiProperty( P1 p1, P2 p2 )
+    public BiProperty( P1 p1, P2 p2 )
     {
         this.p1 = p1;
         this.p2 = p2;
     }
 
-    P1 getP1()
+    public P1 getP1()
     {
         return p1;
     }
 
-    P2 getP2()
+    public P2 getP2()
     {
         return p2;
     }
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/Command.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/Command.java
similarity index 86%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/Command.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/Command.java
index 834317b..d768e11 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/Command.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/Command.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,9 +23,6 @@
 
 import static java.util.Objects.requireNonNull;
 import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.RUN_CLASS;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SHUTDOWN;
-import static org.apache.maven.surefire.booter.Shutdown.DEFAULT;
 
 /**
  * Encapsulates data and command sent from master to forked process.
@@ -56,12 +53,12 @@
 
     public static Command toShutdown( Shutdown shutdownType )
     {
-        return new Command( SHUTDOWN, shutdownType.name() );
+        return new Command( MasterProcessCommand.SHUTDOWN, shutdownType.name() );
     }
 
     public static Command toRunClass( String runClass )
     {
-        return new Command( RUN_CLASS, runClass );
+        return new Command( MasterProcessCommand.RUN_CLASS, runClass );
     }
 
     public MasterProcessCommand getCommandType()
@@ -80,11 +77,11 @@
      */
     public Shutdown toShutdownData()
     {
-        if ( command != SHUTDOWN )
+        if ( command != MasterProcessCommand.SHUTDOWN )
         {
             throw new IllegalStateException( "expected MasterProcessCommand.SHUTDOWN" );
         }
-        return isBlank( data ) ? DEFAULT : Shutdown.valueOf( data );
+        return isBlank( data ) ? Shutdown.DEFAULT : Shutdown.valueOf( data );
     }
 
     @Override
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/DumpErrorSingleton.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/DumpErrorSingleton.java
similarity index 93%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/DumpErrorSingleton.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/DumpErrorSingleton.java
index 97e37d0..b54bb2e 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/DumpErrorSingleton.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/DumpErrorSingleton.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,11 +19,11 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.util.internal.DumpFileUtils;
+import org.apache.maven.surefire.api.util.internal.DumpFileUtils;
 
 import java.io.File;
 
-import static org.apache.maven.surefire.util.internal.DumpFileUtils.newDumpFile;
+import static org.apache.maven.surefire.api.util.internal.DumpFileUtils.newDumpFile;
 
 /**
  * Dumps lost commands and caused exceptions in forked JVM. <br>
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkedProcessEventType.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkedProcessEventType.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkedProcessEventType.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkedProcessEventType.java
index c1087ac..e84e5bc 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkedProcessEventType.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkedProcessEventType.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingReporterFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java
similarity index 87%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingReporterFactory.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java
index c08b52e..31bbfa5 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingReporterFactory.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 /**
  * Creates ForkingReporters, which are typically one instance per TestSet or thread.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java
similarity index 90%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java
index 2603e8f..7cf1dea 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkingRunListener.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,14 +20,14 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
-import static org.apache.maven.surefire.report.RunMode.NORMAL_RUN;
+import static org.apache.maven.surefire.api.report.RunMode.NORMAL_RUN;
 import static java.util.Objects.requireNonNull;
 
 /**
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelDecoder.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessChannelDecoder.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelDecoder.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessChannelDecoder.java
index dd06590..0571afa 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelDecoder.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessChannelDecoder.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelEncoder.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessChannelEncoder.java
similarity index 93%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelEncoder.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessChannelEncoder.java
index 75c9e17..e8ad45b 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessChannelEncoder.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessChannelEncoder.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
 import java.util.Map;
 
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessCommand.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessCommand.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessCommand.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessCommand.java
index b6ae644..64c392d 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/MasterProcessCommand.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/MasterProcessCommand.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ProviderParameterNames.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ProviderParameterNames.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/ProviderParameterNames.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ProviderParameterNames.java
index 59bddf6..9f227b8 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ProviderParameterNames.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ProviderParameterNames.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/Shutdown.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/Shutdown.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/booter/Shutdown.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/booter/Shutdown.java
index 77a09cf..e0baa56 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/Shutdown.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/Shutdown.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/cli/CommandLineOption.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/cli/CommandLineOption.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/cli/CommandLineOption.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/cli/CommandLineOption.java
index 668df52..fb3c233 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/cli/CommandLineOption.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/cli/CommandLineOption.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.cli;
+package org.apache.maven.surefire.api.cli;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractConsoleEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractConsoleEvent.java
similarity index 93%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractConsoleEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractConsoleEvent.java
index 09e1898..94b7287 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractConsoleEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractConsoleEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ForkedProcessEventType;
+import org.apache.maven.surefire.api.booter.ForkedProcessEventType;
 
 /**
  * The base class of an event.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractStandardStreamEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractStandardStreamEvent.java
similarity index 92%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractStandardStreamEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractStandardStreamEvent.java
index 329483a..bebb35e 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractStandardStreamEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractStandardStreamEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ForkedProcessEventType;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.booter.ForkedProcessEventType;
+import org.apache.maven.surefire.api.report.RunMode;
 
 /**
  * The base class of an event of standard streams.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractTestControlEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractTestControlEvent.java
similarity index 90%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractTestControlEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractTestControlEvent.java
index f422bda..747f65c 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/AbstractTestControlEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/AbstractTestControlEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ForkedProcessEventType;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.booter.ForkedProcessEventType;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
 /**
  * The base class of an event of test control.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleDebugEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleDebugEvent.java
similarity index 87%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleDebugEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleDebugEvent.java
index a039c55..e9bc6d7 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleDebugEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleDebugEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_DEBUG;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_DEBUG;
 
 /**
  * The event with a message for console debug level.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleErrorEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleErrorEvent.java
similarity index 89%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleErrorEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleErrorEvent.java
index 7c78347..c4d58e5 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleErrorEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleErrorEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_ERROR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_ERROR;
 
 /**
  * The event with a message for console error level.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleInfoEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleInfoEvent.java
similarity index 87%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleInfoEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleInfoEvent.java
index 452b46a..97cd73a 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleInfoEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleInfoEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_INFO;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_INFO;
 
 /**
  * The event with a message for console info level.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleWarningEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleWarningEvent.java
similarity index 87%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleWarningEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleWarningEvent.java
index 3eb9f03..db522eb 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ConsoleWarningEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ConsoleWarningEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_WARNING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_WARNING;
 
 /**
  * The event with a message for console warning level.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlByeEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlByeEvent.java
similarity index 92%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlByeEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlByeEvent.java
index 577cc89..898a1d6 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlByeEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlByeEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_BYE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_BYE;
 
 /**
  * The control event of bye.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlNextTestEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlNextTestEvent.java
similarity index 91%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlNextTestEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlNextTestEvent.java
index e320a26..c71204d 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlNextTestEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlNextTestEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_NEXT_TEST;
 
 /**
  * The control event of requesting a next test.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlStopOnNextTestEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlStopOnNextTestEvent.java
similarity index 91%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlStopOnNextTestEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlStopOnNextTestEvent.java
index fe65550..7a3c3dd 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/ControlStopOnNextTestEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/ControlStopOnNextTestEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STOP_ON_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STOP_ON_NEXT_TEST;
 
 /**
  * The control event of stopping on next test.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/Event.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/Event.java
similarity index 93%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/Event.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/Event.java
index 32893a1..6e94cfd 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/Event.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/Event.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ForkedProcessEventType;
+import org.apache.maven.surefire.api.booter.ForkedProcessEventType;
 
 /**
  * Super type of events.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/JvmExitErrorEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/JvmExitErrorEvent.java
similarity index 89%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/JvmExitErrorEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/JvmExitErrorEvent.java
index 43a9a17..2112fc7 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/JvmExitErrorEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/JvmExitErrorEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_JVM_EXIT_ERROR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_JVM_EXIT_ERROR;
 
 /**
  * The event for the JVM exit error.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamErrEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamErrEvent.java
similarity index 85%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamErrEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamErrEvent.java
index bdf498d..3367edf 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamErrEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamErrEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDERR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDERR;
 
 /**
  * The event of standard error stream.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamErrWithNewLineEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamErrWithNewLineEvent.java
similarity index 84%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamErrWithNewLineEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamErrWithNewLineEvent.java
index 1daf1c6..2974e5a 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamErrWithNewLineEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamErrWithNewLineEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDERR_NEW_LINE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDERR_NEW_LINE;
 
 /**
  * The event of standard error stream with new line.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamOutEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamOutEvent.java
similarity index 85%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamOutEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamOutEvent.java
index 333755f..9c77edd 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamOutEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamOutEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDOUT;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDOUT;
 
 /**
  * The event of standard output stream.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamOutWithNewLineEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamOutWithNewLineEvent.java
similarity index 84%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamOutWithNewLineEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamOutWithNewLineEvent.java
index 0263b92..34d9f8d 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/StandardStreamOutWithNewLineEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/StandardStreamOutWithNewLineEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDOUT_NEW_LINE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDOUT_NEW_LINE;
 
 /**
  * The event of standard output stream with new line.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/SystemPropertyEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/SystemPropertyEvent.java
similarity index 91%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/SystemPropertyEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/SystemPropertyEvent.java
index 9db4e1b..a0ae1e4 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/SystemPropertyEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/SystemPropertyEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_SYSPROPS;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_SYSPROPS;
 
 /**
  * The event of system property.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestAssumptionFailureEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestAssumptionFailureEvent.java
similarity index 81%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestAssumptionFailureEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestAssumptionFailureEvent.java
index 186028d..ee1b466 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestAssumptionFailureEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestAssumptionFailureEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_ASSUMPTIONFAILURE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_ASSUMPTIONFAILURE;
 
 /**
  * The event for the failed assumption.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestErrorEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestErrorEvent.java
similarity index 81%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestErrorEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestErrorEvent.java
index bbcae4f..f85fc5d 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestErrorEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestErrorEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_ERROR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_ERROR;
 
 /**
  * The event for the erroneous test.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestFailedEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestFailedEvent.java
similarity index 81%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestFailedEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestFailedEvent.java
index ffe8a41..30c8994 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestFailedEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestFailedEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_FAILED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_FAILED;
 
 /**
  * The event for the failed test.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestSkippedEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestSkippedEvent.java
similarity index 81%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestSkippedEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestSkippedEvent.java
index 2184db6..3ec406d 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestSkippedEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestSkippedEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_SKIPPED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_SKIPPED;
 
 /**
  * The event for the skipped test.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestStartingEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestStartingEvent.java
similarity index 81%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestStartingEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestStartingEvent.java
index 86fe983..94818d0 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestStartingEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestStartingEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_STARTING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_STARTING;
 
 /**
  * The event for started test.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestSucceededEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestSucceededEvent.java
similarity index 81%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestSucceededEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestSucceededEvent.java
index 701a02d..dd4005b 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestSucceededEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestSucceededEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_SUCCEEDED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_SUCCEEDED;
 
 /**
  * The event for succeeded test.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestsetCompletedEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestsetCompletedEvent.java
similarity index 81%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestsetCompletedEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestsetCompletedEvent.java
index 59fc1e7..e20c44c 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestsetCompletedEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestsetCompletedEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_COMPLETED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_COMPLETED;
 
 /**
  * The event for completed testset.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestsetStartingEvent.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestsetStartingEvent.java
similarity index 81%
rename from surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestsetStartingEvent.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestsetStartingEvent.java
index 65aead5..4faf3ac 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/eventapi/TestsetStartingEvent.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/event/TestsetStartingEvent.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.eventapi;
+package org.apache.maven.surefire.api.event;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_STARTING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_STARTING;
 
 /**
  * The event for started testset.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/NonAbstractClassFilter.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/filter/NonAbstractClassFilter.java
similarity index 91%
rename from surefire-api/src/main/java/org/apache/maven/surefire/NonAbstractClassFilter.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/filter/NonAbstractClassFilter.java
index da3badd..f7c2aed 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/NonAbstractClassFilter.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/filter/NonAbstractClassFilter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire;
+package org.apache.maven.surefire.api.filter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,7 +20,7 @@
  */
 
 import java.lang.reflect.Modifier;
-import org.apache.maven.surefire.util.ScannerFilter;
+import org.apache.maven.surefire.api.util.ScannerFilter;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/SpecificTestClassFilter.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/filter/SpecificTestClassFilter.java
similarity index 95%
rename from surefire-api/src/main/java/org/apache/maven/surefire/SpecificTestClassFilter.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/filter/SpecificTestClassFilter.java
index c26ca94..112f5ee 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/SpecificTestClassFilter.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/filter/SpecificTestClassFilter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire;
+package org.apache.maven.surefire.api.filter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,7 +23,7 @@
 import java.util.HashSet;
 import java.util.Set;
 import org.apache.maven.surefire.shared.utils.io.SelectorUtils;
-import org.apache.maven.surefire.util.ScannerFilter;
+import org.apache.maven.surefire.api.util.ScannerFilter;
 
 /**
  * Filter for test class files
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/AbstractProvider.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/AbstractProvider.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/providerapi/AbstractProvider.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/provider/AbstractProvider.java
index eca3909..c193f91 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/AbstractProvider.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/AbstractProvider.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.providerapi;
+package org.apache.maven.surefire.api.provider;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/CommandChainReader.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/CommandChainReader.java
similarity index 90%
rename from surefire-api/src/main/java/org/apache/maven/surefire/providerapi/CommandChainReader.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/provider/CommandChainReader.java
index 1710246..8993774 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/CommandChainReader.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/CommandChainReader.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.providerapi;
+package org.apache.maven.surefire.api.provider;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * Hiding CommandReader instance in provider.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/CommandListener.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/CommandListener.java
similarity index 89%
rename from surefire-api/src/main/java/org/apache/maven/surefire/providerapi/CommandListener.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/provider/CommandListener.java
index b0d8870..4544b4f 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/CommandListener.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/CommandListener.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.providerapi;
+package org.apache.maven.surefire.api.provider;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
+import org.apache.maven.surefire.api.booter.Command;
 
 /**
  * Command listener interface.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/ProviderParameters.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/ProviderParameters.java
similarity index 86%
rename from surefire-api/src/main/java/org/apache/maven/surefire/providerapi/ProviderParameters.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/provider/ProviderParameters.java
index f620cbf..048622f 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/ProviderParameters.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/ProviderParameters.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.providerapi;
+package org.apache.maven.surefire.api.provider;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +19,16 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.util.DirectoryScanner;
-import org.apache.maven.surefire.util.RunOrderCalculator;
-import org.apache.maven.surefire.util.ScanResult;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.util.DirectoryScanner;
+import org.apache.maven.surefire.api.util.RunOrderCalculator;
+import org.apache.maven.surefire.api.util.ScanResult;
 
 import java.util.List;
 import java.util.Map;
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/SurefireProvider.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/SurefireProvider.java
similarity index 90%
rename from surefire-api/src/main/java/org/apache/maven/surefire/providerapi/SurefireProvider.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/provider/SurefireProvider.java
index 9eccf6b..4e04aad 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/providerapi/SurefireProvider.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/provider/SurefireProvider.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.providerapi;
+package org.apache.maven.surefire.api.provider;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,9 +20,9 @@
  */
 
 import java.lang.reflect.InvocationTargetException;
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.ReporterException;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * Interface to be implemented by all Surefire providers.
@@ -60,9 +60,9 @@
      *                    When this is non-null, the forked process will run only that test
      *                    and probably not scan the classpath
      * @return A result of the invocation
-     * @throws org.apache.maven.surefire.report.ReporterException
+     * @throws ReporterException
      *          When reporting fails
-     * @throws org.apache.maven.surefire.testset.TestSetFailedException
+     * @throws TestSetFailedException
      *          When testset fails
      * @throws InvocationTargetException fails in {@code ProviderFactory}
      */
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/CategorizedReportEntry.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/CategorizedReportEntry.java
index c35d6d5..34be63c 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/CategorizedReportEntry.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputCapture.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputCapture.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputCapture.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputCapture.java
index 00051fc..2298e7f 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputCapture.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputCapture.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiver.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiver.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiver.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiver.java
index 8bc39d0..99e47f4 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiver.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiver.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiverForCurrentThread.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiverForCurrentThread.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiverForCurrentThread.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiverForCurrentThread.java
index e221a1d..4843630 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputReceiverForCurrentThread.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiverForCurrentThread.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT2A.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleStream.java
similarity index 84%
copy from surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT2A.java
copy to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleStream.java
index e016215..269b68f 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT2A.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleStream.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.testdata;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,8 +20,9 @@
  */
 
 /**
- *
+ * Delegates to {@link System#out}.
  */
-public class DataZT2A
+public interface ConsoleStream
 {
+    void println( String message );
 }
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/DefaultDirectConsoleReporter.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/DefaultDirectConsoleReporter.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/DefaultDirectConsoleReporter.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/DefaultDirectConsoleReporter.java
index 6cb61c3..b3a4c1c 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/DefaultDirectConsoleReporter.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/DefaultDirectConsoleReporter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriter.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/LegacyPojoStackTraceWriter.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriter.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/LegacyPojoStackTraceWriter.java
index 7a8fd56..dbb4b50 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriter.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/LegacyPojoStackTraceWriter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,7 +20,7 @@
  */
 
 
-import org.apache.maven.surefire.util.internal.StringUtils;
+import org.apache.maven.surefire.api.util.internal.StringUtils;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReportEntry.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReportEntry.java
index 547ecb2..65fb723 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReportEntry.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterConfiguration.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterConfiguration.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterConfiguration.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterConfiguration.java
index d2bfb13..03e7362 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterConfiguration.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterConfiguration.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterException.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterException.java
similarity index 95%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterException.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterException.java
index 2bf2313..ef9df11 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterException.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterException.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java
similarity index 92%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterFactory.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java
index 7b8a11f..af9057e 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReporterFactory.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 /**
  * Used by the providers to request (per-thread) run listeners.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/RunListener.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/RunListener.java
similarity index 94%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/RunListener.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/RunListener.java
index 396b277..659498e 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/RunListener.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/RunListener.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import org.apache.maven.surefire.api.provider.SurefireProvider;
+
 /**
  * Used by providers to report results.
  * Using this interface integrates the providers together into a common reporting infrastructure.
@@ -89,7 +91,7 @@
 
     /**
      * Event fired skipping an execution of remaining test-set in other fork(s); or does nothing if no forks.
-     * The method is called by {@link org.apache.maven.surefire.providerapi.SurefireProvider}.<p>
+     * The method is called by {@link SurefireProvider}.<p>
      * (The event is fired after the Nth test failed to signal skipping the rest of test-set.)
      */
     void testExecutionSkippedByUser();
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/RunMode.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/RunMode.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/RunMode.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/RunMode.java
index efd78a3..59aff6e 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/RunMode.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/RunMode.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/SafeThrowable.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/SafeThrowable.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/SafeThrowable.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/SafeThrowable.java
index b3b86f2..9378736 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/SafeThrowable.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/SafeThrowable.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/SimpleReportEntry.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/SimpleReportEntry.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/SimpleReportEntry.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/SimpleReportEntry.java
index 948a7d6..5e324ad 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/SimpleReportEntry.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/SimpleReportEntry.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.util.internal.ImmutableMap;
+import org.apache.maven.surefire.api.util.internal.ImmutableMap;
 
 import java.util.Collections;
 import java.util.Map;
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/StackTraceWriter.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/StackTraceWriter.java
index 6414ec2..bf28afa 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/StackTraceWriter.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/StackTraceWriter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/TestSetReportEntry.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestSetReportEntry.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/report/TestSetReportEntry.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestSetReportEntry.java
index 02d8669..0350ea9 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/TestSetReportEntry.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestSetReportEntry.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/PrioritizedTest.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/PrioritizedTest.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/PrioritizedTest.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/PrioritizedTest.java
index 280d710..1a740a6 100644
--- a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/PrioritizedTest.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/PrioritizedTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.surefire.runorder;
+package org.apache.maven.surefire.api.runorder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/Priority.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/Priority.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/Priority.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/Priority.java
index 93784fa..b185467 100644
--- a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/Priority.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/Priority.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.surefire.runorder;
+package org.apache.maven.surefire.api.runorder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatistics.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/RunEntryStatistics.java
similarity index 89%
rename from surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatistics.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/RunEntryStatistics.java
index 1ccc4ee..36044f5 100644
--- a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatistics.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/RunEntryStatistics.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.surefire.runorder;
+package org.apache.maven.surefire.api.runorder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 
 /**
  * @author Kristian Rosenvold
@@ -37,7 +37,7 @@
         this( runTime, successfulBuilds, new ClassMethod( clazz, method ) );
     }
 
-    RunEntryStatistics( int runTime, int successfulBuilds, ClassMethod classMethod )
+    public RunEntryStatistics( int runTime, int successfulBuilds, ClassMethod classMethod )
     {
         this.runTime = runTime;
         this.successfulBuilds = successfulBuilds;
diff --git a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMap.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/RunEntryStatisticsMap.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMap.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/RunEntryStatisticsMap.java
index fb80dd0..8bf0268 100644
--- a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMap.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/RunEntryStatisticsMap.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.surefire.runorder;
+package org.apache.maven.surefire.api.runorder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 
 import java.io.BufferedWriter;
 import java.io.File;
@@ -43,7 +43,7 @@
 import static java.lang.Integer.parseInt;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.Collections.sort;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 
 /**
  * @author Kristian Rosenvold
@@ -81,7 +81,7 @@
         }
     }
 
-    static RunEntryStatisticsMap fromStream( InputStream fileReader )
+    public static RunEntryStatisticsMap fromStream( InputStream fileReader )
     {
         Map<ClassMethod, RunEntryStatistics> result = new HashMap<>();
         try ( Scanner scanner = new Scanner( fileReader, "UTF-8" ) )
diff --git a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/ThreadedExecutionScheduler.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/ThreadedExecutionScheduler.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/ThreadedExecutionScheduler.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/ThreadedExecutionScheduler.java
index aa37b3d..b713e21 100644
--- a/surefire-api/src/main/java/org/apache/maven/plugin/surefire/runorder/ThreadedExecutionScheduler.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/runorder/ThreadedExecutionScheduler.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.surefire.runorder;
+package org.apache.maven.surefire.api.runorder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/suite/RunResult.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/suite/RunResult.java
similarity index 99%
rename from surefire-api/src/main/java/org/apache/maven/surefire/suite/RunResult.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/suite/RunResult.java
index cb89c31..4abe775 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/suite/RunResult.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/suite/RunResult.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.suite;
+package org.apache.maven.surefire.api.suite;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/DirectoryScannerParameters.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/DirectoryScannerParameters.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/DirectoryScannerParameters.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/DirectoryScannerParameters.java
index 36f4b2e..c407edb 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/DirectoryScannerParameters.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/DirectoryScannerParameters.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -21,7 +21,7 @@
 
 import java.io.File;
 import java.util.List;
-import org.apache.maven.surefire.util.RunOrder;
+import org.apache.maven.surefire.api.util.RunOrder;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/GenericTestPattern.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/GenericTestPattern.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/GenericTestPattern.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/GenericTestPattern.java
index 4db54a7..754da63 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/GenericTestPattern.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/GenericTestPattern.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/IncludedExcludedPatterns.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/IncludedExcludedPatterns.java
similarity index 94%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/IncludedExcludedPatterns.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/IncludedExcludedPatterns.java
index bc5c5d4..ef55835 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/IncludedExcludedPatterns.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/IncludedExcludedPatterns.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/ResolvedTest.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/ResolvedTest.java
similarity index 99%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/ResolvedTest.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/ResolvedTest.java
index 9b2637b..2450358 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/ResolvedTest.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/ResolvedTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/RunOrderParameters.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/RunOrderParameters.java
similarity index 94%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/RunOrderParameters.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/RunOrderParameters.java
index 6a2cceb..1fd2c3f 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/RunOrderParameters.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/RunOrderParameters.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,7 +20,7 @@
  */
 
 import java.io.File;
-import org.apache.maven.surefire.util.RunOrder;
+import org.apache.maven.surefire.api.util.RunOrder;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestArtifactInfo.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestArtifactInfo.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/TestArtifactInfo.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestArtifactInfo.java
index 4c78bf5..3669c4a 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestArtifactInfo.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestArtifactInfo.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestFilter.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestFilter.java
similarity index 95%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/TestFilter.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestFilter.java
index d0155cb..4db0003 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestFilter.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestFilter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListResolver.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestListResolver.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListResolver.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestListResolver.java
index e7ed763..f8ebb1b 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListResolver.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestListResolver.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -32,8 +32,8 @@
 import static org.apache.maven.surefire.shared.utils.io.SelectorUtils.PATTERN_HANDLER_SUFFIX;
 import static org.apache.maven.surefire.shared.utils.io.SelectorUtils.REGEX_HANDLER_PREFIX;
 import static java.util.Collections.singleton;
-import static org.apache.maven.surefire.testset.ResolvedTest.Type.CLASS;
-import static org.apache.maven.surefire.testset.ResolvedTest.Type.METHOD;
+import static org.apache.maven.surefire.api.testset.ResolvedTest.Type.CLASS;
+import static org.apache.maven.surefire.api.testset.ResolvedTest.Type.METHOD;
 
 // TODO In Surefire 3.0 see SUREFIRE-1309 and use normal fully qualified class name regex instead.
 /**
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestRequest.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestRequest.java
index 4f2e710..80631f4 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestRequest.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestRequest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestSetFailedException.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestSetFailedException.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/testset/TestSetFailedException.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestSetFailedException.java
index f6966b0..0005eb6 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/testset/TestSetFailedException.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/testset/TestSetFailedException.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/CloseableIterator.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/CloseableIterator.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/CloseableIterator.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/CloseableIterator.java
index eec1859..6328d6c 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/CloseableIterator.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/CloseableIterator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultDirectoryScanner.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultDirectoryScanner.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultDirectoryScanner.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultDirectoryScanner.java
index 12fd968..fcdba6b 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultDirectoryScanner.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultDirectoryScanner.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.SpecificTestClassFilter;
+import org.apache.maven.surefire.api.filter.SpecificTestClassFilter;
 
 import java.io.File;
 import java.util.ArrayList;
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultRunOrderCalculator.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java
similarity index 95%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultRunOrderCalculator.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java
index 22a219d..c897bb7 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultRunOrderCalculator.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.surefire.runorder.RunEntryStatisticsMap;
-import org.apache.maven.surefire.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.runorder.RunEntryStatisticsMap;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
 
 import java.util.ArrayList;
 import java.util.Calendar;
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultScanResult.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultScanResult.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultScanResult.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultScanResult.java
index 943aaa7..bfa41fd 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/DefaultScanResult.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultScanResult.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/DirectoryScanner.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DirectoryScanner.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/DirectoryScanner.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/DirectoryScanner.java
index 1fdb1d2..627a17a 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/DirectoryScanner.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DirectoryScanner.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/ReflectionUtils.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/ReflectionUtils.java
similarity index 99%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/ReflectionUtils.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/ReflectionUtils.java
index 2e4eba6..de47bb4 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/ReflectionUtils.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/ReflectionUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/RunOrder.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/RunOrder.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/RunOrder.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/RunOrder.java
index 4e75b61..b0d9382 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/RunOrder.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/RunOrder.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -148,4 +148,4 @@
     {
         return name;
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/RunOrderCalculator.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/RunOrderCalculator.java
similarity index 95%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/RunOrderCalculator.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/RunOrderCalculator.java
index bdbc48b..a9f9993 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/RunOrderCalculator.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/RunOrderCalculator.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/ScanResult.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/ScanResult.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/ScanResult.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/ScanResult.java
index 5960ee6..f086a76 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/ScanResult.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/ScanResult.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/ScannerFilter.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/ScannerFilter.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/ScannerFilter.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/ScannerFilter.java
index 508228c..ec6f492 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/ScannerFilter.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/ScannerFilter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/SurefireReflectionException.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/SurefireReflectionException.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/SurefireReflectionException.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/SurefireReflectionException.java
index eb3b04a..c29be45 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/SurefireReflectionException.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/SurefireReflectionException.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/TestsToRun.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/TestsToRun.java
index 9957f5e..28736ef 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/TestsToRun.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/TestsToRun.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -26,7 +26,7 @@
 import java.util.List;
 import java.util.Set;
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import static java.lang.Math.max;
 
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/AbstractNoninterruptibleReadableChannel.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/AbstractNoninterruptibleReadableChannel.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/AbstractNoninterruptibleReadableChannel.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/AbstractNoninterruptibleReadableChannel.java
index 1a75972..678d643 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/AbstractNoninterruptibleReadableChannel.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/AbstractNoninterruptibleReadableChannel.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/AbstractNoninterruptibleWritableChannel.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/AbstractNoninterruptibleWritableChannel.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/AbstractNoninterruptibleWritableChannel.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/AbstractNoninterruptibleWritableChannel.java
index 4c60bce..fe998f3 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/AbstractNoninterruptibleWritableChannel.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/AbstractNoninterruptibleWritableChannel.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/Channels.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/Channels.java
similarity index 99%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/Channels.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/Channels.java
index b15e6f6..7bd4efc 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/Channels.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/Channels.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ClassMethod.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ClassMethod.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ClassMethod.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ClassMethod.java
index 611b849..03661d8 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ClassMethod.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ClassMethod.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ConcurrencyUtils.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ConcurrencyUtils.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ConcurrencyUtils.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ConcurrencyUtils.java
index 6cfc6bf..a43d8f3 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ConcurrencyUtils.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ConcurrencyUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/DaemonThreadFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/DaemonThreadFactory.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/DaemonThreadFactory.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/DaemonThreadFactory.java
index 32b597a..28a5342 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/DaemonThreadFactory.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/DaemonThreadFactory.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/DumpFileUtils.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/DumpFileUtils.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/DumpFileUtils.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/DumpFileUtils.java
index 794f8d0..bac68be 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/DumpFileUtils.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/DumpFileUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ImmutableMap.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ImmutableMap.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ImmutableMap.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ImmutableMap.java
index 7eb1225..5b5422f 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ImmutableMap.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ImmutableMap.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ObjectUtils.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ObjectUtils.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ObjectUtils.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ObjectUtils.java
index 254587f..b316be2 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/ObjectUtils.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/ObjectUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/StringUtils.java
similarity index 98%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/StringUtils.java
index e877a24..136afba 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/StringUtils.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/StringUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/TestClassMethodNameUtils.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/TestClassMethodNameUtils.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/TestClassMethodNameUtils.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/TestClassMethodNameUtils.java
index 94bf4c8..c24d88d 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/TestClassMethodNameUtils.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/TestClassMethodNameUtils.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/WritableBufferedByteChannel.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/WritableBufferedByteChannel.java
similarity index 96%
rename from surefire-api/src/main/java/org/apache/maven/surefire/util/internal/WritableBufferedByteChannel.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/WritableBufferedByteChannel.java
index 7f64549..42c0d08 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/util/internal/WritableBufferedByteChannel.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/internal/WritableBufferedByteChannel.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleStream.java b/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleStream.java
deleted file mode 100644
index 0fc4918..0000000
--- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleStream.java
+++ /dev/null
Binary files differ
diff --git a/surefire-api/src/test/java/org/apache/maven/JUnit4SuiteTest.java b/surefire-api/src/test/java/org/apache/maven/JUnit4SuiteTest.java
index 231ff74..7ac3ba2 100644
--- a/surefire-api/src/test/java/org/apache/maven/JUnit4SuiteTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/JUnit4SuiteTest.java
@@ -21,25 +21,25 @@
 
 import junit.framework.JUnit4TestAdapter;
 import junit.framework.Test;
-import org.apache.maven.plugin.surefire.runorder.ThreadedExecutionSchedulerTest;
+import org.apache.maven.surefire.api.runorder.ThreadedExecutionSchedulerTest;
 import org.apache.maven.surefire.SpecificTestClassFilterTest;
-import org.apache.maven.surefire.booter.ForkingRunListenerTest;
-import org.apache.maven.surefire.report.LegacyPojoStackTraceWriterTest;
-import org.apache.maven.surefire.suite.RunResultTest;
-import org.apache.maven.surefire.testset.FundamentalFilterTest;
-import org.apache.maven.surefire.testset.ResolvedTestTest;
-import org.apache.maven.surefire.testset.TestListResolverTest;
-import org.apache.maven.surefire.util.DefaultDirectoryScannerTest;
-import org.apache.maven.surefire.util.ReflectionUtilsTest;
-import org.apache.maven.surefire.util.RunOrderCalculatorTest;
-import org.apache.maven.surefire.util.RunOrderTest;
-import org.apache.maven.surefire.util.ScanResultTest;
-import org.apache.maven.surefire.util.TestsToRunTest;
-import org.apache.maven.surefire.util.internal.AsyncSocketTest;
-import org.apache.maven.surefire.util.internal.ChannelsReaderTest;
-import org.apache.maven.surefire.util.internal.ChannelsWriterTest;
-import org.apache.maven.surefire.util.internal.ConcurrencyUtilsTest;
-import org.apache.maven.surefire.util.internal.ImmutableMapTest;
+import org.apache.maven.surefire.api.booter.ForkingRunListenerTest;
+import org.apache.maven.surefire.api.report.LegacyPojoStackTraceWriterTest;
+import org.apache.maven.surefire.api.suite.RunResultTest;
+import org.apache.maven.surefire.api.testset.FundamentalFilterTest;
+import org.apache.maven.surefire.api.testset.ResolvedTestTest;
+import org.apache.maven.surefire.api.testset.TestListResolverTest;
+import org.apache.maven.surefire.api.util.DefaultDirectoryScannerTest;
+import org.apache.maven.surefire.api.util.ReflectionUtilsTest;
+import org.apache.maven.surefire.api.util.RunOrderCalculatorTest;
+import org.apache.maven.surefire.api.util.RunOrderTest;
+import org.apache.maven.surefire.api.util.ScanResultTest;
+import org.apache.maven.surefire.api.util.TestsToRunTest;
+import org.apache.maven.surefire.api.util.internal.AsyncSocketTest;
+import org.apache.maven.surefire.api.util.internal.ChannelsReaderTest;
+import org.apache.maven.surefire.api.util.internal.ChannelsWriterTest;
+import org.apache.maven.surefire.api.util.internal.ConcurrencyUtilsTest;
+import org.apache.maven.surefire.api.util.internal.ImmutableMapTest;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/SpecificTestClassFilterTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/SpecificTestClassFilterTest.java
index 0cb8da0..da9ac4c 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/SpecificTestClassFilterTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/SpecificTestClassFilterTest.java
@@ -20,6 +20,7 @@
  */
 
 import junit.framework.TestCase;
+import org.apache.maven.surefire.api.filter.SpecificTestClassFilter;
 
 /**
  *
@@ -29,7 +30,7 @@
     public void testMatchSingleCharacterWildcard()
     {
         SpecificTestClassFilter filter = new SpecificTestClassFilter(
-                new String[] {"org/apache/maven/surefire/?pecificTestClassFilter.class"} );
+                new String[] {"org/apache/maven/surefire/api/filter/?pecificTestClassFilter.class"} );
 
         assertTrue( filter.accept( SpecificTestClassFilter.class ) );
     }
@@ -37,7 +38,7 @@
     public void testMatchSingleSegmentWordWildcard()
     {
         SpecificTestClassFilter filter = new SpecificTestClassFilter(
-                new String[] {"org/apache/maven/surefire/*TestClassFilter.class"} );
+                new String[] {"org/apache/maven/surefire/api/filter/*TestClassFilter.class"} );
 
         assertTrue( filter.accept( SpecificTestClassFilter.class ) );
     }
@@ -53,7 +54,7 @@
     public void testMatchSingleSegmentWildcard()
     {
         SpecificTestClassFilter filter = new SpecificTestClassFilter(
-                new String[] {"org/*/maven/surefire/SpecificTestClassFilter.class"} );
+                new String[] {"org/*/maven/surefire/api/filter/SpecificTestClassFilter.class"} );
 
         assertTrue( filter.accept( SpecificTestClassFilter.class ) );
     }
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/booter/ForkingRunListenerTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/booter/ForkingRunListenerTest.java
similarity index 97%
rename from surefire-api/src/test/java/org/apache/maven/surefire/booter/ForkingRunListenerTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/booter/ForkingRunListenerTest.java
index 258b165..25c479b 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/booter/ForkingRunListenerTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/booter/ForkingRunListenerTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.booter;
+package org.apache.maven.surefire.api.booter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriterTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/report/LegacyPojoStackTraceWriterTest.java
similarity index 99%
rename from surefire-api/src/test/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriterTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/report/LegacyPojoStackTraceWriterTest.java
index 60bbc09..f2c8e85 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/report/LegacyPojoStackTraceWriterTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/report/LegacyPojoStackTraceWriterTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.report;
+package org.apache.maven.surefire.api.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/plugin/surefire/runorder/ThreadedExecutionSchedulerTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/runorder/ThreadedExecutionSchedulerTest.java
similarity index 95%
rename from surefire-api/src/test/java/org/apache/maven/plugin/surefire/runorder/ThreadedExecutionSchedulerTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/runorder/ThreadedExecutionSchedulerTest.java
index 5c607ef..64fa719 100644
--- a/surefire-api/src/test/java/org/apache/maven/plugin/surefire/runorder/ThreadedExecutionSchedulerTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/runorder/ThreadedExecutionSchedulerTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.surefire.runorder;
+package org.apache.maven.surefire.api.runorder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -22,7 +22,7 @@
 import java.util.List;
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 
 /**
  * @author Kristian Rosenvold
@@ -64,7 +64,7 @@
     {
         ThreadedExecutionScheduler threadedExecutionScheduler = new ThreadedExecutionScheduler( 4 );
         addPrioritizedTests( threadedExecutionScheduler );
-        final List result = threadedExecutionScheduler.getResult();
+        final List<Class<?>> result = threadedExecutionScheduler.getResult();
         assertEquals( 5, result.size() );
     }
 
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/suite/RunResultTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/suite/RunResultTest.java
similarity index 96%
rename from surefire-api/src/test/java/org/apache/maven/surefire/suite/RunResultTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/suite/RunResultTest.java
index 67fc171..6a98999 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/suite/RunResultTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/suite/RunResultTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.suite;
+package org.apache.maven.surefire.api.suite;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT1A.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT1A.java
similarity index 94%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT1A.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT1A.java
index 2c3a725..11f9a0b 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT1A.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT1A.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.testdata;
+package org.apache.maven.surefire.api.testdata;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT2A.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT2A.java
similarity index 94%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT2A.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT2A.java
index e016215..c4d73a8 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT2A.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT2A.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.testdata;
+package org.apache.maven.surefire.api.testdata;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT3A.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT3A.java
similarity index 94%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT3A.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT3A.java
index 5abbf9f..1a6b695 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT3A.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/DataZT3A.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.testdata;
+package org.apache.maven.surefire.api.testdata;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/java/javascript/DataJavaZT4A.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/java/javascript/DataJavaZT4A.java
similarity index 93%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/java/javascript/DataJavaZT4A.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/java/javascript/DataJavaZT4A.java
index b497ace..1d828e9 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/java/javascript/DataJavaZT4A.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/testdata/java/javascript/DataJavaZT4A.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.testdata.java.javascript;
+package org.apache.maven.surefire.api.testdata.java.javascript;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/testset/FundamentalFilterTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/testset/FundamentalFilterTest.java
similarity index 99%
rename from surefire-api/src/test/java/org/apache/maven/surefire/testset/FundamentalFilterTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/testset/FundamentalFilterTest.java
index 63fb571..af57310 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/testset/FundamentalFilterTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/testset/FundamentalFilterTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/testset/ResolvedTestTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/testset/ResolvedTestTest.java
similarity index 89%
rename from surefire-api/src/test/java/org/apache/maven/surefire/testset/ResolvedTestTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/testset/ResolvedTestTest.java
index 2a0d0d0..d953688 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/testset/ResolvedTestTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/testset/ResolvedTestTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -21,9 +21,9 @@
 
 import junit.framework.TestCase;
 
-import static org.apache.maven.surefire.testset.ResolvedTest.Type.CLASS;
-import static org.apache.maven.surefire.testset.ResolvedTest.Type.METHOD;
-import static org.apache.maven.surefire.testset.ResolvedTest.fromFullyQualifiedClass;
+import static org.apache.maven.surefire.api.testset.ResolvedTest.Type.CLASS;
+import static org.apache.maven.surefire.api.testset.ResolvedTest.Type.METHOD;
+import static org.apache.maven.surefire.api.testset.ResolvedTest.fromFullyQualifiedClass;
 
 /**
  *
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/testset/TestListResolverTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/testset/TestListResolverTest.java
similarity index 98%
rename from surefire-api/src/test/java/org/apache/maven/surefire/testset/TestListResolverTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/testset/TestListResolverTest.java
index 00ce3d1..8ca9753 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/testset/TestListResolverTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/testset/TestListResolverTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.testset;
+package org.apache.maven.surefire.api.testset;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -30,8 +30,8 @@
 import java.util.Set;
 
 import static java.util.Collections.addAll;
-import static org.apache.maven.surefire.testset.TestListResolver.newTestListResolver;
-import static org.apache.maven.surefire.testset.ResolvedTest.Type.CLASS;
+import static org.apache.maven.surefire.api.testset.TestListResolver.newTestListResolver;
+import static org.apache.maven.surefire.api.testset.ResolvedTest.Type.CLASS;
 import static java.util.Arrays.asList;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singleton;
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/DefaultDirectoryScannerTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/DefaultDirectoryScannerTest.java
similarity index 94%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/DefaultDirectoryScannerTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/DefaultDirectoryScannerTest.java
index 5d7aed9..83c5bd9 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/DefaultDirectoryScannerTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/DefaultDirectoryScannerTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -24,7 +24,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import junit.framework.TestCase;
 
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/ReflectionUtilsTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/ReflectionUtilsTest.java
similarity index 98%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/ReflectionUtilsTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/ReflectionUtilsTest.java
index 9941626..a0f3b57 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/ReflectionUtilsTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/ReflectionUtilsTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/RunOrderCalculatorTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/RunOrderCalculatorTest.java
similarity index 93%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/RunOrderCalculatorTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/RunOrderCalculatorTest.java
index 2308d0c..63768cf 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/RunOrderCalculatorTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/RunOrderCalculatorTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -22,7 +22,7 @@
 import java.util.LinkedHashSet;
 import java.util.Set;
 
-import org.apache.maven.surefire.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
 
 import junit.framework.TestCase;
 
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/RunOrderTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/RunOrderTest.java
similarity index 97%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/RunOrderTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/RunOrderTest.java
index cf60eba..a579cc6 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/RunOrderTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/RunOrderTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -67,4 +67,4 @@
 
         }
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/ScanResultTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/ScanResultTest.java
similarity index 94%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/ScanResultTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/ScanResultTest.java
index d3551f0..d7b789a 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/ScanResultTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/ScanResultTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -41,7 +41,7 @@
         scanResult.writeTo( serialized );
 
         DefaultScanResult read = DefaultScanResult.from( serialized );
-        List classes = read.getClasses();
+        List<?> classes = read.getClasses();
         assertEquals( 2, classes.size() );
         assertTrue( classes.contains( "abc" ) );
         assertTrue( classes.contains( "cde" ) );
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/TestsToRunTest.java
similarity index 95%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/TestsToRunTest.java
index 1acd420..f4bd137 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/TestsToRunTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/TestsToRunTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util;
+package org.apache.maven.surefire.api.util;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -82,8 +82,8 @@
         classes.add( T1.class );
         classes.add( T2.class );
         TestsToRun testsToRun = new TestsToRun( classes );
-        assertEquals( T1.class, testsToRun.getClassByName( "org.apache.maven.surefire.util.TestsToRunTest$T1" ) );
-        assertEquals( T2.class, testsToRun.getClassByName( "org.apache.maven.surefire.util.TestsToRunTest$T2" ) );
+        assertEquals( T1.class, testsToRun.getClassByName( "org.apache.maven.surefire.api.util.TestsToRunTest$T1" ) );
+        assertEquals( T2.class, testsToRun.getClassByName( "org.apache.maven.surefire.api.util.TestsToRunTest$T2" ) );
         assertNull( testsToRun.getClassByName( "org.apache.maven.surefire.util.TestsToRunTest$T3" ) );
     }
 
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/AsyncSocketTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/AsyncSocketTest.java
similarity index 97%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/internal/AsyncSocketTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/AsyncSocketTest.java
index 8363e29..0128736 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/AsyncSocketTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/AsyncSocketTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -47,8 +47,8 @@
 import static java.net.StandardSocketOptions.SO_KEEPALIVE;
 import static java.net.StandardSocketOptions.SO_REUSEADDR;
 import static java.net.StandardSocketOptions.TCP_NODELAY;
-import static org.apache.maven.surefire.util.internal.Channels.newInputStream;
-import static org.apache.maven.surefire.util.internal.Channels.newOutputStream;
+import static org.apache.maven.surefire.api.util.internal.Channels.newInputStream;
+import static org.apache.maven.surefire.api.util.internal.Channels.newOutputStream;
 import static org.fest.assertions.Assertions.assertThat;
 
 /**
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ChannelsReaderTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ChannelsReaderTest.java
similarity index 99%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ChannelsReaderTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ChannelsReaderTest.java
index 8a3b0a4..42ca2c7 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ChannelsReaderTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ChannelsReaderTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ChannelsWriterTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ChannelsWriterTest.java
similarity index 99%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ChannelsWriterTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ChannelsWriterTest.java
index 24ed3f3..4befc24 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ChannelsWriterTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ChannelsWriterTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ConcurrencyUtilsTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ConcurrencyUtilsTest.java
similarity index 95%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ConcurrencyUtilsTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ConcurrencyUtilsTest.java
index 30c4a04..a2181c1 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ConcurrencyUtilsTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ConcurrencyUtilsTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -26,7 +26,7 @@
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import static org.apache.maven.surefire.util.internal.ConcurrencyUtils.countDownToZero;
+import static org.apache.maven.surefire.api.util.internal.ConcurrencyUtils.countDownToZero;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertTrue;
diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ImmutableMapTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ImmutableMapTest.java
similarity index 97%
rename from surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ImmutableMapTest.java
rename to surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ImmutableMapTest.java
index 1da1e22..8c64ecd 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/internal/ImmutableMapTest.java
+++ b/surefire-api/src/test/java/org/apache/maven/surefire/api/util/internal/ImmutableMapTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.util.internal;
+package org.apache.maven.surefire.api.util.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.util.internal.ImmutableMap.Node;
+import org.apache.maven.surefire.api.util.internal.ImmutableMap.Node;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java
index 9c8a9ed..4ec8cec 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/BooterDeserializer.java
@@ -24,18 +24,20 @@
 import java.io.InputStream;
 import java.util.Collection;
 import java.util.List;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
+
+import org.apache.maven.surefire.api.booter.Shutdown;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
 
 // CHECKSTYLE_OFF: imports
 import javax.annotation.Nonnull;
 
 import static org.apache.maven.surefire.booter.BooterConstants.*;
-import static org.apache.maven.surefire.cli.CommandLineOption.*;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.*;
 
 /**
  * Knows how to serialize and deserialize the booter configuration.
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/CommandReader.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/CommandReader.java
index f875240..ebe72a9 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/CommandReader.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/CommandReader.java
@@ -20,9 +20,16 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.providerapi.CommandChainReader;
-import org.apache.maven.surefire.providerapi.CommandListener;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.booter.BiProperty;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.booter.DumpErrorSingleton;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.booter.MasterProcessCommand;
+import org.apache.maven.surefire.api.booter.Shutdown;
+import org.apache.maven.surefire.api.provider.CommandChainReader;
+import org.apache.maven.surefire.api.provider.CommandListener;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import java.io.EOFException;
 import java.io.IOException;
@@ -40,14 +47,14 @@
 import static java.lang.Thread.State.RUNNABLE;
 import static java.lang.Thread.State.TERMINATED;
 import static java.util.Objects.requireNonNull;
-import static org.apache.maven.surefire.booter.Command.toShutdown;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.BYE_ACK;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.NOOP;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SHUTDOWN;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SKIP_SINCE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.Command.toShutdown;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.BYE_ACK;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.NOOP;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SHUTDOWN;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SKIP_SINCE_NEXT_TEST;
 import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank;
 import static org.apache.maven.surefire.shared.utils.StringUtils.isNotBlank;
-import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThread;
+import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThread;
 
 /**
  * Reader of commands coming from plugin(master) process.
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
index 7b6d09e..d8e3bfe 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java
@@ -20,16 +20,23 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
+import org.apache.maven.surefire.api.booter.BaseProviderFactory;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.booter.DumpErrorSingleton;
+import org.apache.maven.surefire.api.booter.ForkingReporterFactory;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.booter.Shutdown;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelProcessorFactory;
 import org.apache.maven.surefire.booter.spi.SurefireMasterProcessChannelProcessorFactory;
-import org.apache.maven.surefire.providerapi.CommandListener;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.providerapi.SurefireProvider;
-import org.apache.maven.surefire.report.LegacyPojoStackTraceWriter;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.provider.CommandListener;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.provider.SurefireProvider;
+import org.apache.maven.surefire.api.report.LegacyPojoStackTraceWriter;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.apache.maven.surefire.shared.utils.cli.ShutdownHookUtils;
 import org.apache.maven.surefire.spi.MasterProcessChannelProcessorFactory;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -58,9 +65,9 @@
 import static org.apache.maven.surefire.booter.ProcessCheckerType.NATIVE;
 import static org.apache.maven.surefire.booter.ProcessCheckerType.PING;
 import static org.apache.maven.surefire.booter.SystemPropertyManager.setSystemProperties;
-import static org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg;
-import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.instantiateOneArg;
+import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 
 /**
  * The part of the booter that is unique to a forked vm.
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/LazyTestsToRun.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/LazyTestsToRun.java
index 47ffa01..7a147bd 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/LazyTestsToRun.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/LazyTestsToRun.java
@@ -22,10 +22,12 @@
 import java.util.Collections;
 import java.util.Iterator;
 
-import org.apache.maven.surefire.util.CloseableIterator;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.provider.SurefireProvider;
+import org.apache.maven.surefire.api.util.CloseableIterator;
+import org.apache.maven.surefire.api.util.TestsToRun;
 
-import static org.apache.maven.surefire.util.ReflectionUtils.loadClass;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.loadClass;
 
 /**
  * A variant of TestsToRun that is provided with test class names
@@ -34,7 +36,7 @@
  * {@link Iterator#hasNext()} or {@link Iterator#next()} until new classes are available, or no more
  * classes will be available or the internal stream is closed.
  * The iterator can be used only in one Thread and it is the thread which executes
- * {@link org.apache.maven.surefire.providerapi.SurefireProvider provider implementation}.
+ * {@link SurefireProvider provider implementation}.
  *
  * @author Andreas Gudian
  * @author Tibor Digana
@@ -93,7 +95,7 @@
     /**
      * The iterator can be used only in one Thread.
      * {@inheritDoc}
-     * @see org.apache.maven.surefire.util.TestsToRun#iterator()
+     * @see TestsToRun#iterator()
      * */
     @Override
     public Iterator<Class<?>> iterator()
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java
index d935dd4..f2567a9 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import org.apache.maven.surefire.api.booter.DumpErrorSingleton;
+
 import javax.annotation.Nonnull;
 import java.io.File;
 import java.io.IOException;
@@ -47,7 +49,7 @@
 import static org.apache.maven.surefire.booter.ProcessInfo.windowsProcessInfo;
 import static org.apache.maven.surefire.booter.ProcessInfo.ERR_PROCESS_INFO;
 import static org.apache.maven.surefire.booter.ProcessInfo.INVALID_PROCESS_INFO;
-import static org.apache.maven.surefire.util.internal.StringUtils.NL;
+import static org.apache.maven.surefire.api.util.internal.StringUtils.NL;
 
 /**
  * Recognizes PID of Plugin process and determines lifetime.
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java
index caa26d2..54b6187 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderConfiguration.java
@@ -23,12 +23,13 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestRequest;
+import org.apache.maven.surefire.api.booter.Shutdown;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestRequest;
 
 /**
  * Represents the surefire configuration that passes all the way into the provider
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
index 614ff92..6003419 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ProviderFactory.java
@@ -23,15 +23,15 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import org.apache.maven.surefire.providerapi.SurefireProvider;
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.provider.SurefireProvider;
+import org.apache.maven.surefire.api.report.ReporterException;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
-import static org.apache.maven.surefire.util.ReflectionUtils.getMethod;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeGetter;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.getMethod;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeGetter;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray2;
 
 /**
  * Creates the surefire provider.
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooterForkException.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooterForkException.java
index 8d3790b..bae4ed0 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooterForkException.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooterForkException.java
@@ -20,7 +20,7 @@
  */
 
 
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.suite.RunResult;
 
 import static org.apache.maven.surefire.shared.utils.StringUtils.isNotBlank;
 
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java
index 140cf0e..7f4c355 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireReflector.java
@@ -19,18 +19,19 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.util.RunOrder;
-import org.apache.maven.surefire.util.SurefireReflectionException;
+import org.apache.maven.surefire.api.booter.BaseProviderFactory;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.util.RunOrder;
+import org.apache.maven.surefire.api.util.SurefireReflectionException;
 
 import java.io.File;
 import java.lang.reflect.Constructor;
@@ -41,13 +42,13 @@
 import java.util.Map;
 
 import static java.util.Collections.checkedList;
-import static org.apache.maven.surefire.util.ReflectionUtils.getConstructor;
-import static org.apache.maven.surefire.util.ReflectionUtils.getMethod;
-import static org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeGetter;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeSetter;
-import static org.apache.maven.surefire.util.ReflectionUtils.newInstance;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.getConstructor;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.getMethod;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.instantiateOneArg;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeGetter;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeSetter;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.newInstance;
 
 /**
  * Does reflection based invocation of the surefire methods.
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemUtils.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemUtils.java
index ef76374..40ba232 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemUtils.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SystemUtils.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.util.ReflectionUtils;
+import org.apache.maven.surefire.api.util.ReflectionUtils;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -41,8 +41,8 @@
 import static org.apache.maven.surefire.shared.lang3.SystemUtils.IS_OS_LINUX;
 import static org.apache.maven.surefire.shared.lang3.SystemUtils.IS_OS_NET_BSD;
 import static org.apache.maven.surefire.shared.lang3.SystemUtils.IS_OS_OPEN_BSD;
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodChain;
-import static org.apache.maven.surefire.util.ReflectionUtils.tryLoadClass;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodChain;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.tryLoadClass;
 
 /**
  * JDK 9 support.
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/TypeEncodedValue.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/TypeEncodedValue.java
index 06e93be..554db3b 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/TypeEncodedValue.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/TypeEncodedValue.java
@@ -26,7 +26,7 @@
 import java.util.Properties;
 
 import static java.nio.charset.StandardCharsets.ISO_8859_1;
-import static org.apache.maven.surefire.util.ReflectionUtils.loadClass;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.loadClass;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelDecoder.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelDecoder.java
index df100e9..315d350 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelDecoder.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelDecoder.java
@@ -19,11 +19,11 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.booter.DumpErrorSingleton;
-import org.apache.maven.surefire.booter.MasterProcessCommand;
-import org.apache.maven.surefire.booter.MasterProcessChannelDecoder;
-import org.apache.maven.surefire.util.internal.ImmutableMap;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.booter.DumpErrorSingleton;
+import org.apache.maven.surefire.api.booter.MasterProcessCommand;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.util.internal.ImmutableMap;
 
 import javax.annotation.Nonnull;
 import java.io.EOFException;
@@ -35,13 +35,13 @@
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.maven.surefire.booter.MasterProcessCommand.BYE_ACK;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.MAGIC_NUMBER;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.NOOP;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.RUN_CLASS;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SHUTDOWN;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SKIP_SINCE_NEXT_TEST;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.TEST_SET_FINISHED;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.BYE_ACK;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.MAGIC_NUMBER;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.NOOP;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.RUN_CLASS;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SHUTDOWN;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SKIP_SINCE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.TEST_SET_FINISHED;
 
 /**
  * magic number : opcode [: opcode specific data]*
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoder.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoder.java
index 209790d..443fdcd 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoder.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoder.java
@@ -20,15 +20,15 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLoggerUtils;
-import org.apache.maven.surefire.booter.DumpErrorSingleton;
-import org.apache.maven.surefire.booter.ForkedProcessEventType;
-import org.apache.maven.surefire.booter.MasterProcessChannelEncoder;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.SafeThrowable;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.booter.DumpErrorSingleton;
+import org.apache.maven.surefire.api.booter.ForkedProcessEventType;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.apache.maven.surefire.shared.codec.binary.Base64;
-import org.apache.maven.surefire.util.internal.WritableBufferedByteChannel;
+import org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel;
 
 import javax.annotation.Nonnull;
 import java.io.IOException;
@@ -42,30 +42,30 @@
 import static java.nio.charset.StandardCharsets.US_ASCII;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.Objects.requireNonNull;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_BYE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_DEBUG;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_ERROR;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_INFO;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_WARNING;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_JVM_EXIT_ERROR;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_NEXT_TEST;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDERR;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDERR_NEW_LINE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDOUT;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STDOUT_NEW_LINE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_STOP_ON_NEXT_TEST;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_SYSPROPS;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_COMPLETED;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_STARTING;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_ASSUMPTIONFAILURE;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_ERROR;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_FAILED;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_SKIPPED;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_STARTING;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_TEST_SUCCEEDED;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.MAGIC_NUMBER;
-import static org.apache.maven.surefire.report.RunMode.NORMAL_RUN;
-import static org.apache.maven.surefire.report.RunMode.RERUN_TEST_AFTER_FAILURE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_BYE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_DEBUG;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_ERROR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_INFO;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_CONSOLE_WARNING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_JVM_EXIT_ERROR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDERR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDERR_NEW_LINE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDOUT;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STDOUT_NEW_LINE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_STOP_ON_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_SYSPROPS;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_COMPLETED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TESTSET_STARTING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_ASSUMPTIONFAILURE;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_ERROR;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_FAILED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_SKIPPED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_STARTING;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_TEST_SUCCEEDED;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.MAGIC_NUMBER;
+import static org.apache.maven.surefire.api.report.RunMode.NORMAL_RUN;
+import static org.apache.maven.surefire.api.report.RunMode.RERUN_TEST_AFTER_FAILURE;
 
 /**
  * magic number : opcode : run mode [: opcode specific data]*
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelProcessorFactory.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelProcessorFactory.java
index c09516b..1344f3d 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelProcessorFactory.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelProcessorFactory.java
@@ -19,14 +19,14 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.MasterProcessChannelDecoder;
-import org.apache.maven.surefire.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
 import org.apache.maven.surefire.spi.MasterProcessChannelProcessorFactory;
 
 import java.io.IOException;
 import java.net.MalformedURLException;
 
-import static org.apache.maven.surefire.util.internal.Channels.newBufferedChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
 
 /**
  * Producer of encoder and decoder for process pipes.
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/SurefireMasterProcessChannelProcessorFactory.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/SurefireMasterProcessChannelProcessorFactory.java
index 6f52756..f27aa0c 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/SurefireMasterProcessChannelProcessorFactory.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/spi/SurefireMasterProcessChannelProcessorFactory.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.MasterProcessChannelDecoder;
-import org.apache.maven.surefire.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
 import org.apache.maven.surefire.spi.MasterProcessChannelProcessorFactory;
 
 import java.io.IOException;
@@ -37,10 +37,10 @@
 import static java.net.StandardSocketOptions.TCP_NODELAY;
 import static java.nio.channels.AsynchronousChannelGroup.withFixedThreadPool;
 import static java.nio.channels.AsynchronousSocketChannel.open;
-import static org.apache.maven.surefire.util.internal.Channels.newBufferedChannel;
-import static org.apache.maven.surefire.util.internal.Channels.newInputStream;
-import static org.apache.maven.surefire.util.internal.Channels.newOutputStream;
-import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
+import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newInputStream;
+import static org.apache.maven.surefire.api.util.internal.Channels.newOutputStream;
+import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
 
 /**
  * Producer of TCP/IP encoder and decoder.
diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/CommandReaderTest.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/CommandReaderTest.java
index 1c85048..5bc5ffe 100644
--- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/CommandReaderTest.java
+++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/CommandReaderTest.java
@@ -21,10 +21,12 @@
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
 import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.Shutdown;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelDecoder;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.internal.WritableBufferedByteChannel;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -43,8 +45,8 @@
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
 
-import static org.apache.maven.surefire.util.internal.Channels.newBufferedChannel;
-import static org.apache.maven.surefire.util.internal.Channels.newChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newChannel;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/Foo.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/Foo.java
index 1f96fbf..e548327 100644
--- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/Foo.java
+++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/Foo.java
@@ -20,12 +20,14 @@
  */
 
 import java.util.Map;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestRequest;
+
+import org.apache.maven.surefire.api.booter.BaseProviderFactory;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestRequest;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/ForkedBooterMockTest.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/ForkedBooterMockTest.java
index 4a3690e..11a3df2 100644
--- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/ForkedBooterMockTest.java
+++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/ForkedBooterMockTest.java
@@ -19,11 +19,13 @@
  * under the License.
  */
 
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelDecoder;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder;
 import org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelProcessorFactory;
 import org.apache.maven.surefire.booter.spi.SurefireMasterProcessChannelProcessorFactory;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.apache.maven.surefire.shared.utils.cli.ShutdownHookUtils;
 import org.apache.maven.surefire.spi.MasterProcessChannelProcessorFactory;
 import org.junit.Rule;
diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/IsolatedClassLoaderTest.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/IsolatedClassLoaderTest.java
index b424526..9b93e52 100644
--- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/IsolatedClassLoaderTest.java
+++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/IsolatedClassLoaderTest.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.shared.utils.io.FileUtils;
-import org.apache.maven.surefire.providerapi.AbstractProvider;
+import org.apache.maven.surefire.api.provider.AbstractProvider;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -63,4 +63,4 @@
         assertThat( isolatedClass.getName(), is( AbstractProvider.class.getName() ) );
         assertThat( isolatedClass, is( not( (Class) AbstractProvider.class ) ) );
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
index 9f7372d..d236d6a 100644
--- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
+++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
@@ -20,18 +20,19 @@
  */
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.providerapi.SurefireProvider;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.DirectoryScannerParameters;
-import org.apache.maven.surefire.testset.RunOrderParameters;
-import org.apache.maven.surefire.testset.TestArtifactInfo;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.util.RunOrder;
+import org.apache.maven.surefire.api.booter.BaseProviderFactory;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.provider.SurefireProvider;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
+import org.apache.maven.surefire.api.testset.RunOrderParameters;
+import org.apache.maven.surefire.api.testset.TestArtifactInfo;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.util.RunOrder;
 
 import java.io.File;
 import java.lang.reflect.Method;
@@ -40,8 +41,8 @@
 import java.util.HashMap;
 
 import static java.util.Arrays.asList;
-import static org.apache.maven.surefire.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
-import static org.apache.maven.surefire.cli.CommandLineOption.SHOW_ERRORS;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.SHOW_ERRORS;
 
 /**
  *
diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelDecoderTest.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelDecoderTest.java
index 029b7ba..4c0fb5b 100644
--- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelDecoderTest.java
+++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelDecoderTest.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.booter.Shutdown;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.booter.Shutdown;
 import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
@@ -29,15 +29,15 @@
 import java.io.InputStream;
 
 import static java.nio.channels.Channels.newChannel;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.BYE_ACK;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.NOOP;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.RUN_CLASS;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SHUTDOWN;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.SKIP_SINCE_NEXT_TEST;
-import static org.apache.maven.surefire.booter.MasterProcessCommand.TEST_SET_FINISHED;
-import static org.apache.maven.surefire.booter.Shutdown.DEFAULT;
-import static org.apache.maven.surefire.booter.Shutdown.EXIT;
-import static org.apache.maven.surefire.booter.Shutdown.KILL;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.BYE_ACK;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.NOOP;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.RUN_CLASS;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SHUTDOWN;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.SKIP_SINCE_NEXT_TEST;
+import static org.apache.maven.surefire.api.booter.MasterProcessCommand.TEST_SET_FINISHED;
+import static org.apache.maven.surefire.api.booter.Shutdown.DEFAULT;
+import static org.apache.maven.surefire.api.booter.Shutdown.EXIT;
+import static org.apache.maven.surefire.api.booter.Shutdown.KILL;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoderTest.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoderTest.java
index 761e30f..d800e53 100644
--- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoderTest.java
+++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/spi/LegacyMasterProcessChannelEncoderTest.java
@@ -19,11 +19,11 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.SafeThrowable;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.util.internal.ObjectUtils;
-import org.apache.maven.surefire.util.internal.WritableBufferedByteChannel;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.util.internal.ObjectUtils;
+import org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel;
 import org.junit.Test;
 
 import java.io.ByteArrayOutputStream;
@@ -37,16 +37,16 @@
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.Arrays.copyOfRange;
-import static org.apache.maven.surefire.util.internal.Channels.newBufferedChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
 import static org.apache.maven.surefire.shared.codec.binary.Base64.encodeBase64String;
 import static org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder.encode;
 import static org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder.encodeHeader;
 import static org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder.encodeMessage;
 import static org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder.encodeOpcode;
 import static org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelEncoder.toBase64;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.BOOTERCODE_SYSPROPS;
-import static org.apache.maven.surefire.booter.ForkedProcessEventType.MAGIC_NUMBER;
-import static org.apache.maven.surefire.report.RunMode.NORMAL_RUN;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.BOOTERCODE_SYSPROPS;
+import static org.apache.maven.surefire.api.booter.ForkedProcessEventType.MAGIC_NUMBER;
+import static org.apache.maven.surefire.api.report.RunMode.NORMAL_RUN;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/CommandReader.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/CommandReader.java
index 08fe5ed..32cb3a2 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/CommandReader.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/CommandReader.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
+import org.apache.maven.surefire.api.booter.Command;
 
 import java.io.Closeable;
 import java.io.IOException;
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/ConsoleOutputReportEventListener.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/ConsoleOutputReportEventListener.java
index 2b1e090..e165ebd 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/ConsoleOutputReportEventListener.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/ConsoleOutputReportEventListener.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 /**
  * Extension listener for logger.
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/ForkChannel.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/ForkChannel.java
index 4b24bb6..3959970 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/ForkChannel.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/ForkChannel.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.eventapi.Event;
+import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
 
 import javax.annotation.Nonnull;
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReportEventListener.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReportEventListener.java
index 3187802..20eda3b 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReportEventListener.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReportEventListener.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 /**
  * Creates a report upon handled event "<em>testSetCompleted</em>".
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReporter.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReporter.java
index b02240a..effb7de 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReporter.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReporter.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank;
 
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoConsoleReportEventListener.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoConsoleReportEventListener.java
index f01acff..e894a41 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoConsoleReportEventListener.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoConsoleReportEventListener.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.util.List;
 
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoFileReportEventListener.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoFileReportEventListener.java
index 91e460a..1eeb672 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoFileReportEventListener.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoFileReportEventListener.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.io.File;
 import java.nio.charset.Charset;
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporter.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporter.java
index ca10944..3bd899c 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporter.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporter.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.io.File;
 import java.nio.charset.Charset;
diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/util/CommandlineStreams.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/util/CommandlineStreams.java
index ddc43ea..315720e 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/util/CommandlineStreams.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/util/CommandlineStreams.java
@@ -28,7 +28,7 @@
 import java.nio.channels.ReadableByteChannel;
 import java.nio.channels.WritableByteChannel;
 
-import static org.apache.maven.surefire.util.internal.Channels.newBufferedChannel;
+import static org.apache.maven.surefire.api.util.internal.Channels.newBufferedChannel;
 
 /**
  *
diff --git a/surefire-extensions-spi/src/main/java/org/apache/maven/surefire/spi/MasterProcessChannelProcessorFactory.java b/surefire-extensions-spi/src/main/java/org/apache/maven/surefire/spi/MasterProcessChannelProcessorFactory.java
index c1c5c3c..93b61e5 100644
--- a/surefire-extensions-spi/src/main/java/org/apache/maven/surefire/spi/MasterProcessChannelProcessorFactory.java
+++ b/surefire-extensions-spi/src/main/java/org/apache/maven/surefire/spi/MasterProcessChannelProcessorFactory.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.MasterProcessChannelDecoder;
-import org.apache.maven.surefire.booter.MasterProcessChannelEncoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder;
+import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
 
 import java.io.Closeable;
 import java.io.IOException;
diff --git a/surefire-its/src/test/resources/surefire-1396-pluggableproviders-classpath-provider/src/main/java/org/apache/maven/surefire/testprovider/ClassPathTestProvider.java b/surefire-its/src/test/resources/surefire-1396-pluggableproviders-classpath-provider/src/main/java/org/apache/maven/surefire/testprovider/ClassPathTestProvider.java
index 2a15e17..5d9d448 100644
--- a/surefire-its/src/test/resources/surefire-1396-pluggableproviders-classpath-provider/src/main/java/org/apache/maven/surefire/testprovider/ClassPathTestProvider.java
+++ b/surefire-its/src/test/resources/surefire-1396-pluggableproviders-classpath-provider/src/main/java/org/apache/maven/surefire/testprovider/ClassPathTestProvider.java
@@ -23,11 +23,11 @@
 import java.util.Collections;
 import java.util.Map.Entry;
 
-import org.apache.maven.surefire.providerapi.AbstractProvider;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.provider.AbstractProvider;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ReporterException;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * @author Jonathan Bell
diff --git a/surefire-its/src/test/resources/surefire-1396-pluggableproviders-classpath-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-its/src/test/resources/surefire-1396-pluggableproviders-classpath-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
similarity index 100%
rename from surefire-its/src/test/resources/surefire-1396-pluggableproviders-classpath-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
rename to surefire-its/src/test/resources/surefire-1396-pluggableproviders-classpath-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
diff --git a/surefire-its/src/test/resources/surefire-141-pluggableproviders-provider/src/main/java/org/apache/maven/surefire/testprovider/TestProvider.java b/surefire-its/src/test/resources/surefire-141-pluggableproviders-provider/src/main/java/org/apache/maven/surefire/testprovider/TestProvider.java
index 79b2ceb..85a1f14 100644
--- a/surefire-its/src/test/resources/surefire-141-pluggableproviders-provider/src/main/java/org/apache/maven/surefire/testprovider/TestProvider.java
+++ b/surefire-its/src/test/resources/surefire-141-pluggableproviders-provider/src/main/java/org/apache/maven/surefire/testprovider/TestProvider.java
@@ -19,11 +19,11 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.providerapi.AbstractProvider;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.provider.AbstractProvider;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ReporterException;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-its/src/test/resources/surefire-141-pluggableproviders-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-its/src/test/resources/surefire-141-pluggableproviders-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
similarity index 100%
rename from surefire-its/src/test/resources/surefire-141-pluggableproviders-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
rename to surefire-its/src/test/resources/surefire-141-pluggableproviders-provider/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
diff --git a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
index 2f369e8..d6d9703 100644
--- a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
+++ b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/PojoStackTraceWriter.java
@@ -20,7 +20,9 @@
  */
 
 
-import org.apache.maven.surefire.util.internal.StringUtils;
+import org.apache.maven.surefire.api.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.util.internal.StringUtils;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -32,7 +34,7 @@
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  */
 public class PojoStackTraceWriter
-    implements StackTraceWriter
+        implements StackTraceWriter
 {
     private final Throwable t;
 
diff --git a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
index 2fd0f83..80d8e79 100644
--- a/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
+++ b/surefire-providers/common-java5/src/main/java/org/apache/maven/surefire/report/SmartStackTraceParser.java
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import org.apache.maven.surefire.api.report.SafeThrowable;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/RunnableTestClass1.java b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/RunnableTestClass1.java
index 2d236d6..9c72a6e 100644
--- a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/RunnableTestClass1.java
+++ b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/RunnableTestClass1.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
diff --git a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
index 593a8c2..f64a32a 100644
--- a/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
+++ b/surefire-providers/common-java5/src/test/java/org/apache/maven/surefire/report/SmartStackTraceParserTest.java
@@ -27,7 +27,7 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.ComparisonFailure;
 import junit.framework.TestCase;
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 
 import static org.apache.maven.surefire.report.SmartStackTraceParser.findTopmostWithClass;
 import static org.apache.maven.surefire.report.SmartStackTraceParser.focusInsideClass;
diff --git a/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3Reflector.java b/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3Reflector.java
index 85768d9..ec55459 100644
--- a/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3Reflector.java
+++ b/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3Reflector.java
@@ -23,7 +23,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
-import org.apache.maven.surefire.util.ReflectionUtils;
+import org.apache.maven.surefire.api.util.ReflectionUtils;
 
 /**
  * Reflection facade for JUnit3 classes
diff --git a/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3TestChecker.java b/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3TestChecker.java
index a231d82..4feeb3c 100644
--- a/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3TestChecker.java
+++ b/surefire-providers/common-junit3/src/main/java/org/apache/maven/surefire/common/junit3/JUnit3TestChecker.java
@@ -20,13 +20,13 @@
  */
 
 import java.lang.reflect.Method;
-import org.apache.maven.surefire.NonAbstractClassFilter;
-import org.apache.maven.surefire.util.ScannerFilter;
+import org.apache.maven.surefire.api.filter.NonAbstractClassFilter;
+import org.apache.maven.surefire.api.util.ScannerFilter;
 
 import static java.lang.reflect.Modifier.isPublic;
 import static java.lang.reflect.Modifier.isStatic;
-import static org.apache.maven.surefire.util.ReflectionUtils.tryGetMethod;
-import static org.apache.maven.surefire.util.ReflectionUtils.tryLoadClass;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.tryGetMethod;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.tryLoadClass;
 
 /**
  * Missing tests ? This class is basically a subset of the JUnit4TestChecker, which is tested
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4ProviderUtil.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4ProviderUtil.java
index 702ee7f..520685d 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4ProviderUtil.java
+++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4ProviderUtil.java
@@ -24,13 +24,13 @@
 import java.util.List;
 import java.util.Set;
 
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 import org.junit.runner.Description;
 import org.junit.runner.manipulation.Filter;
 import org.junit.runner.notification.Failure;
 
-import static org.apache.maven.surefire.util.internal.TestClassMethodNameUtils.extractClassName;
-import static org.apache.maven.surefire.util.internal.TestClassMethodNameUtils.extractMethodName;
+import static org.apache.maven.surefire.api.util.internal.TestClassMethodNameUtils.extractClassName;
+import static org.apache.maven.surefire.api.util.internal.TestClassMethodNameUtils.extractMethodName;
 import static org.junit.runner.Description.TEST_MECHANISM;
 
 /**
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4Reflector.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4Reflector.java
index 9efe425..0d59b83 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4Reflector.java
+++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4Reflector.java
@@ -25,9 +25,9 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 
-import static org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray;
-import static org.apache.maven.surefire.util.ReflectionUtils.getMethod;
-import static org.apache.maven.surefire.util.ReflectionUtils.tryGetMethod;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWithArray;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.getMethod;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.tryGetMethod;
 
 /**
  * JUnit4 reflection helper
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
index c4a7991..7f4e97e 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
+++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
@@ -19,12 +19,12 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 import org.junit.runner.Description;
 import org.junit.runner.Result;
 import org.junit.runner.notification.Failure;
@@ -32,9 +32,9 @@
 import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.isFailureInsideJUnitItself;
 import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.toClassMethod;
 import static org.apache.maven.surefire.common.junit4.JUnit4Reflector.getAnnotatedIgnoreValue;
-import static org.apache.maven.surefire.report.SimpleReportEntry.assumption;
-import static org.apache.maven.surefire.report.SimpleReportEntry.ignored;
-import static org.apache.maven.surefire.report.SimpleReportEntry.withException;
+import static org.apache.maven.surefire.api.report.SimpleReportEntry.assumption;
+import static org.apache.maven.surefire.api.report.SimpleReportEntry.ignored;
+import static org.apache.maven.surefire.api.report.SimpleReportEntry.withException;
 
 /**
  * RunListener for JUnit4, delegates to our own RunListener
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerFactory.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerFactory.java
index 794c448..f1f54e0 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerFactory.java
+++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerFactory.java
@@ -22,7 +22,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.maven.surefire.util.ReflectionUtils;
+import org.apache.maven.surefire.api.util.ReflectionUtils;
 
 import org.junit.runner.notification.RunListener;
 
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
index f60a30d..76a3b61 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
+++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4StackTraceWriter.java
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.SafeThrowable;
+import org.apache.maven.surefire.api.report.SafeThrowable;
 import org.apache.maven.surefire.report.SmartStackTraceParser;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 import org.junit.runner.notification.Failure;
 
 import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.toClassMethod;
@@ -90,7 +90,7 @@
     /**
      * At the moment, returns the same as {@link #writeTraceToString()}.
      *
-     * @see org.apache.maven.surefire.report.StackTraceWriter#writeTrimmedTraceToString()
+     * @see StackTraceWriter#writeTrimmedTraceToString()
      */
     @Override
     public String writeTrimmedTraceToString()
@@ -110,7 +110,7 @@
     /**
      * Returns the exception associated with this failure.
      *
-     * @see org.apache.maven.surefire.report.StackTraceWriter#getThrowable()
+     * @see StackTraceWriter#getThrowable()
      */
     @Override
     public SafeThrowable getThrowable()
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4TestChecker.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4TestChecker.java
index 49afaa7..f746cf6 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4TestChecker.java
+++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4TestChecker.java
@@ -21,11 +21,11 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
-import org.apache.maven.surefire.NonAbstractClassFilter;
+import org.apache.maven.surefire.api.filter.NonAbstractClassFilter;
 import org.apache.maven.surefire.common.junit3.JUnit3TestChecker;
-import org.apache.maven.surefire.util.ScannerFilter;
+import org.apache.maven.surefire.api.util.ScannerFilter;
 
-import static org.apache.maven.surefire.util.ReflectionUtils.tryLoadClass;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.tryLoadClass;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/Notifier.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/Notifier.java
index de0ddc4..ab70395 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/Notifier.java
+++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/Notifier.java
@@ -33,7 +33,7 @@
 import java.util.concurrent.atomic.AtomicInteger;
 
 import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.toClassMethod;
-import static org.apache.maven.surefire.util.internal.ConcurrencyUtils.countDownToZero;
+import static org.apache.maven.surefire.api.util.internal.ConcurrencyUtils.countDownToZero;
 
 /**
  * Extends {@link RunNotifier JUnit notifier},
diff --git a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4ProviderUtilTest.java b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4ProviderUtilTest.java
index 9431b0e..060c3d2 100644
--- a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4ProviderUtilTest.java
+++ b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4ProviderUtilTest.java
@@ -20,7 +20,7 @@
  */
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 import org.junit.runner.Description;
 import org.junit.runner.notification.Failure;
 
diff --git a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerTest.java b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerTest.java
index 33bc4b8..2e5aad9 100644
--- a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerTest.java
+++ b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/JUnit4RunListenerTest.java
@@ -22,10 +22,9 @@
 import java.util.concurrent.CountDownLatch;
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.junit4.MockReporter;
 
 import junit.framework.Assert;
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 import org.junit.Test;
 import org.junit.runner.Description;
 import org.junit.runner.Request;
@@ -41,7 +40,6 @@
     extends TestCase
 {
     public void testTestStarted()
-        throws Exception
     {
         RunListener jUnit4TestSetReporter = new JUnit4RunListener( new MockReporter() );
         Runner junitTestRunner = Request.classes( "abc", STest1.class, STest2.class ).getRunner();
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java
similarity index 75%
copy from surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java
copy to surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java
index 6f93ae5..39947fc 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java
+++ b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.junit4;
+package org.apache.maven.surefire.common.junit4;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,31 +19,32 @@
  * under the License.
  */
 
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.TestSetReportEntry;
-import org.apache.maven.surefire.report.RunMode;
 
 /**
  * Internal tests use only.
  */
-public class MockReporter
+final class MockReporter
     implements RunListener
 {
     private final List<String> events = new ArrayList<>();
 
-    public static final String SET_STARTED = "SET_STARTED";
+    private static final String SET_STARTED = "SET_STARTED";
 
-    public static final String SET_COMPLETED = "SET_COMPLETED";
+    private static final String SET_COMPLETED = "SET_COMPLETED";
 
-    public static final String TEST_STARTED = "TEST_STARTED";
+    private static final String TEST_STARTED = "TEST_STARTED";
 
-    public static final String TEST_COMPLETED = "TEST_COMPLETED";
+    private static final String TEST_COMPLETED = "TEST_COMPLETED";
 
-    public static final String TEST_SKIPPED = "TEST_SKIPPED";
+    private static final String TEST_SKIPPED = "TEST_SKIPPED";
 
     private final AtomicInteger testSucceeded = new AtomicInteger();
 
@@ -53,7 +54,7 @@
 
     private final AtomicInteger testError = new AtomicInteger();
 
-    public MockReporter()
+    MockReporter()
     {
     }
 
@@ -100,11 +101,6 @@
         return null;
     }
 
-    public void testSkippedByUser( ReportEntry report )
-    {
-        testSkipped( report );
-    }
-
     public int getTestSucceeded()
     {
         return testSucceeded.get();
@@ -131,9 +127,4 @@
     public void testAssumptionFailure( ReportEntry report )
     {
     }
-
-    public boolean containsNotification( String event )
-    {
-        return events.contains( event );
-    }
 }
diff --git a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4TestCheckerTest.java b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4TestCheckerTest.java
index d7b0eae..07f90ab 100644
--- a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4TestCheckerTest.java
+++ b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4TestCheckerTest.java
@@ -22,7 +22,7 @@
 import java.util.Collections;
 import java.util.Set;
 import org.apache.maven.surefire.common.junit4.JUnit4TestChecker;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import junit.framework.TestCase;
 import junit.framework.TestResult;
diff --git a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
index 8ded759..c532404 100644
--- a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
+++ b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/FilterFactory.java
@@ -19,18 +19,19 @@
  * under the License.
  */
 
+import org.apache.maven.surefire.api.booter.ProviderParameterNames;
 import org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil;
 import org.apache.maven.surefire.group.match.GroupMatcher;
 import org.apache.maven.surefire.group.parse.GroupMatcherParser;
 import org.apache.maven.surefire.group.parse.ParseException;
-import org.apache.maven.surefire.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.junit.runner.Description;
 import org.junit.runner.manipulation.Filter;
 
 import java.util.Map;
 
-import static org.apache.maven.surefire.booter.ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP;
-import static org.apache.maven.surefire.booter.ProviderParameterNames.TESTNG_GROUPS_PROP;
+import static org.apache.maven.surefire.api.booter.ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP;
+import static org.apache.maven.surefire.api.booter.ProviderParameterNames.TESTNG_GROUPS_PROP;
 import static org.apache.maven.surefire.shared.utils.StringUtils.isNotBlank;
 
 /**
@@ -47,8 +48,8 @@
 
     /**
      * @return {@code true} if non-blank
-     * {@link org.apache.maven.surefire.booter.ProviderParameterNames#TESTNG_GROUPS_PROP} and/or
-     * {@link org.apache.maven.surefire.booter.ProviderParameterNames#TESTNG_EXCLUDEDGROUPS_PROP} exists.
+     * {@link ProviderParameterNames#TESTNG_GROUPS_PROP} and/or
+     * {@link ProviderParameterNames#TESTNG_EXCLUDEDGROUPS_PROP} exists.
      */
     public boolean canCreateGroupFilter( Map<String, String> providerProperties )
     {
@@ -59,8 +60,8 @@
 
     /**
      * Creates filter using he key
-     * {@link org.apache.maven.surefire.booter.ProviderParameterNames#TESTNG_GROUPS_PROP} and/or
-     * {@link org.apache.maven.surefire.booter.ProviderParameterNames#TESTNG_EXCLUDEDGROUPS_PROP}.
+     * {@link ProviderParameterNames#TESTNG_GROUPS_PROP} and/or
+     * {@link ProviderParameterNames#TESTNG_EXCLUDEDGROUPS_PROP}.
      */
     public Filter createGroupFilter( Map<String, String> providerProperties )
     {
diff --git a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/JUnit48Reflector.java b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/JUnit48Reflector.java
index d7f9583..3d57455 100644
--- a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/JUnit48Reflector.java
+++ b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/JUnit48Reflector.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import static org.apache.maven.surefire.util.ReflectionUtils.tryLoadClass;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.tryLoadClass;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/JUnit48TestChecker.java b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/JUnit48TestChecker.java
index ab475cc..67b2d17 100644
--- a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/JUnit48TestChecker.java
+++ b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/JUnit48TestChecker.java
@@ -20,9 +20,9 @@
  */
 
 
-import org.apache.maven.surefire.NonAbstractClassFilter;
+import org.apache.maven.surefire.api.filter.NonAbstractClassFilter;
 import org.apache.maven.surefire.common.junit4.JUnit4TestChecker;
-import org.apache.maven.surefire.util.ScannerFilter;
+import org.apache.maven.surefire.api.util.ScannerFilter;
 import org.junit.experimental.runners.Enclosed;
 
 
diff --git a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java
index 1cc3b62..5d158ba 100644
--- a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java
+++ b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/MethodFilter.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.ResolvedTest;
-import org.apache.maven.surefire.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.ResolvedTest;
+import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.junit.runner.Description;
 import org.junit.runner.manipulation.Filter;
 
diff --git a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java
index 52c2d52..0d481d1 100644
--- a/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java
+++ b/surefire-providers/common-junit48/src/main/java/org/apache/maven/surefire/common/junit48/RequestedTest.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.ResolvedTest;
+import org.apache.maven.surefire.api.testset.ResolvedTest;
 import org.junit.runner.Description;
 import org.junit.runner.manipulation.Filter;
 
diff --git a/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java
index 4d16da7..f3c41ef 100644
--- a/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java
+++ b/surefire-providers/common-junit48/src/test/java/org/apache/maven/surefire/common/junit48/FilterFactoryTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.maven.shared.utils.io.MatchPatterns;
 import org.apache.maven.surefire.common.junit48.tests.pt.PT;
-import org.apache.maven.surefire.testset.ResolvedTest;
-import org.apache.maven.surefire.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.ResolvedTest;
+import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.junit.Test;
 import org.junit.runner.Description;
 import org.junit.runner.JUnitCore;
diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
index eb6ae6b..5bd3ee4 100644
--- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
+++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
@@ -25,10 +25,10 @@
 import static java.util.Optional.of;
 import static java.util.logging.Level.WARNING;
 import static java.util.stream.Collectors.toList;
-import static org.apache.maven.surefire.booter.ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP;
-import static org.apache.maven.surefire.booter.ProviderParameterNames.TESTNG_GROUPS_PROP;
-import static org.apache.maven.surefire.report.ConsoleOutputCapture.startCapture;
-import static org.apache.maven.surefire.util.TestsToRun.fromClass;
+import static org.apache.maven.surefire.api.booter.ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP;
+import static org.apache.maven.surefire.api.booter.ProviderParameterNames.TESTNG_GROUPS_PROP;
+import static org.apache.maven.surefire.api.report.ConsoleOutputCapture.startCapture;
+import static org.apache.maven.surefire.api.util.TestsToRun.fromClass;
 import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank;
 import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass;
 import static org.junit.platform.engine.discovery.DiscoverySelectors.selectUniqueId;
@@ -46,17 +46,17 @@
 import java.util.Properties;
 import java.util.logging.Logger;
 
-import org.apache.maven.surefire.providerapi.AbstractProvider;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.ScanResult;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.provider.AbstractProvider;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ReporterException;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.ScanResult;
+import org.apache.maven.surefire.api.util.TestsToRun;
 import org.apache.maven.surefire.shared.utils.StringUtils;
 import org.junit.platform.engine.DiscoverySelector;
 import org.junit.platform.engine.Filter;
diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java
index 870c392..31c010a 100644
--- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java
+++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java
@@ -21,7 +21,7 @@
 
 import static java.util.Collections.emptyMap;
 import static java.util.stream.Collectors.joining;
-import static org.apache.maven.surefire.util.internal.ObjectUtils.systemProps;
+import static org.apache.maven.surefire.api.util.internal.ObjectUtils.systemProps;
 import static org.junit.platform.engine.TestExecutionResult.Status.FAILED;
 
 import java.util.Map;
@@ -32,9 +32,9 @@
 import java.util.regex.Pattern;
 
 import org.apache.maven.surefire.report.PojoStackTraceWriter;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.junit.platform.engine.TestExecutionResult;
 import org.junit.platform.engine.TestSource;
 import org.junit.platform.engine.support.descriptor.ClassSource;
diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestMethodFilter.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestMethodFilter.java
index 932c5ed..d766ffd 100644
--- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestMethodFilter.java
+++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestMethodFilter.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.junit.platform.engine.FilterResult;
 import org.junit.platform.engine.TestDescriptor;
 import org.junit.platform.engine.support.descriptor.MethodSource;
diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilter.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilter.java
index 891676b..90b5236 100644
--- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilter.java
+++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilter.java
@@ -22,7 +22,7 @@
 import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass;
 import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.request;
 
-import org.apache.maven.surefire.util.ScannerFilter;
+import org.apache.maven.surefire.api.util.ScannerFilter;
 import org.junit.platform.engine.Filter;
 import org.junit.platform.launcher.Launcher;
 import org.junit.platform.launcher.LauncherDiscoveryRequest;
diff --git a/surefire-providers/surefire-junit-platform/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-providers/surefire-junit-platform/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
similarity index 100%
rename from surefire-providers/surefire-junit-platform/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
rename to surefire-providers/surefire-junit-platform/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java
index c3fe7c5..5064285 100644
--- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java
+++ b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java
@@ -22,8 +22,8 @@
 import static java.util.Collections.emptyMap;
 import static java.util.Collections.singletonMap;
 import static java.util.stream.Collectors.toSet;
-import static org.apache.maven.surefire.booter.ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP;
-import static org.apache.maven.surefire.booter.ProviderParameterNames.TESTNG_GROUPS_PROP;
+import static org.apache.maven.surefire.api.booter.ProviderParameterNames.TESTNG_EXCLUDEDGROUPS_PROP;
+import static org.apache.maven.surefire.api.booter.ProviderParameterNames.TESTNG_GROUPS_PROP;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
@@ -52,19 +52,19 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.TestSetReportEntry;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.RunOrderCalculator;
-import org.apache.maven.surefire.util.ScanResult;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.RunOrderCalculator;
+import org.apache.maven.surefire.api.util.ScanResult;
+import org.apache.maven.surefire.api.util.TestsToRun;
 import org.fest.assertions.Assertions;
 import org.junit.Test;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java
index 58893be..bf68214 100644
--- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java
+++ b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java
@@ -46,10 +46,10 @@
 import java.util.Optional;
 
 import org.apache.maven.surefire.report.PojoStackTraceWriter;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.jupiter.api.DisplayName;
diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/TestMethodFilterTest.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/TestMethodFilterTest.java
index a03d58b..33f14e9 100644
--- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/TestMethodFilterTest.java
+++ b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/TestMethodFilterTest.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import static org.apache.maven.surefire.testset.TestListResolver.toClassFileName;
+import static org.apache.maven.surefire.api.testset.TestListResolver.toClassFileName;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
@@ -27,7 +27,7 @@
 
 import java.lang.reflect.Method;
 
-import org.apache.maven.surefire.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.junit.Test;
 import org.junit.jupiter.engine.descriptor.ClassTestDescriptor;
 import org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor;
diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
index e625888..f7c2c0c 100644
--- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
+++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
@@ -21,24 +21,24 @@
 
 import org.apache.maven.surefire.common.junit3.JUnit3Reflector;
 import org.apache.maven.surefire.common.junit3.JUnit3TestChecker;
-import org.apache.maven.surefire.providerapi.AbstractProvider;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ConsoleOutputCapture;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.TestSetReportEntry;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.ReflectionUtils;
-import org.apache.maven.surefire.util.RunOrderCalculator;
-import org.apache.maven.surefire.util.ScanResult;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.provider.AbstractProvider;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ConsoleOutputCapture;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.ReflectionUtils;
+import org.apache.maven.surefire.api.util.RunOrderCalculator;
+import org.apache.maven.surefire.api.util.ScanResult;
+import org.apache.maven.surefire.api.util.TestsToRun;
 
 import java.util.Map;
 
-import static org.apache.maven.surefire.util.internal.ObjectUtils.systemProps;
+import static org.apache.maven.surefire.api.util.internal.ObjectUtils.systemProps;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
index df08602..03ef5b0 100644
--- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
+++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
@@ -23,8 +23,8 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import org.apache.maven.surefire.common.junit3.JUnit3Reflector;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * JUnit3 test set
diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoAndJUnit3Checker.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoAndJUnit3Checker.java
index e9debce..021a576 100644
--- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoAndJUnit3Checker.java
+++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoAndJUnit3Checker.java
@@ -19,9 +19,9 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.NonAbstractClassFilter;
+import org.apache.maven.surefire.api.filter.NonAbstractClassFilter;
 import org.apache.maven.surefire.common.junit3.JUnit3TestChecker;
-import org.apache.maven.surefire.util.ScannerFilter;
+import org.apache.maven.surefire.api.util.ScannerFilter;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.java
index d0dab06..8dd6501 100644
--- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.java
+++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.java
@@ -24,13 +24,13 @@
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collection;
-import org.apache.maven.surefire.report.LegacyPojoStackTraceWriter;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.LegacyPojoStackTraceWriter;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
-import static org.apache.maven.surefire.report.SimpleReportEntry.withException;
+import static org.apache.maven.surefire.api.report.SimpleReportEntry.withException;
 
 /**
  * Executes a JUnit3 test class
diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/SurefireTestSet.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/SurefireTestSet.java
index 5f089bd..4455bc9 100644
--- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/SurefireTestSet.java
+++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/SurefireTestSet.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * Describes a single test set
diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java
index db0563a..219e064 100644
--- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java
+++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java
@@ -24,15 +24,15 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.surefire.report.LegacyPojoStackTraceWriter;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.LegacyPojoStackTraceWriter;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 
-import static org.apache.maven.surefire.report.SimpleReportEntry.withException;
-import static org.apache.maven.surefire.util.internal.TestClassMethodNameUtils.extractClassName;
-import static org.apache.maven.surefire.util.internal.TestClassMethodNameUtils.extractMethodName;
+import static org.apache.maven.surefire.api.report.SimpleReportEntry.withException;
+import static org.apache.maven.surefire.api.util.internal.TestClassMethodNameUtils.extractClassName;
+import static org.apache.maven.surefire.api.util.internal.TestClassMethodNameUtils.extractMethodName;
 
 /**
  * Invocation Handler for TestListener proxies to delegate to our {@link RunListener}
diff --git a/surefire-providers/surefire-junit3/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-providers/surefire-junit3/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
similarity index 100%
rename from surefire-providers/surefire-junit3/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
rename to surefire-providers/surefire-junit3/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
diff --git a/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/surefire/junit/JUnitTestSetTest.java b/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/surefire/junit/JUnitTestSetTest.java
index f8d4ba7..594dcc5 100644
--- a/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/surefire/junit/JUnitTestSetTest.java
+++ b/surefire-providers/surefire-junit3/src/test/java/org/apache/maven/surefire/junit/JUnitTestSetTest.java
@@ -23,10 +23,10 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 import org.apache.maven.surefire.common.junit3.JUnit3Reflector;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
index 9e5efad..3f4b095 100644
--- a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
+++ b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
@@ -19,27 +19,27 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.providerapi.CommandChainReader;
-import org.apache.maven.surefire.providerapi.CommandListener;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.provider.CommandChainReader;
+import org.apache.maven.surefire.api.provider.CommandListener;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4TestChecker;
 import org.apache.maven.surefire.common.junit4.JUnitTestFailureListener;
 import org.apache.maven.surefire.common.junit4.Notifier;
-import org.apache.maven.surefire.providerapi.AbstractProvider;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.provider.AbstractProvider;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.report.PojoStackTraceWriter;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.RunOrderCalculator;
-import org.apache.maven.surefire.util.ScanResult;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.RunOrderCalculator;
+import org.apache.maven.surefire.api.util.ScanResult;
+import org.apache.maven.surefire.api.util.TestsToRun;
 import org.junit.runner.Description;
 import org.junit.runner.Request;
 import org.junit.runner.Result;
@@ -60,11 +60,11 @@
 import static org.apache.maven.surefire.common.junit4.JUnit4RunListener.rethrowAnyTestMechanismFailures;
 import static org.apache.maven.surefire.common.junit4.JUnit4RunListenerFactory.createCustomListeners;
 import static org.apache.maven.surefire.common.junit4.Notifier.pureNotifier;
-import static org.apache.maven.surefire.report.ConsoleOutputCapture.startCapture;
-import static org.apache.maven.surefire.report.SimpleReportEntry.withException;
-import static org.apache.maven.surefire.testset.TestListResolver.optionallyWildcardFilter;
-import static org.apache.maven.surefire.util.TestsToRun.fromClass;
-import static org.apache.maven.surefire.util.internal.ObjectUtils.systemProps;
+import static org.apache.maven.surefire.api.report.ConsoleOutputCapture.startCapture;
+import static org.apache.maven.surefire.api.report.SimpleReportEntry.withException;
+import static org.apache.maven.surefire.api.testset.TestListResolver.optionallyWildcardFilter;
+import static org.apache.maven.surefire.api.util.TestsToRun.fromClass;
+import static org.apache.maven.surefire.api.util.internal.ObjectUtils.systemProps;
 import static org.junit.runner.Request.aClass;
 
 /**
diff --git a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/TestResolverFilter.java b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/TestResolverFilter.java
index 72669a8..a50ec56 100644
--- a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/TestResolverFilter.java
+++ b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/TestResolverFilter.java
Binary files differ
diff --git a/surefire-providers/surefire-junit4/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-providers/surefire-junit4/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
similarity index 100%
rename from surefire-providers/surefire-junit4/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
rename to surefire-providers/surefire-junit4/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
diff --git a/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java b/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
index c03ea7e..20e2797 100644
--- a/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
+++ b/surefire-providers/surefire-junit4/src/test/java/org/apache/maven/surefire/junit4/JUnit4ProviderTest.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.BaseProviderFactory;
-import org.apache.maven.surefire.testset.TestRequest;
+import org.apache.maven.surefire.api.booter.BaseProviderFactory;
+import org.apache.maven.surefire.api.testset.TestRequest;
 import org.junit.Test;
 import org.junit.runner.Description;
 
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java
index a0ab985..73a8682 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ClassesParallelRunListener.java
@@ -21,9 +21,9 @@
 
 import java.util.Map;
 
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.runner.notification.RunListener.ThreadSafe;
 
 /**
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
index 244b83f..ce8ad88 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
@@ -20,15 +20,15 @@
  */
 
 import java.util.Map;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.RunMode;
-import org.apache.maven.surefire.report.StackTraceWriter;
-import org.apache.maven.surefire.report.TestSetReportEntry;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import static org.apache.maven.surefire.junitcore.TestMethod.getThreadTestMethod;
 
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConfigurableParallelComputer.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConfigurableParallelComputer.java
index 0c1898b..03dea04 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConfigurableParallelComputer.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConfigurableParallelComputer.java
@@ -27,7 +27,7 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
 
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 import org.junit.runner.Computer;
 import org.junit.runner.Runner;
 import org.junit.runners.ParentRunner;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCore.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCore.java
index ef1d63f..a48e1a6 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCore.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCore.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.surefire.common.junit4.Notifier;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.runner.Result;
 import org.junit.runner.Runner;
 import org.junit.runner.notification.RunListener;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.java
index 9ac3e33..adc97eb 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.java
@@ -23,7 +23,7 @@
 import java.util.Collection;
 import java.util.Map;
 
-import org.apache.maven.surefire.booter.ProviderParameterNames;
+import org.apache.maven.surefire.api.booter.ProviderParameterNames;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
index daabb60..6877b00 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
@@ -19,26 +19,26 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.providerapi.CommandChainReader;
-import org.apache.maven.surefire.providerapi.CommandListener;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.provider.CommandChainReader;
+import org.apache.maven.surefire.api.provider.CommandListener;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.JUnitTestFailureListener;
 import org.apache.maven.surefire.common.junit4.Notifier;
 import org.apache.maven.surefire.common.junit48.FilterFactory;
 import org.apache.maven.surefire.common.junit48.JUnit48Reflector;
 import org.apache.maven.surefire.common.junit48.JUnit48TestChecker;
-import org.apache.maven.surefire.providerapi.AbstractProvider;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.RunOrderCalculator;
-import org.apache.maven.surefire.util.ScanResult;
-import org.apache.maven.surefire.util.ScannerFilter;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.provider.AbstractProvider;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.RunOrderCalculator;
+import org.apache.maven.surefire.api.util.ScanResult;
+import org.apache.maven.surefire.api.util.ScannerFilter;
+import org.apache.maven.surefire.api.util.TestsToRun;
 import org.junit.runner.Description;
 import org.junit.runner.manipulation.Filter;
 
@@ -50,9 +50,9 @@
 import static org.apache.maven.surefire.common.junit4.JUnit4RunListenerFactory.createCustomListeners;
 import static org.apache.maven.surefire.common.junit4.Notifier.pureNotifier;
 import static org.apache.maven.surefire.junitcore.ConcurrentRunListener.createInstance;
-import static org.apache.maven.surefire.report.ConsoleOutputCapture.startCapture;
-import static org.apache.maven.surefire.testset.TestListResolver.optionallyWildcardFilter;
-import static org.apache.maven.surefire.util.TestsToRun.fromClass;
+import static org.apache.maven.surefire.api.report.ConsoleOutputCapture.startCapture;
+import static org.apache.maven.surefire.api.testset.TestListResolver.optionallyWildcardFilter;
+import static org.apache.maven.surefire.api.util.TestsToRun.fromClass;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java
index 03e314e..37f3759 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java
@@ -21,15 +21,15 @@
 
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4StackTraceWriter;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.junit.runner.Description;
 import org.junit.runner.Result;
 import org.junit.runner.notification.Failure;
 
 import java.util.Map;
 
-import static org.apache.maven.surefire.util.internal.TestClassMethodNameUtils.extractClassName;
+import static org.apache.maven.surefire.api.util.internal.TestClassMethodNameUtils.extractClassName;
 
 /**
  * Noteworthy things about JUnit4 listening:
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
index 656d55b..60ba470 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java
@@ -22,9 +22,9 @@
 import org.apache.maven.surefire.common.junit4.Notifier;
 import org.apache.maven.surefire.junitcore.pc.ParallelComputer;
 import org.apache.maven.surefire.junitcore.pc.ParallelComputerBuilder;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.TestsToRun;
 import org.junit.Ignore;
 import org.junit.runner.Computer;
 import org.junit.runner.Description;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java
index c75c063..cf70d17 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java
index 21dd9ed..4ca3603 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/MethodsParallelRunListener.java
@@ -21,9 +21,9 @@
 
 import java.util.Map;
 
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.runner.notification.RunListener.ThreadSafe;
 
 /**
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java
index 135ba4e..262a4ee 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java
@@ -19,13 +19,13 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.TestSetReportEntry;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.runner.Description;
 import org.junit.runner.Result;
 import org.junit.runner.notification.Failure;
@@ -34,7 +34,7 @@
 import java.util.Map;
 
 import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.toClassMethod;
-import static org.apache.maven.surefire.util.internal.ObjectUtils.systemProps;
+import static org.apache.maven.surefire.api.util.internal.ObjectUtils.systemProps;
 
 /**
  * A class to be used when there is no JUnit parallelism (methods or/and class). This allow to workaround JUnit
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java
index 846bf99..ae38976 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java
@@ -19,11 +19,11 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.CategorizedReportEntry;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ConsoleOutputReceiverForCurrentThread;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.api.report.CategorizedReportEntry;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiverForCurrentThread;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
 
 import java.util.concurrent.atomic.AtomicReference;
 
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java
index 0ffcbe3..694257e 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java
@@ -19,10 +19,10 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -31,7 +31,7 @@
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import static org.apache.maven.surefire.util.internal.ObjectUtils.systemProps;
+import static org.apache.maven.surefire.api.util.internal.ObjectUtils.systemProps;
 
 /**
  * * Represents the test-state of a testset that is run.
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java
index a308952..bad2989 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ConsoleStream;
 
 import java.util.Collection;
 import java.util.concurrent.ExecutorService;
@@ -144,4 +144,4 @@
             return false;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java
index 2301e50..f4faadc 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ConsoleStream;
 
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java
index 535011b..92a300d 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ConsoleStream;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputer.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputer.java
index aa18e0e..4d311c0 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputer.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputer.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 import org.junit.runner.Computer;
 import org.junit.runner.Description;
 
@@ -270,4 +270,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java
index 806e312..bdea2b0 100755
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java
@@ -35,9 +35,9 @@
 import java.util.concurrent.ThreadFactory;
 
 import org.apache.maven.surefire.junitcore.JUnitCoreParameters;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 import org.junit.internal.runners.ErrorReportingRunner;
 import org.junit.runner.Description;
 import org.junit.runner.Runner;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtil.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtil.java
index e70fc6f..26fc714 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtil.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtil.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.surefire.junitcore.JUnitCoreParameters;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.runner.Description;
 
 import java.util.Arrays;
@@ -394,4 +394,4 @@
     {
         return (int) Math.min( num > 0 ? num : 0, Integer.MAX_VALUE );
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java
index 8be4309..8b6e397 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ConsoleStream;
 import org.junit.runner.Description;
 import org.junit.runners.model.RunnerScheduler;
 
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java
index b3f80ba..8a997ec 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java
index d9cf83a..5c8b07b 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ConsoleStream;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java
index a577fdb..11f544c 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.ConsoleStream;
 
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -103,4 +103,4 @@
         }
         return wasRunning;
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java
index 13ff8d7..b0ea97e 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.util.internal.DaemonThreadFactory;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.util.internal.DaemonThreadFactory;
 import org.junit.runner.Description;
 import org.junit.runners.model.RunnerScheduler;
 
@@ -91,4 +91,4 @@
         ParallelComputerUtil.removeUnusedDescriptions( activeChildren );
         return activeChildren;
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-junit47/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-providers/surefire-junit47/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
similarity index 100%
rename from surefire-providers/surefire-junit47/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
rename to surefire-providers/surefire-junit47/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
index 5813ad9..8940b51 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
@@ -24,12 +24,12 @@
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.report.RunStatistics;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnit4Reflector481Test.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnit4Reflector481Test.java
index abf74be..39b1662 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnit4Reflector481Test.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnit4Reflector481Test.java
@@ -23,7 +23,7 @@
 import java.lang.reflect.Method;
 
 import org.apache.maven.surefire.common.junit4.JUnit4Reflector;
-import org.apache.maven.surefire.util.ReflectionUtils;
+import org.apache.maven.surefire.api.util.ReflectionUtils;
 
 import org.junit.Ignore;
 import org.junit.Test;
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListenerTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListenerTest.java
index 1c38794..ec71963 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListenerTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListenerTest.java
@@ -23,8 +23,6 @@
 import java.util.Iterator;
 import java.util.Map;
 
-import org.apache.maven.surefire.junit4.MockReporter;
-
 import junit.framework.TestCase;
 import org.junit.Assume;
 import org.junit.Test;
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
index 583792f..defc3a9 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
@@ -25,11 +25,11 @@
 import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
 import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.runner.Computer;
 import org.junit.runner.JUnitCore;
 import org.junit.runner.Result;
@@ -39,7 +39,7 @@
 import java.util.concurrent.ExecutionException;
 
 import static org.apache.maven.surefire.junitcore.ConcurrentRunListener.createInstance;
-import static org.apache.maven.surefire.report.ConsoleOutputCapture.startCapture;
+import static org.apache.maven.surefire.api.report.ConsoleOutputCapture.startCapture;
 
 /**
  * @author Kristian Rosenvold
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java
similarity index 81%
rename from surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java
rename to surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java
index 6f93ae5..3694f92 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/junit4/MockReporter.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java
@@ -1,4 +1,4 @@
-package org.apache.maven.surefire.junit4;
+package org.apache.maven.surefire.junitcore;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -22,28 +22,28 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.TestSetReportEntry;
-import org.apache.maven.surefire.report.RunMode;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.RunMode;
 
 /**
  * Internal tests use only.
  */
-public class MockReporter
+final class MockReporter
     implements RunListener
 {
     private final List<String> events = new ArrayList<>();
 
-    public static final String SET_STARTED = "SET_STARTED";
+    static final String SET_STARTED = "SET_STARTED";
 
-    public static final String SET_COMPLETED = "SET_COMPLETED";
+    static final String SET_COMPLETED = "SET_COMPLETED";
 
-    public static final String TEST_STARTED = "TEST_STARTED";
+    static final String TEST_STARTED = "TEST_STARTED";
 
-    public static final String TEST_COMPLETED = "TEST_COMPLETED";
+    static final String TEST_COMPLETED = "TEST_COMPLETED";
 
-    public static final String TEST_SKIPPED = "TEST_SKIPPED";
+    static final String TEST_SKIPPED = "TEST_SKIPPED";
 
     private final AtomicInteger testSucceeded = new AtomicInteger();
 
@@ -53,7 +53,7 @@
 
     private final AtomicInteger testError = new AtomicInteger();
 
-    public MockReporter()
+    MockReporter()
     {
     }
 
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
index 66f0b85..38690ae 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
@@ -44,18 +44,17 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.maven.surefire.booter.BaseProviderFactory;
-import org.apache.maven.surefire.booter.ProviderParameterNames;
+import org.apache.maven.surefire.api.booter.BaseProviderFactory;
+import org.apache.maven.surefire.api.booter.ProviderParameterNames;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.Notifier;
-import org.apache.maven.surefire.junit4.MockReporter;
-import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.suite.RunResult;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.TestsToRun;
 
 import org.junit.Rule;
 import org.junit.Test;
@@ -188,4 +187,4 @@
                     "This Exception will cause Surefire to receive an internal JUnit Description and fail." );
         }
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire813IncorrectResultTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire813IncorrectResultTest.java
index 293b287..90b0608 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire813IncorrectResultTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire813IncorrectResultTest.java
@@ -21,7 +21,7 @@
 
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import org.junit.After;
 import org.junit.Test;
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/TestMethodTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/TestMethodTest.java
index 3ec149b..317f587 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/TestMethodTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/TestMethodTest.java
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
 
 import junit.framework.TestCase;
 
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/OptimizedParallelComputerTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/OptimizedParallelComputerTest.java
index ad362b5..764c57a 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/OptimizedParallelComputerTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/OptimizedParallelComputerTest.java
@@ -20,7 +20,7 @@
  */
 
 import org.apache.maven.surefire.junitcore.JUnitCoreParameters;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Rule;
@@ -314,4 +314,4 @@
         assertThat( concurrency.classes, is( Math.min( 4 * cpu, 5 ) ) );
         assertThat( concurrency.methods, is( Integer.MAX_VALUE ) );
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java
index 3e752e3..0855aa7 100755
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java
@@ -20,8 +20,8 @@
  */
 
 import net.jcip.annotations.NotThreadSafe;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java
index 9fea9cb..6f7e02b 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java
@@ -20,9 +20,9 @@
  */
 
 import org.apache.maven.surefire.junitcore.JUnitCoreParameters;
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Before;
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java
index 3aeab72..03a5d8e 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java
@@ -19,15 +19,15 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ConsoleStream;
-import org.apache.maven.surefire.report.DefaultDirectConsoleReporter;
+import org.apache.maven.surefire.api.report.ConsoleStream;
+import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
 import org.junit.Test;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
 
-import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
+import static org.apache.maven.surefire.api.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
diff --git a/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java b/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java
index ada82da..4143448 100644
--- a/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java
+++ b/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/MethodSelector.java
@@ -21,7 +21,7 @@
 
 import java.util.List;
 
-import org.apache.maven.surefire.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.testng.IMethodSelector;
 import org.testng.IMethodSelectorContext;
 import org.testng.ITestNGMethod;
diff --git a/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/Stoppable.java b/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/Stoppable.java
index e4fe304..febc39b 100644
--- a/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/Stoppable.java
+++ b/surefire-providers/surefire-testng-utils/src/main/java/org/apache/maven/surefire/testng/utils/Stoppable.java
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import org.apache.maven.surefire.api.report.RunListener;
+
 /**
  * Covers configuration parameter {@code skipAfterFailureCount}.
  *
@@ -28,7 +30,7 @@
 public interface Stoppable
 {
     /**
-     * Delegates this call to {@link org.apache.maven.surefire.report.RunListener#testExecutionSkippedByUser()}.
+     * Delegates this call to {@link RunListener#testExecutionSkippedByUser()}.
      */
     void fireStopEvent();
 }
diff --git a/surefire-providers/surefire-testng-utils/src/test/java/testng/utils/MethodSelectorTest.java b/surefire-providers/surefire-testng-utils/src/test/java/testng/utils/MethodSelectorTest.java
index 003e9f6..24d89de 100644
--- a/surefire-providers/surefire-testng-utils/src/test/java/testng/utils/MethodSelectorTest.java
+++ b/surefire-providers/surefire-testng-utils/src/test/java/testng/utils/MethodSelectorTest.java
@@ -21,7 +21,7 @@
 
 import junit.framework.TestCase;
 import org.apache.maven.surefire.testng.utils.MethodSelector;
-import org.apache.maven.surefire.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.testng.IClass;
 import org.testng.IRetryAnalyzer;
 import org.testng.ITestClass;
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/ConfigurationAwareTestNGReporter.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/ConfigurationAwareTestNGReporter.java
index dd646b6..bc92979 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/ConfigurationAwareTestNGReporter.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/ConfigurationAwareTestNGReporter.java
@@ -20,7 +20,7 @@
  */
 
 
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.api.report.RunListener;
 
 import org.testng.internal.IResultListener;
 
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java
index 18e8b92..f2bdbc7 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java
@@ -28,11 +28,11 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.TestsToRun;
 
 import static org.apache.maven.surefire.testng.TestNGExecutor.run;
 import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank;
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java
index 85d67df..271e8bf 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGExecutor.java
@@ -19,15 +19,15 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ProviderParameterNames;
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.report.RunListener;
+import org.apache.maven.surefire.api.booter.ProviderParameterNames;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.testng.conf.Configurator;
 import org.apache.maven.surefire.testng.utils.FailFastEventsSingleton;
 import org.apache.maven.surefire.testng.utils.FailFastListener;
 import org.apache.maven.surefire.testng.utils.Stoppable;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.apache.maven.surefire.shared.utils.StringUtils;
 import org.testng.ITestNGListener;
 import org.testng.TestNG;
@@ -48,11 +48,11 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import static org.apache.maven.surefire.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
-import static org.apache.maven.surefire.cli.CommandLineOption.SHOW_ERRORS;
-import static org.apache.maven.surefire.util.ReflectionUtils.instantiate;
-import static org.apache.maven.surefire.util.ReflectionUtils.tryLoadClass;
-import static org.apache.maven.surefire.util.internal.ConcurrencyUtils.countDownToZero;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.LOGGING_LEVEL_DEBUG;
+import static org.apache.maven.surefire.api.cli.CommandLineOption.SHOW_ERRORS;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.instantiate;
+import static org.apache.maven.surefire.api.util.ReflectionUtils.tryLoadClass;
+import static org.apache.maven.surefire.api.util.internal.ConcurrencyUtils.countDownToZero;
 
 /**
  * Contains utility methods for executing TestNG.
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
index a8a5fb7..5878248 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
@@ -19,34 +19,34 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.Command;
-import org.apache.maven.surefire.providerapi.CommandChainReader;
-import org.apache.maven.surefire.providerapi.CommandListener;
-import org.apache.maven.surefire.cli.CommandLineOption;
-import org.apache.maven.surefire.providerapi.AbstractProvider;
-import org.apache.maven.surefire.providerapi.ProviderParameters;
-import org.apache.maven.surefire.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.report.ReporterConfiguration;
-import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.api.booter.Command;
+import org.apache.maven.surefire.api.provider.CommandChainReader;
+import org.apache.maven.surefire.api.provider.CommandListener;
+import org.apache.maven.surefire.api.cli.CommandLineOption;
+import org.apache.maven.surefire.api.provider.AbstractProvider;
+import org.apache.maven.surefire.api.provider.ProviderParameters;
+import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.ReporterConfiguration;
+import org.apache.maven.surefire.api.report.ReporterFactory;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.suite.RunResult;
 import org.apache.maven.surefire.testng.utils.FailFastEventsSingleton;
-import org.apache.maven.surefire.testset.TestListResolver;
-import org.apache.maven.surefire.testset.TestRequest;
-import org.apache.maven.surefire.testset.TestSetFailedException;
-import org.apache.maven.surefire.util.RunOrderCalculator;
-import org.apache.maven.surefire.util.ScanResult;
-import org.apache.maven.surefire.util.TestsToRun;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.apache.maven.surefire.api.testset.TestRequest;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.util.RunOrderCalculator;
+import org.apache.maven.surefire.api.util.ScanResult;
+import org.apache.maven.surefire.api.util.TestsToRun;
 
 import java.io.File;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.maven.surefire.report.ConsoleOutputCapture.startCapture;
-import static org.apache.maven.surefire.testset.TestListResolver.getEmptyTestListResolver;
-import static org.apache.maven.surefire.testset.TestListResolver.optionallyWildcardFilter;
-import static org.apache.maven.surefire.util.TestsToRun.fromClass;
+import static org.apache.maven.surefire.api.report.ConsoleOutputCapture.startCapture;
+import static org.apache.maven.surefire.api.testset.TestListResolver.getEmptyTestListResolver;
+import static org.apache.maven.surefire.api.testset.TestListResolver.optionallyWildcardFilter;
+import static org.apache.maven.surefire.api.util.TestsToRun.fromClass;
 
 /**
  * @author Kristian Rosenvold
@@ -99,8 +99,8 @@
 
         final ReporterFactory reporterFactory = providerParameters.getReporterFactory();
         final RunListener reporter = reporterFactory.createReporter();
-        /**
-         * {@link org.apache.maven.surefire.report.ConsoleOutputCapture#startCapture(ConsoleOutputReceiver)}
+        /*
+         * {@link org.apache.maven.surefire.api.report.ConsoleOutputCapture#startCapture(ConsoleOutputReceiver)}
          * called in prior to initializing variable {@link #testsToRun}
          */
         startCapture( (ConsoleOutputReceiver) reporter );
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java
index 1c483a5..fcbea5d 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java
@@ -19,11 +19,11 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.CategorizedReportEntry;
+import org.apache.maven.surefire.api.report.CategorizedReportEntry;
 import org.apache.maven.surefire.report.PojoStackTraceWriter;
-import org.apache.maven.surefire.report.ReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.ReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
 
 import org.testng.IClass;
 import org.testng.ISuite;
@@ -34,13 +34,13 @@
 
 import java.util.Arrays;
 
-import static org.apache.maven.surefire.report.SimpleReportEntry.ignored;
-import static org.apache.maven.surefire.report.SimpleReportEntry.withException;
+import static org.apache.maven.surefire.api.report.SimpleReportEntry.ignored;
+import static org.apache.maven.surefire.api.report.SimpleReportEntry.withException;
 
 /**
  * Listens for and provides and adaptor layer so that
  * TestNG tests can report their status to the current
- * {@link org.apache.maven.surefire.report.RunListener}.
+ * {@link RunListener}.
  *
  * @author jkuhnert
  */
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java
index e9b16e9..bf7f991 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java
@@ -24,8 +24,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import static org.apache.maven.surefire.testng.TestNGExecutor.run;
 
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestSuite.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestSuite.java
index 27f46be..b78f797 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestSuite.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestSuite.java
@@ -19,14 +19,14 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.report.ReporterException;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
-import org.apache.maven.surefire.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.ReporterException;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.util.Map;
 
-import static org.apache.maven.surefire.util.internal.ObjectUtils.systemProps;
+import static org.apache.maven.surefire.api.util.internal.ObjectUtils.systemProps;
 
 /**
  * Abstract class which implements common functions.
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java
index e966731..ed918f5 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/AbstractDirectConfigurator.java
@@ -25,8 +25,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.surefire.booter.ProviderParameterNames;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.booter.ProviderParameterNames;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.testng.TestNG;
 import org.testng.xml.XmlSuite;
 
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/Configurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/Configurator.java
index ba23dc8..af5143d 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/Configurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/Configurator.java
@@ -21,7 +21,7 @@
 
 import java.util.Map;
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.testng.TestNG;
 import org.testng.xml.XmlSuite;
 
@@ -36,4 +36,4 @@
 
     void configure ( XmlSuite suite, Map<String, String> options )
         throws TestSetFailedException;
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG4751Configurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG4751Configurator.java
index 9955f44..f55ab48 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG4751Configurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG4751Configurator.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ProviderParameterNames;
+import org.apache.maven.surefire.api.booter.ProviderParameterNames;
 
 /**
  * TestNG 4.7 and 5.1 configurator.
@@ -41,4 +41,4 @@
     {
         setters.put( ProviderParameterNames.PARALLEL_PROP, new Setter( "setParallel", boolean.class ) );
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG510Configurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG510Configurator.java
index 8e12008..7bbacf9 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG510Configurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG510Configurator.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.testng.xml.XmlSuite;
 
 import java.util.Map;
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java
index ff164fb..c201868 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG513Configurator.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * TestNG 5.13 configurator. Changed: "reporterslist" need String instead of List&lt;ReporterConfig&gt;.
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG5141Configurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG5141Configurator.java
index 49f0579..c2bc1c6 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG5141Configurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG5141Configurator.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * TestNG 5.14.1 configurator. Changed: "listener" use List instead of String.
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG5143Configurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG5143Configurator.java
index 15a46a8..a23ef52 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG5143Configurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG5143Configurator.java
@@ -20,7 +20,7 @@
  */
 
 import java.util.Map;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * TestNG 5.14.3 configurator. Changed: "reporterslist" replaced by "reporter",
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG52Configurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG52Configurator.java
index 44da341..55a77e9 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG52Configurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG52Configurator.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.surefire.booter.ProviderParameterNames;
+import org.apache.maven.surefire.api.booter.ProviderParameterNames;
 
 /**
  * TestNG 5.2 configurator.
@@ -41,4 +41,4 @@
     {
         setters.put( ProviderParameterNames.PARALLEL_PROP, new Setter( "setParallel", String.class ) );
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG60Configurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG60Configurator.java
index 1e4859f..625a355 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG60Configurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNG60Configurator.java
@@ -21,7 +21,7 @@
 
 import java.util.Map;
 import java.util.Map.Entry;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 /**
  * TestNG 6.0 configurator. Changed objectFactory type to String.
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java
index b6bf82e..6caf824 100755
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/conf/TestNGMapConfigurator.java
@@ -24,13 +24,13 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.testng.TestNG;
 import org.testng.xml.XmlSuite;
 
 import static java.lang.Integer.parseInt;
-import static org.apache.maven.surefire.booter.ProviderParameterNames.PARALLEL_PROP;
-import static org.apache.maven.surefire.booter.ProviderParameterNames.THREADCOUNT_PROP;
+import static org.apache.maven.surefire.api.booter.ProviderParameterNames.PARALLEL_PROP;
+import static org.apache.maven.surefire.api.booter.ProviderParameterNames.THREADCOUNT_PROP;
 import static org.apache.maven.surefire.testng.conf.AbstractDirectConfigurator.loadListenerClasses;
 
 /**
@@ -178,4 +178,4 @@
             return val;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/surefire-providers/surefire-testng/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-providers/surefire-testng/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
similarity index 100%
rename from surefire-providers/surefire-testng/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
rename to surefire-providers/surefire-testng/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
diff --git a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/TestNGReporterTest.java b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/TestNGReporterTest.java
index 36a7600..6a07e54 100644
--- a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/TestNGReporterTest.java
+++ b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/TestNGReporterTest.java
@@ -20,9 +20,9 @@
  */
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.report.CategorizedReportEntry;
-import org.apache.maven.surefire.report.RunListener;
-import org.apache.maven.surefire.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.CategorizedReportEntry;
+import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.SimpleReportEntry;
 import org.mockito.ArgumentCaptor;
 import org.testng.ITestClass;
 import org.testng.ITestNGMethod;
diff --git a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG513ConfiguratorTest.java b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG513ConfiguratorTest.java
index 15d976d..c6ef353 100644
--- a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG513ConfiguratorTest.java
+++ b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG513ConfiguratorTest.java
@@ -20,7 +20,7 @@
  */
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG5141ConfiguratorTest.java b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG5141ConfiguratorTest.java
index 763a4a1..672735a 100644
--- a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG5141ConfiguratorTest.java
+++ b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG5141ConfiguratorTest.java
@@ -20,7 +20,7 @@
  */
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import java.util.HashMap;
 import java.util.List;
diff --git a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG5143ConfiguratorTest.java b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG5143ConfiguratorTest.java
index a6704be..4d87432 100644
--- a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG5143ConfiguratorTest.java
+++ b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNG5143ConfiguratorTest.java
@@ -23,7 +23,7 @@
 import java.util.Map;
 
 import junit.framework.TestCase;
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import static org.apache.maven.surefire.testng.conf.TestNGMapConfiguratorTest.FIRST_LISTENER;
 import static org.apache.maven.surefire.testng.conf.TestNGMapConfiguratorTest.LISTENER_PROP;
diff --git a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNGMapConfiguratorTest.java b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNGMapConfiguratorTest.java
index 69cd8e5..c5c437c 100755
--- a/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNGMapConfiguratorTest.java
+++ b/surefire-providers/surefire-testng/src/test/java/org/apache/maven/surefire/testng/conf/TestNGMapConfiguratorTest.java
@@ -23,7 +23,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.surefire.testset.TestSetFailedException;
+import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
 import junit.framework.TestCase;
 import org.testng.ReporterConfig;
diff --git a/surefire-shadefire/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-shadefire/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider
similarity index 100%
rename from surefire-shadefire/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
rename to surefire-shadefire/src/main/resources/META-INF/services/org.apache.maven.surefire.api.provider.SurefireProvider