You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2020/05/19 10:08:36 UTC

[maven-surefire] branch SUREFIRE-1793 created (now f0b2ef9)

This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a change to branch SUREFIRE-1793
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git.


      at f0b2ef9  removed unnecessary surefire.properties

This branch includes the following new commits:

     new 8226ac4  [SUREFIRE-1793] Change the Java packge of surefire-api to the distinct package org.apache.maven.surefire.api
     new f0b2ef9  removed unnecessary surefire.properties

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven-surefire] 02/02: removed unnecessary surefire.properties

Posted by ti...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch SUREFIRE-1793
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit f0b2ef9b0efb1e6defe6803aa6396ce78db45f5d
Author: tibordigana <ti...@apache.org>
AuthorDate: Tue May 19 03:31:53 2020 +0200

    removed unnecessary surefire.properties
---
 .../org/apache/maven/surefire/surefire.properties  | 27 ----------------------
 1 file changed, 27 deletions(-)

diff --git a/surefire-api/src/main/resources/org/apache/maven/surefire/surefire.properties b/surefire-api/src/main/resources/org/apache/maven/surefire/surefire.properties
deleted file mode 100644
index be83f76..0000000
--- a/surefire-api/src/main/resources/org/apache/maven/surefire/surefire.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-setupFixtureFailed=Method setupFixture threw an exception prior to calling {0}.
-cleanupFixtureFailed=Method cleanupFixture threw an exception prior to calling {0}.
-testSetStarting=Test set starting.
-testSetCompletedNormally=Test set completed.
-testStarting=Test starting.
-executeException=Exception occurred.
-testSuccessful=Test succeeded.
-testSkipped=Test skipped.
\ No newline at end of file


[maven-surefire] 01/02: [SUREFIRE-1793] Change the Java packge of surefire-api to the distinct package org.apache.maven.surefire.api

Posted by ti...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch SUREFIRE-1793
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit 8226ac436b04c3148694d351614c4e3bd507e8bc
Author: tibordigana <ti...@apache.org>
AuthorDate: Mon May 18 22:05:06 2020 +0200

    [SUREFIRE-1793] Change the Java packge of surefire-api to the distinct package org.apache.maven.surefire.api
---
 maven-failsafe-plugin/pom.xml                      |  1 -
 maven-failsafe-plugin/src/it/settings.xml          | 33 +----------
 .../maven/plugin/failsafe/IntegrationTestMojo.java |  2 +-
 .../apache/maven/plugin/failsafe/VerifyMojo.java   |  6 +-
 .../failsafe/util/FailsafeSummaryXmlUtils.java     |  2 +-
 .../failsafe/MarshallerUnmarshallerTest.java       |  2 +-
 .../maven/plugin/failsafe/RunResultTest.java       |  2 +-
 .../plugin/surefire/AbstractSurefireMojo.java      | 36 ++++++------
 .../maven/plugin/surefire/CommonReflector.java     |  8 +--
 .../plugin/surefire/InPluginVMSurefireStarter.java |  6 +-
 .../maven/plugin/surefire/SurefireHelper.java      | 22 ++++----
 .../surefire/booterclient/BooterSerializer.java    | 16 +++---
 .../booterclient/DefaultForkConfiguration.java     |  2 +-
 .../plugin/surefire/booterclient/ForkStarter.java  | 28 +++++-----
 .../booterclient/JarManifestForkConfiguration.java |  2 +-
 .../ModularClasspathForkConfiguration.java         |  2 +-
 .../plugin/surefire/booterclient/Platform.java     |  2 +-
 .../lazytestprovider/DefaultCommandReader.java     |  4 +-
 .../lazytestprovider/NotifiableTestStream.java     |  2 +-
 .../lazytestprovider/TestLessInputStream.java      | 12 ++--
 .../lazytestprovider/TestProvidingInputStream.java | 18 +++---
 .../output/DeserializedStacktraceWriter.java       |  4 +-
 .../surefire/booterclient/output/ForkClient.java   | 20 +++----
 .../output/ForkedProcessEventNotifier.java         | 56 +++++++++----------
 .../output/ForkedProcessExitErrorListener.java     |  2 +-
 .../output/ForkedProcessPropertyEventListener.java |  2 +-
 .../output/ForkedProcessReportEventListener.java   |  4 +-
 .../ForkedProcessStackTraceEventListener.java      |  2 +-
 .../ForkedProcessStandardOutErrEventListener.java  |  2 +-
 .../output/InPluginProcessDumpSingleton.java       |  2 +-
 .../output/ThreadedStreamConsumer.java             |  4 +-
 .../surefire/extensions/EventConsumerThread.java   | 58 ++++++++++----------
 .../surefire/extensions/LegacyForkChannel.java     |  2 +-
 .../plugin/surefire/extensions/StreamFeeder.java   | 20 +++----
 .../extensions/SurefireConsoleOutputReporter.java  |  2 +-
 .../surefire/extensions/SurefireForkChannel.java   | 12 ++--
 .../extensions/SurefireStatelessReporter.java      |  2 +-
 .../SurefireStatelessTestsetInfoReporter.java      |  2 +-
 .../surefire/report/ConsoleOutputFileReporter.java |  6 +-
 .../plugin/surefire/report/ConsoleReporter.java    |  2 +-
 .../surefire/report/DefaultReporterFactory.java    | 10 ++--
 .../surefire/report/DirectConsoleOutput.java       |  2 +-
 .../maven/plugin/surefire/report/FileReporter.java |  2 +-
 .../surefire/report/NullConsoleOutputReceiver.java |  2 +-
 .../surefire/report/NullConsoleReporter.java       |  2 +-
 .../surefire/report/NullStatisticsReporter.java    |  2 +-
 .../surefire/report/StatelessXmlReporter.java      |  4 +-
 .../plugin/surefire/report/TestMethodStats.java    |  2 +-
 .../plugin/surefire/report/TestSetRunListener.java | 12 ++--
 .../maven/plugin/surefire/report/TestSetStats.java |  4 +-
 .../report/TestcycleConsoleOutputReceiver.java     |  4 +-
 .../Utf8RecodingDeferredFileOutputStream.java      |  2 +-
 .../plugin/surefire/report/WrappedReportEntry.java |  8 +--
 .../surefire/runorder/StatisticsReporter.java      |  5 +-
 .../plugin/surefire/util/DependencyScanner.java    |  6 +-
 .../plugin/surefire/util/DirectoryScanner.java     |  6 +-
 .../maven/plugin/surefire/util/FileScanner.java    |  2 +-
 .../maven/surefire/providerapi/ServiceLoader.java  |  2 +-
 .../maven/surefire/report/RunStatistics.java       |  2 +-
 .../AbstractSurefireMojoJava7PlusTest.java         |  4 +-
 .../plugin/surefire/AbstractSurefireMojoTest.java  |  4 +-
 .../maven/plugin/surefire/CommonReflectorTest.java |  6 +-
 .../maven/plugin/surefire/MojoMocklessTest.java    |  4 +-
 .../maven/plugin/surefire/SurefireHelperTest.java  |  2 +-
 ...ooterDeserializerProviderConfigurationTest.java | 26 ++++-----
 ...BooterDeserializerStartupConfigurationTest.java | 24 ++++----
 .../surefire/booterclient/ForkStarterTest.java     |  4 +-
 .../booterclient/ForkingRunListenerTest.java       | 28 +++++-----
 .../booterclient/MockNotifiableTestStream.java     |  4 +-
 .../plugin/surefire/booterclient/MockReporter.java | 10 ++--
 .../booterclient/TestSetMockReporterFactory.java   |  2 +-
 .../TestLessInputStreamBuilderTest.java            | 14 ++---
 .../TestProvidingInputStreamTest.java              |  8 +--
 .../booterclient/output/ForkClientTest.java        | 60 ++++++++++----------
 .../maven/plugin/surefire/extensions/E2ETest.java  |  6 +-
 .../extensions/ForkedProcessEventNotifierTest.java | 20 +++----
 .../surefire/extensions/StreamFeederTest.java      |  8 +--
 .../report/DefaultReporterFactoryTest.java         |  6 +-
 .../surefire/report/StatelessXmlReporterTest.java  |  8 +--
 .../plugin/surefire/report/TestSetStatsTest.java   |  2 +-
 .../surefire/report/WrappedReportEntryTest.java    |  4 +-
 .../runorder/RunEntryStatisticsMapTest.java        | 10 ++--
 .../surefire/util/DependenciesScannerTest.java     |  4 +-
 .../plugin/surefire/util/DirectoryScannerTest.java |  4 +-
 .../maven/surefire/extensions/ForkChannelTest.java |  4 +-
 .../StatelessTestsetInfoReporterTest.java          |  2 +-
 .../report/ConsoleOutputFileReporterTest.java      |  2 +
 .../maven/surefire/report/FileReporterTest.java    |  2 +
 .../maven/plugin/surefire/SurefirePlugin.java      |  2 +-
 .../maven/plugin/surefire/SurefirePluginTest.java  |  2 +-
 pom.xml                                            |  2 +-
 .../{ => api}/booter/BaseProviderFactory.java      | 36 ++++++------
 .../surefire/{ => api}/booter/BiProperty.java      | 10 ++--
 .../maven/surefire/{ => api}/booter/Command.java   | 13 ++---
 .../{ => api}/booter/DumpErrorSingleton.java       |  6 +-
 .../{ => api}/booter/ForkedProcessEventType.java   |  2 +-
 .../{ => api}/booter/ForkingReporterFactory.java   |  8 +--
 .../{ => api}/booter/ForkingRunListener.java       | 18 +++---
 .../booter/MasterProcessChannelDecoder.java        |  2 +-
 .../booter/MasterProcessChannelEncoder.java        |  6 +-
 .../{ => api}/booter/MasterProcessCommand.java     |  2 +-
 .../{ => api}/booter/ProviderParameterNames.java   |  2 +-
 .../maven/surefire/{ => api}/booter/Shutdown.java  |  2 +-
 .../surefire/{ => api}/cli/CommandLineOption.java  |  2 +-
 .../event}/AbstractConsoleEvent.java               |  4 +-
 .../event}/AbstractStandardStreamEvent.java        |  6 +-
 .../event}/AbstractTestControlEvent.java           |  8 +--
 .../{eventapi => api/event}/ConsoleDebugEvent.java |  4 +-
 .../{eventapi => api/event}/ConsoleErrorEvent.java |  6 +-
 .../{eventapi => api/event}/ConsoleInfoEvent.java  |  4 +-
 .../event}/ConsoleWarningEvent.java                |  4 +-
 .../{eventapi => api/event}/ControlByeEvent.java   |  4 +-
 .../event}/ControlNextTestEvent.java               |  4 +-
 .../event}/ControlStopOnNextTestEvent.java         |  4 +-
 .../surefire/{eventapi => api/event}/Event.java    |  4 +-
 .../{eventapi => api/event}/JvmExitErrorEvent.java |  6 +-
 .../event}/StandardStreamErrEvent.java             |  6 +-
 .../event}/StandardStreamErrWithNewLineEvent.java  |  6 +-
 .../event}/StandardStreamOutEvent.java             |  6 +-
 .../event}/StandardStreamOutWithNewLineEvent.java  |  6 +-
 .../event}/SystemPropertyEvent.java                |  6 +-
 .../event}/TestAssumptionFailureEvent.java         |  8 +--
 .../{eventapi => api/event}/TestErrorEvent.java    |  8 +--
 .../{eventapi => api/event}/TestFailedEvent.java   |  8 +--
 .../{eventapi => api/event}/TestSkippedEvent.java  |  8 +--
 .../{eventapi => api/event}/TestStartingEvent.java |  8 +--
 .../event}/TestSucceededEvent.java                 |  8 +--
 .../event}/TestsetCompletedEvent.java              |  8 +--
 .../event}/TestsetStartingEvent.java               |  8 +--
 .../{ => api/filter}/NonAbstractClassFilter.java   |  4 +-
 .../{ => api/filter}/SpecificTestClassFilter.java  |  4 +-
 .../provider}/AbstractProvider.java                |  2 +-
 .../provider}/CommandChainReader.java              |  4 +-
 .../provider}/CommandListener.java                 |  4 +-
 .../provider}/ProviderParameters.java              | 22 ++++----
 .../provider}/SurefireProvider.java                | 12 ++--
 .../{ => api}/report/CategorizedReportEntry.java   |  2 +-
 .../{ => api}/report/ConsoleOutputCapture.java     |  2 +-
 .../{ => api}/report/ConsoleOutputReceiver.java    |  2 +-
 .../ConsoleOutputReceiverForCurrentThread.java     |  2 +-
 .../maven/surefire/api/report/ConsoleStream.java}  |  7 ++-
 .../report/DefaultDirectConsoleReporter.java       |  2 +-
 .../report/LegacyPojoStackTraceWriter.java         |  4 +-
 .../surefire/{ => api}/report/ReportEntry.java     |  2 +-
 .../{ => api}/report/ReporterConfiguration.java    |  2 +-
 .../{ => api}/report/ReporterException.java        |  2 +-
 .../surefire/{ => api}/report/ReporterFactory.java |  4 +-
 .../surefire/{ => api}/report/RunListener.java     |  6 +-
 .../maven/surefire/{ => api}/report/RunMode.java   |  2 +-
 .../surefire/{ => api}/report/SafeThrowable.java   |  2 +-
 .../{ => api}/report/SimpleReportEntry.java        |  4 +-
 .../{ => api}/report/StackTraceWriter.java         |  2 +-
 .../{ => api}/report/TestSetReportEntry.java       |  2 +-
 .../api}/runorder/PrioritizedTest.java             |  2 +-
 .../api}/runorder/Priority.java                    |  2 +-
 .../api}/runorder/RunEntryStatistics.java          |  6 +-
 .../api}/runorder/RunEntryStatisticsMap.java       | 10 ++--
 .../api}/runorder/ThreadedExecutionScheduler.java  |  2 +-
 .../maven/surefire/{ => api}/suite/RunResult.java  |  2 +-
 .../testset/DirectoryScannerParameters.java        |  4 +-
 .../{ => api}/testset/GenericTestPattern.java      |  2 +-
 .../testset/IncludedExcludedPatterns.java          |  2 +-
 .../surefire/{ => api}/testset/ResolvedTest.java   |  2 +-
 .../{ => api}/testset/RunOrderParameters.java      |  4 +-
 .../{ => api}/testset/TestArtifactInfo.java        |  2 +-
 .../surefire/{ => api}/testset/TestFilter.java     |  2 +-
 .../{ => api}/testset/TestListResolver.java        |  6 +-
 .../surefire/{ => api}/testset/TestRequest.java    |  2 +-
 .../{ => api}/testset/TestSetFailedException.java  |  2 +-
 .../surefire/{ => api}/util/CloseableIterator.java |  2 +-
 .../{ => api}/util/DefaultDirectoryScanner.java    |  4 +-
 .../{ => api}/util/DefaultRunOrderCalculator.java  |  6 +-
 .../surefire/{ => api}/util/DefaultScanResult.java |  2 +-
 .../surefire/{ => api}/util/DirectoryScanner.java  |  2 +-
 .../surefire/{ => api}/util/ReflectionUtils.java   |  2 +-
 .../maven/surefire/{ => api}/util/RunOrder.java    |  4 +-
 .../{ => api}/util/RunOrderCalculator.java         |  2 +-
 .../maven/surefire/{ => api}/util/ScanResult.java  |  2 +-
 .../surefire/{ => api}/util/ScannerFilter.java     |  2 +-
 .../util/SurefireReflectionException.java          |  2 +-
 .../maven/surefire/{ => api}/util/TestsToRun.java  |  4 +-
 .../AbstractNoninterruptibleReadableChannel.java   |  2 +-
 .../AbstractNoninterruptibleWritableChannel.java   |  2 +-
 .../surefire/{ => api}/util/internal/Channels.java |  2 +-
 .../{ => api}/util/internal/ClassMethod.java       |  2 +-
 .../{ => api}/util/internal/ConcurrencyUtils.java  |  2 +-
 .../util/internal/DaemonThreadFactory.java         |  2 +-
 .../{ => api}/util/internal/DumpFileUtils.java     |  2 +-
 .../{ => api}/util/internal/ImmutableMap.java      |  2 +-
 .../{ => api}/util/internal/ObjectUtils.java       |  2 +-
 .../{ => api}/util/internal/StringUtils.java       |  2 +-
 .../util/internal/TestClassMethodNameUtils.java    |  2 +-
 .../util/internal/WritableBufferedByteChannel.java |  2 +-
 .../maven/surefire/report/ConsoleStream.java       |  1 -
 .../java/org/apache/maven/JUnit4SuiteTest.java     | 36 ++++++------
 .../surefire/SpecificTestClassFilterTest.java      |  7 ++-
 .../{ => api}/booter/ForkingRunListenerTest.java   |  2 +-
 .../report/LegacyPojoStackTraceWriterTest.java     |  2 +-
 .../runorder/ThreadedExecutionSchedulerTest.java   |  6 +-
 .../surefire/{ => api}/suite/RunResultTest.java    |  2 +-
 .../surefire/{util => api}/testdata/DataZT1A.java  |  2 +-
 .../surefire/{util => api}/testdata/DataZT2A.java  |  2 +-
 .../surefire/{util => api}/testdata/DataZT3A.java  |  2 +-
 .../testdata/java/javascript/DataJavaZT4A.java     |  2 +-
 .../{ => api}/testset/FundamentalFilterTest.java   |  2 +-
 .../{ => api}/testset/ResolvedTestTest.java        |  8 +--
 .../{ => api}/testset/TestListResolverTest.java    |  6 +-
 .../util/DefaultDirectoryScannerTest.java          |  4 +-
 .../{ => api}/util/ReflectionUtilsTest.java        |  2 +-
 .../{ => api}/util/RunOrderCalculatorTest.java     |  4 +-
 .../surefire/{ => api}/util/RunOrderTest.java      |  4 +-
 .../surefire/{ => api}/util/ScanResultTest.java    |  4 +-
 .../surefire/{ => api}/util/TestsToRunTest.java    |  6 +-
 .../{ => api}/util/internal/AsyncSocketTest.java   |  6 +-
 .../util/internal/ChannelsReaderTest.java          |  2 +-
 .../util/internal/ChannelsWriterTest.java          |  2 +-
 .../util/internal/ConcurrencyUtilsTest.java        |  4 +-
 .../{ => api}/util/internal/ImmutableMapTest.java  |  4 +-
 .../maven/surefire/booter/BooterDeserializer.java  | 16 +++---
 .../maven/surefire/booter/CommandReader.java       | 25 ++++++---
 .../apache/maven/surefire/booter/ForkedBooter.java | 25 ++++++---
 .../maven/surefire/booter/LazyTestsToRun.java      | 12 ++--
 .../apache/maven/surefire/booter/PpidChecker.java  |  4 +-
 .../surefire/booter/ProviderConfiguration.java     | 13 +++--
 .../maven/surefire/booter/ProviderFactory.java     | 18 +++---
 .../booter/SurefireBooterForkException.java        |  2 +-
 .../maven/surefire/booter/SurefireReflector.java   | 39 ++++++-------
 .../apache/maven/surefire/booter/SystemUtils.java  |  6 +-
 .../maven/surefire/booter/TypeEncodedValue.java    |  2 +-
 .../spi/LegacyMasterProcessChannelDecoder.java     | 24 ++++----
 .../spi/LegacyMasterProcessChannelEncoder.java     | 64 +++++++++++-----------
 ...LegacyMasterProcessChannelProcessorFactory.java |  6 +-
 ...refireMasterProcessChannelProcessorFactory.java | 12 ++--
 .../maven/surefire/booter/CommandReaderTest.java   | 10 ++--
 .../java/org/apache/maven/surefire/booter/Foo.java | 14 +++--
 .../surefire/booter/ForkedBooterMockTest.java      |  4 +-
 .../surefire/booter/IsolatedClassLoaderTest.java   |  4 +-
 .../surefire/booter/SurefireReflectorTest.java     | 29 +++++-----
 .../spi/LegacyMasterProcessChannelDecoderTest.java | 22 ++++----
 .../spi/LegacyMasterProcessChannelEncoderTest.java | 18 +++---
 .../maven/surefire/extensions/CommandReader.java   |  2 +-
 .../ConsoleOutputReportEventListener.java          |  2 +-
 .../maven/surefire/extensions/ForkChannel.java     |  2 +-
 .../extensions/StatelessReportEventListener.java   |  2 +-
 .../surefire/extensions/StatelessReporter.java     |  2 +-
 ...elessTestsetInfoConsoleReportEventListener.java |  2 +-
 ...tatelessTestsetInfoFileReportEventListener.java |  2 +-
 .../extensions/StatelessTestsetInfoReporter.java   |  2 +-
 .../extensions/util/CommandlineStreams.java        |  2 +-
 .../spi/MasterProcessChannelProcessorFactory.java  |  4 +-
 .../surefire/report/PojoStackTraceWriter.java      |  6 +-
 .../surefire/report/SmartStackTraceParser.java     |  2 +
 .../maven/surefire/report/RunnableTestClass1.java  |  2 +-
 .../surefire/report/SmartStackTraceParserTest.java |  2 +-
 .../surefire/common/junit3/JUnit3Reflector.java    |  2 +-
 .../surefire/common/junit3/JUnit3TestChecker.java  |  8 +--
 .../surefire/common/junit4/JUnit4ProviderUtil.java |  6 +-
 .../surefire/common/junit4/JUnit4Reflector.java    |  6 +-
 .../surefire/common/junit4/JUnit4RunListener.java  | 18 +++---
 .../common/junit4/JUnit4RunListenerFactory.java    |  2 +-
 .../common/junit4/JUnit4StackTraceWriter.java      | 10 ++--
 .../surefire/common/junit4/JUnit4TestChecker.java  |  6 +-
 .../maven/surefire/common/junit4/Notifier.java     |  2 +-
 .../common/junit4/JUnit4ProviderUtilTest.java      |  2 +-
 .../common/junit4/JUnit4RunListenerTest.java       |  4 +-
 .../surefire/common}/junit4/MockReporter.java      | 35 +++++-------
 .../surefire/junit4/JUnit4TestCheckerTest.java     |  2 +-
 .../surefire/common/junit48/FilterFactory.java     | 15 ++---
 .../surefire/common/junit48/JUnit48Reflector.java  |  2 +-
 .../common/junit48/JUnit48TestChecker.java         |  4 +-
 .../surefire/common/junit48/MethodFilter.java      |  4 +-
 .../surefire/common/junit48/RequestedTest.java     |  2 +-
 .../surefire/common/junit48/FilterFactoryTest.java |  4 +-
 .../junitplatform/JUnitPlatformProvider.java       | 30 +++++-----
 .../surefire/junitplatform/RunListenerAdapter.java |  8 +--
 .../surefire/junitplatform/TestMethodFilter.java   |  2 +-
 .../junitplatform/TestPlanScannerFilter.java       |  2 +-
 ...e.maven.surefire.api.provider.SurefireProvider} |  0
 .../junitplatform/JUnitPlatformProviderTest.java   | 30 +++++-----
 .../junitplatform/RunListenerAdapterTest.java      |  8 +--
 .../junitplatform/TestMethodFilterTest.java        |  4 +-
 .../maven/surefire/junit/JUnit3Provider.java       | 30 +++++-----
 .../apache/maven/surefire/junit/JUnitTestSet.java  |  4 +-
 .../maven/surefire/junit/PojoAndJUnit3Checker.java |  4 +-
 .../apache/maven/surefire/junit/PojoTestSet.java   | 12 ++--
 .../maven/surefire/junit/SurefireTestSet.java      |  4 +-
 .../junit/TestListenerInvocationHandler.java       | 18 +++---
 ...e.maven.surefire.api.provider.SurefireProvider} |  0
 .../maven/surefire/junit/JUnitTestSetTest.java     |  8 +--
 .../maven/surefire/junit4/JUnit4Provider.java      | 42 +++++++-------
 .../maven/surefire/junit4/TestResolverFilter.java  | 61 ++++++++++++++++++++-
 ...e.maven.surefire.api.provider.SurefireProvider} |  0
 .../maven/surefire/junit4/JUnit4ProviderTest.java  |  4 +-
 .../junitcore/ClassesParallelRunListener.java      |  6 +-
 .../surefire/junitcore/ConcurrentRunListener.java  | 18 +++---
 .../junitcore/ConfigurableParallelComputer.java    |  2 +-
 .../apache/maven/surefire/junitcore/JUnitCore.java |  2 +-
 .../surefire/junitcore/JUnitCoreParameters.java    |  2 +-
 .../surefire/junitcore/JUnitCoreProvider.java      | 34 ++++++------
 .../surefire/junitcore/JUnitCoreRunListener.java   |  6 +-
 .../maven/surefire/junitcore/JUnitCoreWrapper.java |  6 +-
 .../maven/surefire/junitcore/LogicalStream.java    |  2 +-
 .../junitcore/MethodsParallelRunListener.java      |  6 +-
 .../junitcore/NonConcurrentRunListener.java        | 14 ++---
 .../maven/surefire/junitcore/TestMethod.java       | 10 ++--
 .../apache/maven/surefire/junitcore/TestSet.java   | 10 ++--
 .../junitcore/pc/AbstractThreadPoolStrategy.java   |  4 +-
 .../surefire/junitcore/pc/InvokerStrategy.java     |  2 +-
 .../junitcore/pc/NonSharedThreadPoolStrategy.java  |  2 +-
 .../surefire/junitcore/pc/ParallelComputer.java    |  6 +-
 .../junitcore/pc/ParallelComputerBuilder.java      |  6 +-
 .../junitcore/pc/ParallelComputerUtil.java         |  4 +-
 .../maven/surefire/junitcore/pc/Scheduler.java     |  2 +-
 .../junitcore/pc/SchedulingStrategies.java         |  4 +-
 .../surefire/junitcore/pc/SchedulingStrategy.java  |  2 +-
 .../junitcore/pc/SharedThreadPoolStrategy.java     |  4 +-
 .../junitcore/pc/SingleThreadScheduler.java        |  6 +-
 ...e.maven.surefire.api.provider.SurefireProvider} |  0
 .../junitcore/ConcurrentRunListenerTest.java       | 10 ++--
 .../surefire/junitcore/JUnit4Reflector481Test.java |  2 +-
 .../junitcore/JUnitCoreRunListenerTest.java        |  2 -
 .../maven/surefire/junitcore/JUnitCoreTester.java  | 12 ++--
 .../maven/surefire/junitcore}/MockReporter.java    | 24 ++++----
 .../maven/surefire/junitcore/Surefire746Test.java  | 21 ++++---
 .../junitcore/Surefire813IncorrectResultTest.java  |  2 +-
 .../maven/surefire/junitcore/TestMethodTest.java   |  4 +-
 .../pc/OptimizedParallelComputerTest.java          |  4 +-
 .../junitcore/pc/ParallelComputerBuilderTest.java  |  4 +-
 .../junitcore/pc/ParallelComputerUtilTest.java     |  6 +-
 .../junitcore/pc/SchedulingStrategiesTest.java     |  6 +-
 .../surefire/testng/utils/MethodSelector.java      |  2 +-
 .../maven/surefire/testng/utils/Stoppable.java     |  4 +-
 .../test/java/testng/utils/MethodSelectorTest.java |  2 +-
 .../testng/ConfigurationAwareTestNGReporter.java   |  2 +-
 .../surefire/testng/TestNGDirectoryTestSuite.java  | 10 ++--
 .../maven/surefire/testng/TestNGExecutor.java      | 20 +++----
 .../maven/surefire/testng/TestNGProvider.java      | 46 ++++++++--------
 .../maven/surefire/testng/TestNGReporter.java      | 14 ++---
 .../maven/surefire/testng/TestNGXmlTestSuite.java  |  4 +-
 .../apache/maven/surefire/testng/TestSuite.java    | 10 ++--
 .../testng/conf/AbstractDirectConfigurator.java    |  4 +-
 .../maven/surefire/testng/conf/Configurator.java   |  4 +-
 .../testng/conf/TestNG4751Configurator.java        |  4 +-
 .../testng/conf/TestNG510Configurator.java         |  2 +-
 .../testng/conf/TestNG513Configurator.java         |  2 +-
 .../testng/conf/TestNG5141Configurator.java        |  2 +-
 .../testng/conf/TestNG5143Configurator.java        |  2 +-
 .../surefire/testng/conf/TestNG52Configurator.java |  4 +-
 .../surefire/testng/conf/TestNG60Configurator.java |  2 +-
 .../testng/conf/TestNGMapConfigurator.java         |  8 +--
 ...e.maven.surefire.api.provider.SurefireProvider} |  0
 .../maven/surefire/testng/TestNGReporterTest.java  |  6 +-
 .../testng/conf/TestNG513ConfiguratorTest.java     |  2 +-
 .../testng/conf/TestNG5141ConfiguratorTest.java    |  2 +-
 .../testng/conf/TestNG5143ConfiguratorTest.java    |  2 +-
 .../testng/conf/TestNGMapConfiguratorTest.java     |  2 +-
 ...e.maven.surefire.api.provider.SurefireProvider} |  0
 357 files changed, 1328 insertions(+), 1272 deletions(-)

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.Mojo;
 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.Component;
 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 java.util.Collection;
 
 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 @@ package org.apache.maven.plugin.failsafe.util;
  */
 
 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 @@ package org.apache.maven.plugin.failsafe;
  */
 
 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 @@ package org.apache.maven.plugin.failsafe;
  */
 
 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.ModularClasspath;
 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.isBuiltInJava9AtLeast
 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.extensions.SurefireStatelessTestsetInfoR
 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.ClasspathConfiguration;
 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.execution.MavenSession;
 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 java.util.List;
 
 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.KeyValueSource;
 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.Classpath;
 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.AbstractPathConfiguration;
 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.CommandlineExecutor;
 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.dra
 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 java.nio.file.Files.isDirectory;
 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.createTempFile;
 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.Callable;
 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 @@ package org.apache.maven.plugin.surefire.booterclient.lazytestprovider;
  * 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 @@ import java.io.IOException;
  *
  * @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 @@ package org.apache.maven.plugin.surefire.booterclient.lazytestprovider;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.lazytestprovider;
  * 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.atomic.AtomicReference;
 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 @@ package org.apache.maven.plugin.surefire.booterclient.lazytestprovider;
  * 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.ConcurrentLinkedQueue;
 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 @@ public final class TestProvidingInputStream
             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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
 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 java.util.concurrent.atomic.AtomicLong;
 
 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.booterclient.output;
  * 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 @@ package org.apache.maven.plugin.surefire.extensions;
 
 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.Iterator;
 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 @@ package org.apache.maven.plugin.surefire.extensions;
  * 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 @@ package org.apache.maven.plugin.surefire.extensions;
  */
 
 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.HashMap;
 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.ConsoleOutputFileReporter;
 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 @@ package org.apache.maven.plugin.surefire.extensions;
  */
 
 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.SO_REUSEADDR;
 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.TestSetStats;
 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.plugin.surefire.report.WrappedReportEntry;
 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 @@ package org.apache.maven.plugin.surefire.report;
  */
 
 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.atomic.AtomicStampedReference;
 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.plugin.surefire.log.api.ConsoleLogger;
 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.ConsoleOutputReportEventListener;
 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.ERROR;
 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 @@ package org.apache.maven.plugin.surefire.report;
  * 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 @@ package org.apache.maven.plugin.surefire.report;
  */
 
 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 @@ package org.apache.maven.plugin.surefire.report;
  * 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 @@ package org.apache.maven.plugin.surefire.report;
 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 @@ package org.apache.maven.plugin.surefire.report;
  */
 
 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.plugin.surefire.booterclient.output.InPluginProcessDumpS
 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 @@ package org.apache.maven.plugin.surefire.report;
  * 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.ConsoleOutputReportEventListener;
 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 @@ package org.apache.maven.plugin.surefire.report;
  */
 
 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.Queue;
 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 @@ package org.apache.maven.plugin.surefire.report;
  */
 
 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.IOException;
 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 @@ package org.apache.maven.plugin.surefire.report;
  * 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 @@ package org.apache.maven.plugin.surefire.runorder;
 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 @@ package org.apache.maven.plugin.surefire.util;
 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.io.File;
 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 @@ public class DirectoryScanner
         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 @@ package org.apache.maven.plugin.surefire.util;
  * 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 java.util.Set;
 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 @@ package org.apache.maven.surefire.report;
  * 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.Classpath;
 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.Classpath;
 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 org.mockito.ArgumentCaptor;
 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 @@ public class CommonReflectorTest
         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.SurefireConsoleOutputReporter
 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 @@ package org.apache.maven.plugin.surefire;
 
 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.ClassLoaderConfiguration;
 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.HashMap;
 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.Classpath;
 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.HashMap;
 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.ClassLoaderConfiguration;
 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.lazytestprovider.Notifiable
 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.BlockingQueue;
 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 @@ package org.apache.maven.plugin.surefire.booterclient;
  */
 
 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 @@ final class MockNotifiableTestStream
     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 @@ package org.apache.maven.plugin.surefire.booterclient;
  */
 
 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.SurefireStatelessReporter;
 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 @@ package org.apache.maven.plugin.surefire.booterclient.lazytestprovider;
  * 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 java.util.NoSuchElementException;
 
 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 @@ package org.apache.maven.plugin.surefire.booterclient.lazytestprovider;
  * 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 java.util.concurrent.TimeUnit;
 
 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.booterclient.lazytestprovider.Notifiable
 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_FA
 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 @@ package org.apache.maven.plugin.surefire.extensions;
  */
 
 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.booterclient.output.ForkedProcessStringE
 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 java.util.concurrent.atomic.AtomicInteger;
 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 @@ package org.apache.maven.plugin.surefire.extensions;
  */
 
 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.nio.channels.WritableByteChannel;
 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.extensions.SurefireStatelessTestsetInfoR
 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.plugin.surefire.booterclient.output.DeserializedStacktra
 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.ConcurrentHashMap;
 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 @@ package org.apache.maven.plugin.surefire.report;
  * 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 @@ package org.apache.maven.plugin.surefire.report;
  * 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.Arrays;
 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.Artifact;
 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 @@ package org.apache.maven.plugin.surefire.util;
  * 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.TestLessIn
 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.ConsoleReporter;
 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 java.util.concurrent.Executors;
 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.TestSetStats;
 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.Mojo;
 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 @@ package org.apache.maven.plugin.surefire;
 
 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 @@ package org.apache.maven.surefire.booter;
  * 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 @@ package org.apache.maven.surefire.booter;
  * @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 java.util.Objects;
 
 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 final class Command
 
     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 final class Command
      */
     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 @@ package org.apache.maven.surefire.booter;
  * 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 88%
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 @@ package org.apache.maven.surefire.booter;
  * 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 @@ package org.apache.maven.surefire.booter;
  */
 
 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 static org.apache.maven.surefire.report.RunMode.NORMAL_RUN;
+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.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 @@ package org.apache.maven.surefire.booter;
  * 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 98%
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 94%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 88%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 90%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 88%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 88%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 92%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 90%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 85%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 85%
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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire.eventapi;
  * 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 @@ package org.apache.maven.surefire;
  */
 
 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 96%
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.Collections;
 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 @@ package org.apache.maven.surefire.providerapi;
  * 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 90%
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 @@ package org.apache.maven.surefire.providerapi;
  * 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 @@ package org.apache.maven.surefire.providerapi;
  * 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 @@ package org.apache.maven.surefire.providerapi;
  */
 
 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 @@ public interface SurefireProvider
      *                    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 99%
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/DataZT3A.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/DataZT3A.java
copy to surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleStream.java
index 5abbf9f..269b68f 100644
--- a/surefire-api/src/test/java/org/apache/maven/surefire/util/testdata/DataZT3A.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 @@ package org.apache.maven.surefire.util.testdata;
  */
 
 /**
- *
+ * Delegates to {@link System#out}.
  */
-public class DataZT3A
+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 98%
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 @@ package org.apache.maven.surefire.report;
  */
 
 
-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 96%
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 @@ package org.apache.maven.surefire.report;
  * 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 95%
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 @@ package org.apache.maven.surefire.report;
  * 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 @@ public interface RunListener
 
     /**
      * 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 97%
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 @@ package org.apache.maven.surefire.report;
  * 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 97%
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 90%
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 @@ package org.apache.maven.plugin.surefire.runorder;
  * 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 @@ public class RunEntryStatistics
         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 97%
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 @@ package org.apache.maven.plugin.surefire.runorder;
  * 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 java.util.concurrent.ConcurrentHashMap;
 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 @@ public final class RunEntryStatisticsMap
         }
     }
 
-    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 98%
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 97%
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 @@ package org.apache.maven.surefire.testset;
 
 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 95%
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 @@ package org.apache.maven.surefire.testset;
  */
 
 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.StringUtils.split;
 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 98%
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 @@ package org.apache.maven.surefire.util;
  * 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 96%
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 @@ package org.apache.maven.surefire.util;
  * 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 @@ public class RunOrder
     {
         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 98%
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.Iterator;
 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 98%
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 98%
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 97%
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
@@ -1 +0,0 @@
-package org.apache.maven.surefire.report;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

/**
 * Delegates to {@link System#out}.
 */
public interface ConsoleStream
{
    void println( String message );
}
\ No newline at end of file
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 @@ package org.apache.maven;
 
 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 @@ package org.apache.maven.surefire;
  */
 
 import junit.framework.TestCase;
+import org.apache.maven.surefire.api.filter.SpecificTestClassFilter;
 
 /**
  *
@@ -29,7 +30,7 @@ public class SpecificTestClassFilterTest extends TestCase
     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 class SpecificTestClassFilterTest extends TestCase
     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 class SpecificTestClassFilterTest extends TestCase
     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 @@ package org.apache.maven.plugin.surefire.runorder;
 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 @@ public class ThreadedExecutionSchedulerTest
     {
         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 @@ package org.apache.maven.surefire.testset;
 
 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 99%
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.LinkedHashSet;
 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.io.IOException;
 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 94%
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 @@ package org.apache.maven.surefire.util;
 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 @@ public class RunOrderTest
 
         }
     }
-}
\ 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 @@ public class ScanResultTest
         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 96%
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 @@ public class TestsToRunTest
         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 java.util.concurrent.atomic.AtomicLong;
 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.ExecutionException;
 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 @@ package org.apache.maven.surefire.util.internal;
  * 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.IOException;
 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 @@ package org.apache.maven.surefire.booter;
  */
 
 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.NEW;
 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 @@ package org.apache.maven.surefire.booter;
  */
 
 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.ALL;
 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 @@ package org.apache.maven.surefire.booter;
 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 @@ import static org.apache.maven.surefire.util.ReflectionUtils.loadClass;
  * {@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 @@ final class LazyTestsToRun
     /**
      * 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 @@ package org.apache.maven.surefire.booter;
  * 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.unixProcessInfo;
 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.io.File;
 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.io.PrintStream;
 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 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 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.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 @@ package org.apache.maven.surefire.booter;
  */
 
 
-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 @@ package org.apache.maven.surefire.booter;
  * 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.List;
 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 @@ package org.apache.maven.surefire.booter;
  * 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_FREE_BSD;
 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.Objects;
 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 @@ package org.apache.maven.surefire.booter.spi;
  * 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.HashMap;
 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 @@ package org.apache.maven.surefire.booter.spi;
  */
 
 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 java.util.concurrent.atomic.AtomicBoolean;
 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 @@ package org.apache.maven.surefire.booter.spi;
  * 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 @@ package org.apache.maven.surefire.booter.spi;
  * 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.SO_REUSEADDR;
 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 @@ package org.apache.maven.surefire.booter;
 
 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.FutureTask;
 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 @@ package org.apache.maven.surefire.booter;
  */
 
 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 @@ package org.apache.maven.surefire.booter;
  * 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 @@ package org.apache.maven.surefire.booter;
  */
 
 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 @@ public class IsolatedClassLoaderTest
         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 @@ package org.apache.maven.surefire.booter;
  */
 
 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.Collections;
 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 @@ package org.apache.maven.surefire.booter.spi;
  * 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.IOException;
 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 @@ package org.apache.maven.surefire.booter.spi;
  * 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 java.util.Map;
 
 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 @@ package org.apache.maven.surefire.extensions;
  * 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 @@ package org.apache.maven.surefire.extensions;
  * 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 @@ package org.apache.maven.surefire.extensions;
  * 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 @@ package org.apache.maven.surefire.extensions;
  * 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 @@ package org.apache.maven.surefire.extensions;
  * 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 @@ package org.apache.maven.surefire.extensions;
  */
 
 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 @@ package org.apache.maven.surefire.extensions;
  * 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 @@ package org.apache.maven.surefire.extensions;
  */
 
 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.ClosedChannelException;
 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 @@ package org.apache.maven.surefire.spi;
  * 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-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 @@ package org.apache.maven.surefire.report;
  */
 
 
-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 @@ import java.util.Objects;
  * @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 @@ package org.apache.maven.surefire.report;
  * 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 @@ package org.apache.maven.surefire.report;
  * 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 java.util.concurrent.FutureTask;
 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.Constructor;
 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 @@ package org.apache.maven.surefire.common.junit3;
  */
 
 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.Iterator;
 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 org.junit.runner.Description;
 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 @@ package org.apache.maven.surefire.common.junit4;
  * 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 org.junit.runner.notification.Failure;
 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 @@ package org.apache.maven.surefire.common.junit4;
 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 @@ package org.apache.maven.surefire.common.junit4;
  * 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 @@ public class JUnit4StackTraceWriter
     /**
      * 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 @@ public class JUnit4StackTraceWriter
     /**
      * 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 @@ package org.apache.maven.surefire.common.junit4;
 
 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.ConcurrentLinkedQueue;
 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 @@ package org.apache.maven.surefire.common.junit4;
  */
 
 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 @@ package org.apache.maven.surefire.common.junit4;
 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 @@ public class JUnit4RunListenerTest
     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 76%
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 @@ package org.apache.maven.surefire.junit4;
  * 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 @@ public class MockReporter
 
     private final AtomicInteger testError = new AtomicInteger();
 
-    public MockReporter()
+    MockReporter()
     {
     }
 
@@ -100,11 +101,6 @@ public class MockReporter
         return null;
     }
 
-    public void testSkippedByUser( ReportEntry report )
-    {
-        testSkipped( report );
-    }
-
     public int getTestSucceeded()
     {
         return testSucceeded.get();
@@ -131,9 +127,4 @@ public class MockReporter
     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 @@ package org.apache.maven.surefire.junit4;
 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 @@ package org.apache.maven.surefire.common.junit48;
  * 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 @@ public class FilterFactory
 
     /**
      * @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 @@ public class FilterFactory
 
     /**
      * 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 @@ package org.apache.maven.surefire.common.junit48;
  * 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 @@ package org.apache.maven.surefire.common.junit48;
  */
 
 
-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 @@ package org.apache.maven.surefire.common.junit48;
  * 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 @@ package org.apache.maven.surefire.common.junit48;
  * 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 @@ package org.apache.maven.surefire.common.junit48;
 
 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.empty;
 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.Optional;
 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 @@ package org.apache.maven.surefire.junitplatform;
 
 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.concurrent.ConcurrentMap;
 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 @@ package org.apache.maven.surefire.junitplatform;
  * 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 @@ package org.apache.maven.surefire.junitplatform;
 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 @@ package org.apache.maven.surefire.junitplatform;
 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.List;
 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.Map;
 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 @@ package org.apache.maven.surefire.junitplatform;
  * 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 static org.mockito.Mockito.when;
 
 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 @@ package org.apache.maven.surefire.junit;
 
 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.InvocationTargetException;
 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 @@ package org.apache.maven.surefire.junit;
  * 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.Method;
 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 @@ package org.apache.maven.surefire.junit;
  * 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.lang.reflect.Method;
 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 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 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.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.Test;
 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 @@ package org.apache.maven.surefire.junit4;
  * 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.JUnit4Reflector.createIgno
 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
@@ -1 +1,60 @@
-package org.apache.maven.surefire.junit4;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

import org.apache.maven.surefire.util.internal.ClassMethod;
import org.apache.maven.surefire.testset.TestListResolver;
import org.junit.runner.
 Description;
import org.junit.runner.manipulation.Filter;

import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.toClassMethod;
import static org.apache.maven.surefire.testset.TestListResolver.toClassFileName;

/**
 * Method filter used in {@link JUnit4Provider}.
 */
final class TestResolverFilter
    extends Filter
{
    private final TestListResolver methodFilter;

    TestResolverFilter( TestListResolver methodFilter )
    {
        this.methodFilter = methodFilter;
    }

    @Override
    public boolean shouldRun( Description description )
    {
        // class: Java class name; method: 1. "testMethod" or 2. "testMethod[5+whatever]" in @Parameterized
        final ClassMethod cm = toClassMethod( description );
        final boolean isSuite = description.isSuite();
        final boolean isValidTest = description.isTest() && cm.isValidTest();
        final String clazz = cm.getClazz();
        final String method = cm.getMethod();
        return isSuite || isV
 alidTest && methodFilter.shouldRun( toClassFileName( clazz ), method );
    }

    @Override
    public String describe()
    {
        return methodFilter.toString();
    }
}
\ No newline at end of file
+package org.apache.maven.surefire.junit4;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.surefire.api.util.internal.ClassMethod;
+import org.apache.maven.surefire.api.testset.TestListResolver;
+import org.junit.runner.Description;
+import org.junit.runner.manipulation.Filter;
+
+import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.toClassMethod;
+import static org.apache.maven.surefire.api.testset.TestListResolver.toClassFileName;
+
+/**
+ * Method filter used in {@link JUnit4Provider}.
+ */
+final class TestResolverFilter
+    extends Filter
+{
+    private final TestListResolver methodFilter;
+
+    TestResolverFilter( TestListResolver methodFilter )
+    {
+        this.methodFilter = methodFilter;
+    }
+
+    @Override
+    public boolean shouldRun( Description description )
+    {
+        // class: Java class name; method: 1. "testMethod" or 2. "testMethod[5+whatever]" in @Parameterized
+        final ClassMethod cm = toClassMethod( description );
+        final boolean isSuite = description.isSuite();
+        final boolean isValidTest = description.isTest() && cm.isValidTest();
+        final String clazz = cm.getClazz();
+        final String method = cm.getMethod();
+        return isSuite || isValidTest && methodFilter.shouldRun( toClassFileName( clazz ), method );
+    }
+
+    @Override
+    public String describe()
+    {
+        return methodFilter.toString();
+    }
+}
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 @@ package org.apache.maven.surefire.junit4;
  * 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 @@ package org.apache.maven.surefire.junitcore;
 
 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 @@ package org.apache.maven.surefire.junitcore;
  */
 
 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.ExecutorService;
 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 @@ package org.apache.maven.surefire.junitcore;
  */
 
 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.ArrayList;
 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 @@ package org.apache.maven.surefire.junitcore;
  * 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.JUnit4ProviderUtil.generat
 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 @@ package org.apache.maven.surefire.junitcore;
 
 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 @@ package org.apache.maven.surefire.junitcore;
 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 @@ package org.apache.maven.surefire.junitcore;
  * 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 @@ package org.apache.maven.surefire.junitcore;
 
 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 @@ package org.apache.maven.surefire.junitcore;
  * 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.Collections;
 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 @@ package org.apache.maven.surefire.junitcore;
  * 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 @@ package org.apache.maven.surefire.junitcore;
  * 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.ConcurrentLinkedQueue;
 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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ abstract class AbstractThreadPoolStrategy
             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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ public abstract class ParallelComputer
             }
         }
     }
-}
\ 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.Executors;
 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 @@ package org.apache.maven.surefire.junitcore.pc;
  */
 
 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 @@ final class ParallelComputerUtil
     {
         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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ final class SharedThreadPoolStrategy
         }
         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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ final class SingleThreadScheduler
         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.io.PrintStream;
 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.annotation.Annotation;
 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.HashMap;
 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.SurefireStatelessReporter;
 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.HashMap;
 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 82%
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 @@ package org.apache.maven.surefire.junit4;
 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 @@ public class MockReporter
 
     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.List;
 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 @@ public class Surefire746Test
                     "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 @@ package org.apache.maven.surefire.junitcore;
 
 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 @@ package org.apache.maven.surefire.junitcore;
  * 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 @@ package org.apache.maven.surefire.junitcore.pc;
  */
 
 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 @@ public final class OptimizedParallelComputerTest
         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 @@ package org.apache.maven.surefire.junitcore.pc;
  */
 
 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 @@ package org.apache.maven.surefire.junitcore.pc;
  */
 
 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 @@ package org.apache.maven.surefire.junitcore.pc;
  * 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 @@ package org.apache.maven.surefire.testng.utils;
 
 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 @@ package org.apache.maven.surefire.testng.utils;
  * under the License.
  */
 
+import org.apache.maven.surefire.api.report.RunListener;
+
 /**
  * Covers configuration parameter {@code skipAfterFailureCount}.
  *
@@ -28,7 +30,7 @@ package org.apache.maven.surefire.testng.utils;
 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 @@ package testng.utils;
 
 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 @@ package org.apache.maven.surefire.testng;
  */
 
 
-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.HashMap;
 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 @@ package org.apache.maven.surefire.testng;
  * 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.List;
 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 @@ package org.apache.maven.surefire.testng;
  * 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 @@ public class TestNGProvider
 
         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 @@ package org.apache.maven.surefire.testng;
  * 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 org.testng.ITestResult;
 
 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.ArrayList;
 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 @@ package org.apache.maven.surefire.testng;
  * 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.HashMap;
 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 @@ package org.apache.maven.surefire.testng.conf;
 
 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 @@ public interface Configurator
 
     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 @@ package org.apache.maven.surefire.testng.conf;
  * 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 @@ public class TestNG4751Configurator
     {
         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 @@ package org.apache.maven.surefire.testng.conf;
  * 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 @@ package org.apache.maven.surefire.testng.conf;
  * 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 @@ package org.apache.maven.surefire.testng.conf;
  * 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 @@ package org.apache.maven.surefire.testng.conf;
  */
 
 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 @@ package org.apache.maven.surefire.testng.conf;
  * 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 @@ public class TestNG52Configurator
     {
         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 @@ package org.apache.maven.surefire.testng.conf;
 
 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.ArrayList;
 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 @@ public class TestNGMapConfigurator
             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 @@ package org.apache.maven.surefire.testng;
  */
 
 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 @@ package org.apache.maven.surefire.testng.conf;
  */
 
 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 @@ package org.apache.maven.surefire.testng.conf;
  */
 
 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.HashMap;
 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.HashMap;
 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