diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTask.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTask.java
index 668f333..613d74d 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTask.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTask.java
@@ -40,9 +40,4 @@
      * Blacklist the handler.
      */
     void blackListHandler();
-
-    /**
-     * Is the delivery finished
-     */
-    boolean finished();
 }
diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
index d757447..e5b3c03 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
@@ -40,9 +40,6 @@
     // Used to blacklist the service or get the service object for the reference
     private final BlacklistingHandlerTasks m_handlerTasks;
 
-    // Is this handler finished
-    private volatile boolean m_finished = false;
-
     /**
      * Construct a delivery task for the given service and event.
      *
@@ -89,7 +86,8 @@
         try
         {
             handler.handleEvent(m_event);
-        } catch (Throwable e)
+        }
+        catch (final Throwable e)
         {
             // The spec says that we must catch exceptions and log them:
             LogWrapper.getLogger().log(
@@ -99,8 +97,10 @@
                     + m_eventHandlerRef + " | Bundle("
                     + m_eventHandlerRef.getBundle() + ")]", e);
         }
-        m_finished = true;
-        m_handlerTasks.ungetEventHandler(handler, m_eventHandlerRef);
+        finally
+        {
+            m_handlerTasks.ungetEventHandler(handler, m_eventHandlerRef);
+        }
     }
 
     /**
@@ -110,13 +110,4 @@
     {
         m_handlerTasks.blackList(m_eventHandlerRef);
     }
-
-    /**
-     * @see org.apache.felix.eventadmin.impl.tasks.HandlerTask#finished()
-     */
-    public boolean finished()
-    {
-        return m_finished;
-    }
-
 }
diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/Rendezvous.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/Rendezvous.java
index 8079a2f..3d95d4b 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/Rendezvous.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/Rendezvous.java
@@ -28,7 +28,7 @@
  */
 public class Rendezvous extends CyclicBarrier
 {
-    /** Flag for timedout handling. */
+    /** Flag for timeout handling. */
     private volatile boolean timedout = false;
 
     /**
@@ -85,9 +85,4 @@
         {
         }
     }
-
-    public boolean isTimedOut()
-    {
-        return timedout;
-    }
 }
diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/SyncDeliverTasks.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/SyncDeliverTasks.java
index 207f5a5..875accc 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/SyncDeliverTasks.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/SyncDeliverTasks.java
@@ -60,10 +60,17 @@
     /** The timeout for event handlers, 0 = disabled. */
     long m_timeout;
 
+    /**
+     * The matcher interface for checking if timeout handling
+     * is disabled for the handler.
+     * Matching is based on the class name of the event handler.
+     */
     private static interface Matcher
     {
         boolean match(String className);
     }
+
+    /** Match a package. */
     private static final class PackageMatcher implements Matcher
     {
         private final String m_packageName;
@@ -78,6 +85,8 @@
             return pos > -1 && className.substring(0, pos).equals(m_packageName);
         }
     }
+
+    /** Match a package or sub package. */
     private static final class SubPackageMatcher implements Matcher
     {
         private final String m_packageName;
@@ -92,6 +101,8 @@
             return pos > -1 && className.substring(0, pos + 1).startsWith(m_packageName);
         }
     }
+
+    /** Match a class name. */
     private static final class ClassMatcher implements Matcher
     {
         private final String m_className;
@@ -237,7 +248,7 @@
                             // stop the timer
                             timerBarrier.waitForRendezvous();
                         }
-                        catch (IllegalStateException ise)
+                        catch (final IllegalStateException ise)
                         {
                             // this can happen on shutdown, so we ignore it
                         }
@@ -247,14 +258,13 @@
                 startBarrier.waitForRendezvous();
 
                 // timeout handling
-                final long sleepTime = m_timeout;
                 // we sleep for the sleep time
                 // if someone wakes us up it's the finished inner task
                 try
                 {
-                    timerBarrier.waitAttemptForRendezvous(sleepTime);
+                    timerBarrier.waitAttemptForRendezvous(m_timeout);
                 }
-                catch (TimeoutException ie)
+                catch (final TimeoutException ie)
                 {
                     // if we timed out, we have to blacklist the handler
                     task.blackListHandler();
