diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java
index 42a90e5..fd97f9d 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java
@@ -239,12 +239,12 @@
         {
             // The size of the internal thread pool. Note that we must execute
             // each synchronous event dispatch that happens in the synchronous event
-            // dispatching thread in a new thread, hence a small thread pool is o.k.
+            // dispatching thread in a new thread.
             // A value of less then 2 triggers the default value. A value of 2
             // effectively disables thread pooling. Furthermore, this will be used by
             // a lazy thread pool (i.e., new threads are created when needed). Ones the
-            // the size is reached and no cached thread is available new threads will
-            // be created.
+            // the size is reached and no cached thread is available, the delivery
+            // is blocked.
             m_threadPoolSize = getIntProperty(
                 PROP_THREAD_POOL_SIZE, m_bundleContext.getProperty(PROP_THREAD_POOL_SIZE), 20, 2);
 
diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/MetaTypeProviderImpl.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/MetaTypeProviderImpl.java
index 7a6d430..46830fe 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/MetaTypeProviderImpl.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/MetaTypeProviderImpl.java
@@ -97,11 +97,18 @@
             final ArrayList<AttributeDefinition> adList = new ArrayList<AttributeDefinition>();
 
             adList.add( new AttributeDefinitionImpl( Configuration.PROP_THREAD_POOL_SIZE, "Thread Pool Size",
-                "The size of the thread pool. The default value is 10. Increase in case of a large amount " +
-                "of synchronous events where the event handler services in turn send new synchronous events in " +
-                "the event dispatching thread or a lot of timeouts are to be expected. A value of " +
-                "less then 2 triggers the default value. A value of 2 effectively disables thread pooling.",
+                "The size of the thread pool used for event delivery. The default value is 20. " +
+                "Increase in case of a large amount of events. A value of " +
+                "less then 2 triggers the default value. If the pool is exhausted, event delivery " +
+                "is blocked until a thread becomes available from the pool. Each event is delivered " +
+                "in a thread from the pool unless the ignore timeouts is configured for the receiving event handler.",
                 m_threadPoolSize ) );
+            adList.add( new AttributeDefinitionImpl( Configuration.PROP_ASYNC_TO_SYNC_THREAD_RATIO, "Async/sync Thread Pool Ratio",
+                    "The ratio of asynchronous to synchronous threads in the internal thread" +
+                    " pool. Ratio must be positive and may be adjusted to represent the " +
+                    "distribution of post to send operations.  Applications with higher number " +
+                    "of post operations should have a higher ratio.",
+                    m_asyncThreadPoolRatio));
 
             adList.add( new AttributeDefinitionImpl( Configuration.PROP_TIMEOUT, "Timeout",
                     "The black-listing timeout in milliseconds. The default value is 5000. Increase or decrease " +
@@ -136,12 +143,6 @@
                     "are ignored. If a single value neither ends with a dot nor with a start, this is assumed " +
                     "to define an exact topic. A single star can be used to disable delivery completely.",
                     AttributeDefinition.STRING, m_ignoreTopic, Integer.MAX_VALUE, null, null));
-            adList.add( new AttributeDefinitionImpl( Configuration.PROP_ASYNC_TO_SYNC_THREAD_RATIO, "Async/sync Thread Pool Ratio",
-                    "The ratio of asynchronous to synchronous threads in the internal thread" +
-                    " pool. Ratio must be positive and may be adjusted to represent the " +
-                    "distribution of post to send operations.  Applications with higher number " +
-                    "of post operations should have a higher ratio.",
-                    m_asyncThreadPoolRatio));
             ocd = new ObjectClassDefinition()
             {
 
