diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
index 10e26a2..398524f 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
@@ -1556,7 +1556,7 @@
                     }
                     else if ( canReceive( refBundle, configBundleLocation ) )
                     {
-                        helper.provide( ref, this.config, this.properties );
+                        helper.provideConfiguration( ref, this.config, this.properties );
                     }
                     else
                     {
@@ -1628,7 +1628,7 @@
                     }
                     else if ( canReceive( srBundle, configLocation ) )
                     {
-                        this.helper.remove( sr, this.config );
+                        this.helper.removeConfiguration( sr, this.config );
                     }
                     else
                     {
@@ -1705,7 +1705,7 @@
                     if ( wasVisible && !isVisible )
                     {
                         // call deleted method
-                        helper.remove( sr );
+                        helper.removeConfiguration( sr, this.config );
                         log( LogService.LOG_DEBUG, "Configuration {0} revoked from {1} (no more visibility)",
                             new Object[]
                                 { config.getPid(), ConfigurationManager.toString( sr ) } );
@@ -1713,7 +1713,7 @@
                     else if ( !wasVisible && isVisible )
                     {
                         // call updated method
-                        helper.provide( sr, this.config, this.properties );
+                        helper.provideConfiguration( sr, this.config, this.properties );
                         log( LogService.LOG_DEBUG, "Configuration {0} provided to {1} (new visibility)", new Object[]
                             { config.getPid(), ConfigurationManager.toString( sr ) } );
                     }
diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/helper/BaseTracker.java b/configadmin/src/main/java/org/apache/felix/cm/impl/helper/BaseTracker.java
index d57bd41..ab41181 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/helper/BaseTracker.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/helper/BaseTracker.java
@@ -143,10 +143,10 @@
     protected abstract boolean isFactory();
 
     // Updates
-    public abstract void provide( ServiceReference<S> service, ConfigurationImpl config, Dictionary<String, ?> properties );
+    public abstract void provideConfiguration( ServiceReference<S> service, ConfigurationImpl config, Dictionary<String, ?> properties );
 
 
-    public abstract void remove( ServiceReference<S> service, ConfigurationImpl config );
+    public abstract void removeConfiguration( ServiceReference<S> service, ConfigurationImpl config );
 
 
     protected final S getRealService( ServiceReference<S> reference )
diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/helper/ManagedServiceFactoryTracker.java b/configadmin/src/main/java/org/apache/felix/cm/impl/helper/ManagedServiceFactoryTracker.java
index c9a36ca..4f6fc81 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/helper/ManagedServiceFactoryTracker.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/helper/ManagedServiceFactoryTracker.java
@@ -42,7 +42,7 @@
 
 
     @Override
-    public void provide( ServiceReference<ManagedServiceFactory> reference, final ConfigurationImpl config, final Dictionary<String, ?> rawProps )
+    public void provideConfiguration( ServiceReference<ManagedServiceFactory> reference, final ConfigurationImpl config, final Dictionary<String, ?> rawProps )
     {
         ManagedServiceFactory service = getRealService( reference );
         if ( service != null )
@@ -65,7 +65,7 @@
 
 
     @Override
-    public void remove( ServiceReference<ManagedServiceFactory> reference, final ConfigurationImpl config )
+    public void removeConfiguration( ServiceReference<ManagedServiceFactory> reference, final ConfigurationImpl config )
     {
         ManagedServiceFactory service = this.getRealService( reference );
         if ( service != null )
diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/helper/ManagedServiceTracker.java b/configadmin/src/main/java/org/apache/felix/cm/impl/helper/ManagedServiceTracker.java
index 2b6bbea..be04d70 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/helper/ManagedServiceTracker.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/helper/ManagedServiceTracker.java
@@ -43,7 +43,7 @@
 
 
     @Override
-    public void provide( ServiceReference<ManagedService> service, final ConfigurationImpl config, Dictionary<String, ?> properties )
+    public void provideConfiguration( ServiceReference<ManagedService> service, final ConfigurationImpl config, Dictionary<String, ?> properties )
     {
         ManagedService srv = this.getRealService( service );
         if ( srv != null )
@@ -65,7 +65,7 @@
     }
 
     @Override
-    public void remove( ServiceReference<ManagedService> service, final ConfigurationImpl config )
+    public void removeConfiguration( ServiceReference<ManagedService> service, final ConfigurationImpl config )
     {
         ManagedService srv = this.getRealService( service );
         try
