diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/scanner/ApiRegionsExtensionScanner.java b/src/main/java/org/apache/sling/feature/extension/apiregions/scanner/ApiRegionsExtensionScanner.java
deleted file mode 100644
index 088baff..0000000
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/scanner/ApiRegionsExtensionScanner.java
+++ /dev/null
@@ -1,56 +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.
- */
-package org.apache.sling.feature.extension.apiregions.scanner;
-
-import java.io.IOException;
-
-import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.builder.ArtifactProvider;
-import org.apache.sling.feature.extension.apiregions.api.ApiRegions;
-import org.apache.sling.feature.scanner.ContainerDescriptor;
-import org.apache.sling.feature.scanner.FeatureDescriptor;
-import org.apache.sling.feature.scanner.impl.FeatureDescriptorImpl;
-import org.apache.sling.feature.scanner.spi.ExtensionScanner;
-
-public class ApiRegionsExtensionScanner implements ExtensionScanner {
-
-    @Override
-    public String getId() {
-        return ApiRegions.EXTENSION_NAME;
-    }
-
-    @Override
-    public String getName() {
-        return "Api Regions extention scanner";
-    }
-
-    @Override
-    public ContainerDescriptor scan(Feature feature, Extension extension, ArtifactProvider provider) throws IOException {
-        FeatureDescriptor featureDescriptor = new FeatureDescriptorImpl(feature);
-        /*
-         * for (Artifact artifact : feature.getBundles()) { URL file =
-         * provider.provide(artifact.getId()); BundleDescriptor bundleDescriptor = new
-         * BundleDescriptorImpl(artifact, file, artifact.getStartOrder());
-         * featureDescriptor.getBundleDescriptors().add(bundleDescriptor); }
-         */
-        featureDescriptor.lock();
-
-        return featureDescriptor;
-    }
-
-}
diff --git a/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.ExtensionScanner b/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.ExtensionScanner
deleted file mode 100644
index 34846b8..0000000
--- a/src/main/resources/META-INF/services/org.apache.sling.feature.scanner.spi.ExtensionScanner
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.sling.feature.extension.apiregions.scanner.ApiRegionsExtensionScanner
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsCrossFeatureDupsTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsCrossFeatureDupsTest.java
index 1785daa..7a71c0e 100644
--- a/src/test/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsCrossFeatureDupsTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsCrossFeatureDupsTest.java
@@ -17,15 +17,18 @@
 package org.apache.sling.feature.extension.apiregions.analyser;
 
 import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.analyser.Analyser;
 import org.apache.sling.feature.analyser.AnalyserResult;
 import org.apache.sling.feature.analyser.AnalyserResult.ArtifactReport;
 import org.apache.sling.feature.analyser.task.AnalyserTask;
 import org.apache.sling.feature.builder.ArtifactProvider;
-import org.apache.sling.feature.extension.apiregions.scanner.ApiRegionsExtensionScanner;
+import org.apache.sling.feature.extension.apiregions.api.ApiRegions;
 import org.apache.sling.feature.io.json.FeatureJSONReader;
+import org.apache.sling.feature.scanner.ContainerDescriptor;
 import org.apache.sling.feature.scanner.Scanner;
+import org.apache.sling.feature.scanner.spi.ExtensionScanner;
 import org.junit.Test;
 
 import java.io.File;
@@ -279,7 +282,7 @@
                 return null;
             }
         };
-        Scanner scanner = new Scanner(ap, Collections.singletonList(new ApiRegionsExtensionScanner()), Collections.emptyList());
+        Scanner scanner = new Scanner(ap, Collections.singletonList(new RegionScanner()), Collections.emptyList());
         return scanner;
     }
 
@@ -302,7 +305,7 @@
                 return null;
             }
         };
-        Scanner scanner = new Scanner(ap, Collections.singletonList(new ApiRegionsExtensionScanner()), Collections.emptyList());
+        Scanner scanner = new Scanner(ap, Collections.singletonList(new RegionScanner()), Collections.emptyList());
         return scanner;
     }
 
@@ -319,7 +322,33 @@
                 return null;
             }
         };
-        Scanner scanner = new Scanner(ap, Collections.singletonList(new ApiRegionsExtensionScanner()), Collections.emptyList());
+        Scanner scanner = new Scanner(ap, Collections.singletonList(new RegionScanner()), Collections.emptyList());
         return scanner;
     }
+
+    private static final class RegionScanner implements ExtensionScanner {
+
+        @Override
+        public String getId() {
+            return "region";
+        }
+
+        @Override
+        public String getName() {
+            return "region";
+        }
+
+        @Override
+        public ContainerDescriptor scan(Feature arg0, Extension arg1, ArtifactProvider arg2) throws IOException {
+            if ( arg1.getName().equals(ApiRegions.EXTENSION_NAME) ) {
+                final ContainerDescriptor desc = new ContainerDescriptor(arg1.getName()) {
+
+                };
+                desc.lock();
+                return desc;
+            }
+            return null;
+        }
+
+    }
 }
