diff --git a/core-common/src/main/java/org/glassfish/jersey/AbstractFeatureConfigurator.java b/core-common/src/main/java/org/glassfish/jersey/AbstractFeatureConfigurator.java
index dbc4308..61b7eb5 100644
--- a/core-common/src/main/java/org/glassfish/jersey/AbstractFeatureConfigurator.java
+++ b/core-common/src/main/java/org/glassfish/jersey/AbstractFeatureConfigurator.java
@@ -24,6 +24,7 @@
 
 import javax.ws.rs.RuntimeType;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -62,7 +63,7 @@
      * @param features list of features to be registered
      * @param bootstrapBag place where features are being registered
      */
-    protected void registerFeatures(List<Class<T>> features,
+    protected void registerFeatures(Collection<Class<T>> features,
                                     BootstrapBag bootstrapBag) {
         final List<AutoDiscoverable> autoDiscoverables = new ArrayList<>();
 
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/DynamicFeatureConfigurator.java b/core-common/src/main/java/org/glassfish/jersey/internal/DynamicFeatureConfigurator.java
index ed2c8fb..f8ea866 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/DynamicFeatureConfigurator.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/DynamicFeatureConfigurator.java
@@ -22,8 +22,10 @@
 
 import javax.ws.rs.RuntimeType;
 import javax.ws.rs.container.DynamicFeature;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * Registers JAX-RS {@link DynamicFeature} which are listed as SPIs for registration.
@@ -51,7 +53,8 @@
     public void init(InjectionManager injectionManager, BootstrapBag bootstrapBag) {
         final Map<String, Object> properties = bootstrapBag.getConfiguration().getProperties();
         if (PropertiesHelper.isJaxRsServiceLoadingEnabled(properties)) {
-            final List<Class<DynamicFeature>> dynamicFeatures = loadImplementations(properties);
+            final Set<Class<DynamicFeature>> dynamicFeatures = new HashSet<>();
+            dynamicFeatures.addAll(loadImplementations(properties));
             dynamicFeatures.addAll(loadImplementations(properties, DynamicFeature.class.getClassLoader()));
 
             registerFeatures(dynamicFeatures, bootstrapBag);
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/FeatureConfigurator.java b/core-common/src/main/java/org/glassfish/jersey/internal/FeatureConfigurator.java
index 24a24fb..4985407 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/FeatureConfigurator.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/FeatureConfigurator.java
@@ -22,8 +22,9 @@
 
 import javax.ws.rs.RuntimeType;
 import javax.ws.rs.core.Feature;
-import java.util.List;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * Registers JAX-RS {@link Feature} which are listed as SPIs for registration.
@@ -44,7 +45,8 @@
     public void init(InjectionManager injectionManager, BootstrapBag bootstrapBag) {
         final Map<String, Object> properties = bootstrapBag.getConfiguration().getProperties();
         if (PropertiesHelper.isJaxRsServiceLoadingEnabled(properties)) {
-            final List<Class<Feature>> features = loadImplementations(properties);
+            final Set<Class<Feature>> features = new HashSet<>();
+            features.addAll(loadImplementations(properties));
             features.addAll(loadImplementations(properties, Feature.class.getClassLoader()));
 
             registerFeatures(features, bootstrapBag);
