diff --git a/pom.xml b/pom.xml
index fa31eca..8e30a30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,16 +46,6 @@
 
   <dependencies>
     <!--
-     | utilities
-    -->
-    <dependency>
-      <groupId>com.google.auto.service</groupId>
-      <artifactId>auto-service</artifactId>
-      <version>1.0-rc5</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!--
      | Sling Feature Model libraries
     -->
     <dependency>
diff --git a/src/main/java/org/apache/sling/feature/diff/FeatureDiff.java b/src/main/java/org/apache/sling/feature/diff/FeatureDiff.java
index f1ccb3b..7398197 100644
--- a/src/main/java/org/apache/sling/feature/diff/FeatureDiff.java
+++ b/src/main/java/org/apache/sling/feature/diff/FeatureDiff.java
@@ -17,7 +17,6 @@
 package org.apache.sling.feature.diff;
 
 import static java.util.Objects.requireNonNull;
-import static java.util.ServiceLoader.load;
 
 import java.util.Collection;
 import java.util.LinkedList;
@@ -25,12 +24,23 @@
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.Prototype;
+import org.apache.sling.feature.diff.impl.BundlesComparator;
+import org.apache.sling.feature.diff.impl.ConfigurationsComparator;
+import org.apache.sling.feature.diff.impl.ExtensionsComparator;
 import org.apache.sling.feature.diff.impl.FeatureElementComparator;
+import org.apache.sling.feature.diff.impl.FrameworkPropertiesComparator;
 
 public final class FeatureDiff {
 
     private static final String UPDATER_CLASSIFIER = "updater";
 
+    private static final FeatureElementComparator[] comparators = new FeatureElementComparator[] {
+        new BundlesComparator(),
+        new ConfigurationsComparator(),
+        new ExtensionsComparator(),
+        new FrameworkPropertiesComparator()
+    };
+
     public static Feature compareFeatures(DiffRequest diffRequest) {
         requireNonNull(diffRequest, "Impossible to compare features without specifying them.");
         Feature previous = requireNonNull(diffRequest.getPrevious(), "Impossible to compare null previous feature.");
@@ -70,7 +80,7 @@
     protected static Iterable<FeatureElementComparator> loadComparators(DiffRequest diffRequest) {
         Collection<FeatureElementComparator> filteredComparators = new LinkedList<>();
 
-        for (FeatureElementComparator comparator : load(FeatureElementComparator.class)) {
+        for (FeatureElementComparator comparator : comparators) {
             boolean included = !diffRequest.getIncludeComparators().isEmpty() ? diffRequest.getIncludeComparators().contains(comparator.getId()) : true;
             boolean excluded = diffRequest.getExcludeComparators().contains(comparator.getId());
 
diff --git a/src/main/java/org/apache/sling/feature/diff/impl/BundlesComparator.java b/src/main/java/org/apache/sling/feature/diff/impl/BundlesComparator.java
index e225a11..587e511 100644
--- a/src/main/java/org/apache/sling/feature/diff/impl/BundlesComparator.java
+++ b/src/main/java/org/apache/sling/feature/diff/impl/BundlesComparator.java
@@ -20,9 +20,6 @@
 import org.apache.sling.feature.Artifacts;
 import org.apache.sling.feature.Feature;
 
-import com.google.auto.service.AutoService;
-
-@AutoService(FeatureElementComparator.class)
 public final class BundlesComparator extends AbstractFeatureElementComparator {
 
     public BundlesComparator() {
diff --git a/src/main/java/org/apache/sling/feature/diff/impl/ConfigurationsComparator.java b/src/main/java/org/apache/sling/feature/diff/impl/ConfigurationsComparator.java
index e4190fc..0590dc4 100644
--- a/src/main/java/org/apache/sling/feature/diff/impl/ConfigurationsComparator.java
+++ b/src/main/java/org/apache/sling/feature/diff/impl/ConfigurationsComparator.java
@@ -29,9 +29,6 @@
 import org.apache.sling.feature.Configurations;
 import org.apache.sling.feature.Feature;
 
-import com.google.auto.service.AutoService;
-
-@AutoService(FeatureElementComparator.class)
 public final class ConfigurationsComparator extends AbstractFeatureElementComparator {
 
     public ConfigurationsComparator() {
diff --git a/src/main/java/org/apache/sling/feature/diff/impl/ExtensionsComparator.java b/src/main/java/org/apache/sling/feature/diff/impl/ExtensionsComparator.java
index b30cfe0..c9850b6 100644
--- a/src/main/java/org/apache/sling/feature/diff/impl/ExtensionsComparator.java
+++ b/src/main/java/org/apache/sling/feature/diff/impl/ExtensionsComparator.java
@@ -29,9 +29,6 @@
 import org.apache.sling.feature.Extensions;
 import org.apache.sling.feature.Feature;
 
-import com.google.auto.service.AutoService;
-
-@AutoService(FeatureElementComparator.class)
 public final class ExtensionsComparator extends AbstractFeatureElementComparator {
 
     public ExtensionsComparator() {
diff --git a/src/main/java/org/apache/sling/feature/diff/impl/FrameworkPropertiesComparator.java b/src/main/java/org/apache/sling/feature/diff/impl/FrameworkPropertiesComparator.java
index 0dd5f4e..1f26373 100644
--- a/src/main/java/org/apache/sling/feature/diff/impl/FrameworkPropertiesComparator.java
+++ b/src/main/java/org/apache/sling/feature/diff/impl/FrameworkPropertiesComparator.java
@@ -22,9 +22,6 @@
 
 import org.apache.sling.feature.Feature;
 
-import com.google.auto.service.AutoService;
-
-@AutoService(FeatureElementComparator.class)
 public final class FrameworkPropertiesComparator extends AbstractFeatureElementComparator {
 
     public FrameworkPropertiesComparator() {
