diff --git a/Packets/DefaultBundle/Doxyfile b/Packets/DefaultBundle/Doxyfile
index 2e8aec2b41e2db2c426ae31aa104d8721f3440cb..c221a91ceb18e89c2543a3f0259dc2fd77f94441 100644
--- a/Packets/DefaultBundle/Doxyfile
+++ b/Packets/DefaultBundle/Doxyfile
@@ -1,6 +1,6 @@
 @INCLUDE         = "$(TOPDIR)/doclib/Doxyfile.global"
 
-PROJECT_NAME     = libPackets/DefaultBundle
+PROJECT_NAME     = DefaultBundle
 TAGFILES         = "$(TOPDIR)/Utils/doc/Utils.tag" "$(TOPDIR)/Packets/doc/Packets.tag"
 GENERATE_TAGFILE = doc/DefaultBundle.tag
 INPUT            = .
diff --git a/Packets/Doxyfile b/Packets/Doxyfile
index 931a153ab5ef0720ce98c33ee5296470ea4bbf53..b9e5c088ac0757ab63265284e7c543a72965cd97 100644
--- a/Packets/Doxyfile
+++ b/Packets/Doxyfile
@@ -3,7 +3,6 @@
 PROJECT_NAME     = libPackets
 TAGFILES         = "$(TOPDIR)/Utils/doc/Utils.tag"
 GENERATE_TAGFILE = doc/Packets.tag
-#INPUT            = . DefaultBundle MPEG_DVBBundle
 INPUT            = .
 
-#EXAMPLE_PATH     = . DefaultBundle
+EXAMPLE_PATH     = . DefaultBundle
diff --git a/Packets/MPEGDVBBundle/Doxyfile b/Packets/MPEGDVBBundle/Doxyfile
index 9e3a960338d0021659a300d5e57ec1b07057bffa..db2a4692c3307552fb31442b6094c60e5231cb97 100644
--- a/Packets/MPEGDVBBundle/Doxyfile
+++ b/Packets/MPEGDVBBundle/Doxyfile
@@ -1,6 +1,6 @@
 @INCLUDE         = "$(TOPDIR)/doclib/Doxyfile.global"
 
-PROJECT_NAME     = libPackets/MPEGDVBBundle
+PROJECT_NAME     = MPEGDVBBundle
 TAGFILES         = "$(TOPDIR)/Utils/doc/Utils.tag" "$(TOPDIR)/Packets/doc/Packets.tag"
 GENERATE_TAGFILE = doc/MPEGDVBBundle.tag
 INPUT            = .
diff --git a/Socket/ClientSocketHandle.hh b/Socket/ClientSocketHandle.hh
index 2b6f4250a92dda1f3c386e50b38ac3e9d34ca731..07f20693057c1a9f0e96dd5dfc86ab7b5c8bb22c 100644
--- a/Socket/ClientSocketHandle.hh
+++ b/Socket/ClientSocketHandle.hh
@@ -46,20 +46,23 @@ namespace senf {
 
         This class provides the client side policy interface of the socket
         abstraction. ClientSocketHandle defines the complete policy interface. It does not implement
-        any functionality itself however. All calls are forward to the following policy classes:
+        any functionality itself however. The following table shows, to which policy members each
+        group of ClientSocketHandle members is forwardd. The last collumn shows, on which other
+        policies this member-group depends <em>in the default policy classes</em>. If you define
+        your own policy classes, the dependencies are up to you.
 
         <table class="senf">
-        <tr><th>ClientSocketHandle member</th> <th>Policy member</th></tr>
-        <tr><td>read()</td>       <td>ReadPolicy::read (\ref senf::ReadPolicyBase)</td></tr>
-        <tr><td>readfrom()</td>   <td>ReadPolicy::readfrom (\ref senf::ReadPolicyBase)</td></tr>
-        <tr><td>write()</td>      <td>WritePolicy::write (\ref senf::WritePolicyBase)</td></tr>
-        <tr><td>writeto()</td>    <td>WritePolicy::writeto (\ref senf::WritePolicyBase)</td></tr>
-        <tr><td>connect()</td>    <td>AddressingPolicy::connect (\ref senf::AddressingPolicyBase)</td></tr>
-        <tr><td>bind()</td>       <td>AddressingPolicy::bind (\ref senf::AddressingPolicyBase)</td></tr>
-        <tr><td>peer()</td>       <td>AddressingPolicy::peer (\ref senf::AddressingPolicyBase)</td></tr>
-        <tr><td>local()</td>      <td>AddressingPolicy::local (\ref senf::AddressingPolicyBase)</td></tr>
-        <tr><td>rcvbuf()</td>     <td>BufferingPolicy::sndbuf (\ref senf::BufferingPolicyBase)</td></tr>
-        <tr><td>sndbuf()</td>     <td>BufferingPolicy::rcvbuf (\ref senf::BufferingPolicyBase)</td></tr>
+        <tr><th>ClientSocketHandle member</th> <th>Policy member</th> <th>Other policies</th></tr>
+        <tr><td>read()</td>       <td>ReadPolicy::read (\ref senf::ReadPolicyBase)</td>                  <td></td></tr>
+        <tr><td>readfrom()</td>   <td>ReadPolicy::readfrom (\ref senf::ReadPolicyBase)</td>              <td>UnconnectedCommunicationPolicy</td></tr>
+        <tr><td>write()</td>      <td>WritePolicy::write (\ref senf::WritePolicyBase)</td>               <td>ConnectedCommunicationPolicy</td></tr>
+        <tr><td>writeto()</td>    <td>WritePolicy::writeto (\ref senf::WritePolicyBase)</td>             <td>UnconnectedCommunicationPolicy</td></tr>
+        <tr><td>connect()</td>    <td>AddressingPolicy::connect (\ref senf::AddressingPolicyBase)</td>   <td></td></tr>
+        <tr><td>bind()</td>       <td>AddressingPolicy::bind (\ref senf::AddressingPolicyBase)</td>      <td></td></tr>
+        <tr><td>peer()</td>       <td>AddressingPolicy::peer (\ref senf::AddressingPolicyBase)</td>      <td></td></tr>
+        <tr><td>local()</td>      <td>AddressingPolicy::local (\ref senf::AddressingPolicyBase)</td>     <td></td></tr>
+        <tr><td>rcvbuf()</td>     <td>BufferingPolicy::sndbuf (\ref senf::BufferingPolicyBase)</td>      <td></td></tr>
+        <tr><td>sndbuf()</td>     <td>BufferingPolicy::rcvbuf (\ref senf::BufferingPolicyBase)</td>      <td></td></tr>
         </table>
 
         It is important to note, that not all members are always accessible. Which are depends on
diff --git a/doclib/SConscript b/doclib/SConscript
index 61b7eba64372d5701bfa4a9aa5c390a4e89ec59b..e72656b9faa09f2f2f0441efbea5969e5e8e9e6a 100644
--- a/doclib/SConscript
+++ b/doclib/SConscript
@@ -8,16 +8,37 @@ import SENFSCons
 import yaptu
 
 def modules():
+    # Naja ... etwas rumgehackt aber was solls ...
     global EXTRA_MODULES
-    rv = []
+    mods = {}
     ix = len(env.Dir('#').abspath)+1
     ex = dict((env.Dir(p).abspath,True) for n,p in EXTRA_MODULES)
     for module in env.Alias('all_docs')[0].sources:
         if module.name != 'html.stamp' : continue 
         if not ex.get(module.dir.abspath):
-            rv.append(('lib%s' % module.dir.dir.dir.name, module.dir.abspath[ix:]))
-    rv.sort()
-    return [ (name, env.Dir(path).abspath[ix:]) for name,path in EXTRA_MODULES ] + rv
+            mods[module.dir.dir.dir.abspath] = [ module.dir.dir.dir.name, module.dir.abspath[ix:], 0 ]
+    rv = []
+    keys = mods.keys()
+    keys.sort()
+    for mod in keys:
+        i = 0
+        while i < len(rv):
+            if mod.startswith(rv[i] + '/'):
+                level = mods[rv[i]][2] + 1
+                i += 1
+                while i < len(rv) and mods[rv[i]][2] >= level:
+                    i += 1
+                rv[i:i] = [ mod ]
+                mods[mod][2] = level
+                break
+            i += 1
+        if i == len(rv):
+            rv.append(mod)
+    return [ (name, env.Dir(path).abspath[ix:], 0) for name,path in EXTRA_MODULES
+             ] + [ ( (((not mods[mod][2]) and 'lib') or '') + mods[mod][0],
+                     mods[mod][1],
+                     mods[mod][2])
+                   for mod in rv ]
 
 def indices():
     ix = len(env.Dir('#').abspath)+1
@@ -79,8 +100,8 @@ div.tabs ul li.$projectname a { background-color: #EDE497; }
   <div id="content2">
     <div class="tabs menu">
       <ul>
-{{      for name, path in modules():
-          <li class="${name}"><a href="@TOPDIR@/${path}/index.html">${name}</a></li>
+{{      for name, path, level in modules():
+          <li class="${name} level${level}"><a href="@TOPDIR@/${path}/index.html">${name}</a></li>
 }}
       </ul>
     </div>"""
diff --git a/doclib/senf.css b/doclib/senf.css
index 4263f8f81769cf890d4c3c6a6431f52b94a07568..2df0ed65b569aee941df737b8a4a2b7bd9e5e8c6 100644
--- a/doclib/senf.css
+++ b/doclib/senf.css
@@ -190,6 +190,11 @@ div.tabs ul li a:hover, div.tabs ul li.current a {
         background-color: #EDE497;
 }
 
+div.tabs ul li.level1 a {
+        padding-left: 2em;
+        font-size: 90%;
+}
+
 #footer {
         clear: both;
         padding: 4px 10px 4px 142px;