diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/InvocationUtil.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/InvocationUtil.java
index 2083d8d..ecaeeb1 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/InvocationUtil.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/InvocationUtil.java
@@ -5,13 +5,6 @@
 import java.lang.reflect.Modifier;
 
 public class InvocationUtil {
-    public static void invokeCallbackMethod(Object[] instances, String methodName, Class[][] signatures, Object[][] parameters) throws NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
-        for (int i = 0; i < instances.length; i++) {
-            invokeCallbackMethod(instances[i], methodName, signatures, parameters);
-        }
-        throw new NoSuchMethodException("Method '" + methodName + "' does not exist. Callback skipped.");
-    }
-
     public static void invokeCallbackMethod(Object instance, String methodName, Class[][] signatures, Object[][] parameters) throws NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
         Class currentClazz = instance.getClass();
         while (currentClazz != null) {
@@ -43,6 +36,6 @@
                 // ignore this and keep looking
             }
         }
-        throw new NoSuchMethodException();
+        throw new NoSuchMethodException(name);
     }
 }
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
index ac70c71..3728ed3 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
@@ -30,14 +30,16 @@
     }
     
     protected void invokeCallbackMethod(Object[] instances, String methodName, Class[][] signatures, Object[][] parameters) {
-        try {
-            InvocationUtil.invokeCallbackMethod(instances, methodName, signatures, parameters);
-        }
-        catch (NoSuchMethodException e) {
-            m_logger.log(Logger.LOG_DEBUG, "Method '" + methodName + "' does not exist. Callback skipped.");
-        }
-        catch (Exception e) {
-            m_logger.log(Logger.LOG_DEBUG, "Invocation of '" + methodName + "' failed.", e);
+        for (int i = 0; i < instances.length; i++) {
+        	try {
+                InvocationUtil.invokeCallbackMethod(instances[i], methodName, signatures, parameters);
+            }
+            catch (NoSuchMethodException e) {
+                // if the method does not exist, ignore it
+            }
+            catch (Exception e) {
+                m_logger.log(Logger.LOG_WARNING, "Invocation of '" + methodName + "' failed.", e);
+            }
         }
     }
 }
