diff --git a/PPI/IOEvent.cti b/PPI/IOEvent.cti
index 7372e360b962e1c03ad24bccefa2130b2dac9d4a..1b160e06a371231aabaaa5e9697206fbbe5eb0dd 100644
--- a/PPI/IOEvent.cti
+++ b/PPI/IOEvent.cti
@@ -36,9 +36,10 @@
 
 template <class Handle>
 prefix_ senf::ppi::IOEvent::IOEvent(Handle handle, unsigned events)
-    : fd_ (senf::scheduler::get_descriptor(handle)),
-      event_ ("senf::ppi::IOEvent", boost::bind(&IOEvent::cb,this,_1), fd_, events, false) 
-{}
+    : fd_ (-1), event_ ("senf::ppi::IOEvent", boost::bind(&IOEvent::cb,this,_1)) 
+{
+    set(handle,events);
+}
 
 ///////////////////////////////cti.e///////////////////////////////////////
 #undef prefix_
diff --git a/Socket/Protocols/INet/INet6Address.cci b/Socket/Protocols/INet/INet6Address.cci
index 93ab3c0aa1321dafd31b047a8ebb00bdf5aba177..9a71c7b1d14ce9febbce0fdf21c55ba2c88e49c8 100644
--- a/Socket/Protocols/INet/INet6Address.cci
+++ b/Socket/Protocols/INet/INet6Address.cci
@@ -72,6 +72,22 @@ prefix_ senf::INet6Address senf::INet6Address::from_inet4address(INet4Address co
     return addr;
 }
 
+prefix_ senf::INet6Address senf::INet6Address::from_mac(senf::MACAddress const & mac)
+{
+    INet6Address addr;
+    addr[0] = 0xfe;
+    addr[1] = 0x80;
+    addr[8] = mac[0];
+    addr[9] = mac[1];
+    addr[10] = mac[2];
+    addr[11] = 0xff;
+    addr[12] = 0xfe;
+    addr[13] = mac[3];
+    addr[14] = mac[4];
+    addr[15] = mac[5];
+    return addr;
+}
+
 prefix_ boost::uint64_t senf::INet6Address::network()
     const
 {
diff --git a/Socket/Protocols/INet/INet6Address.hh b/Socket/Protocols/INet/INet6Address.hh
index 953bc491fa04d7936441a16412cfd5a71c6b9416..3eb7094a220e7befbc2ea39645165920d879aa9b 100644
--- a/Socket/Protocols/INet/INet6Address.hh
+++ b/Socket/Protocols/INet/INet6Address.hh
@@ -37,6 +37,7 @@
 #include "../../../Utils/Tags.hh"
 #include "INet4Address.hh"
 #include "../AddressExceptions.hh"
+#include "../Raw/MACAddress.hh"
 
 //#include "INet6Address.mpp"
 #include "INet6Address.ih"
@@ -203,6 +204,11 @@ namespace senf {
                                              \par
                                              INet4 compatible INet6 addresses are not directly
                                              supported, they are deprecated in the RFC. */
+        static INet6Address from_mac(senf::MACAddress const & mac);
+                                        ///< Construct a link-local INet6 address
+                                        /**< This will construct a link local address of the form
+                                             <tt>fe80::xxxx:xxff:fexx:xxxx</tt>. */
+        
         in6_addr toin6_addr() const;    ///< get the linux in6_addr struct (convinience only)
 
         ///@}
diff --git a/Socket/Protocols/INet/INetAddressing.test.cc b/Socket/Protocols/INet/INetAddressing.test.cc
index 0dd2d952a188eb0b6f81b4579e2b93d5753b6d28..3fcb053ec9de6f3a983b76d1d0816660772c00c5 100644
--- a/Socket/Protocols/INet/INetAddressing.test.cc
+++ b/Socket/Protocols/INet/INetAddressing.test.cc
@@ -61,7 +61,7 @@ BOOST_AUTO_UNIT_TEST(inet4SocketAddress)
     BOOST_CHECK_THROW( INet4SocketAddress(":12345"), AddressSyntaxException );
     BOOST_CHECK_THROW( INet4SocketAddress("127.0.0.1:1234a"), AddressSyntaxException );
 
-    BOOST_CHECK_EQUAL( INet4SocketAddress(12345).port(), 12345 );
+    BOOST_CHECK_EQUAL( INet4SocketAddress(12345).port(), 12345u );
     BOOST_CHECK_EQUAL( INet4SocketAddress(12345).address(), INet4Address::None );
     BOOST_CHECK_EQUAL( INet4SocketAddress("127.0.0.1:12345").address(), INet4Address::Loopback );
     BOOST_CHECK_EQUAL( INet4SocketAddress("127.0.0.1:12345").port(), 12345u );
diff --git a/Socket/Protocols/Raw/LLAddressing.cc b/Socket/Protocols/Raw/LLAddressing.cc
index 97316c97db152e59858825b6d8f3ae3d0de0b1be..faec193f9c86f78d9556cedea35ea8d9809cc016 100644
--- a/Socket/Protocols/Raw/LLAddressing.cc
+++ b/Socket/Protocols/Raw/LLAddressing.cc
@@ -63,6 +63,22 @@ prefix_ void senf::LLSocketAddress::interface(std::string const & iface)
     }
 }
 
+prefix_ std::ostream & senf::operator<<(std::ostream & os, LLSocketAddress const & llAddr)
+{
+    os << "[" << llAddr.address()
+       << '%' << llAddr.interface() 
+       << ' ' << llAddr.protocol()
+       << ' ' << llAddr.arptype()
+       << ( llAddr.pkttype() == senf::LLSocketAddress::Host ? " Host" :
+            llAddr.pkttype() == senf::LLSocketAddress::Broadcast ? " Broadcast" :
+            llAddr.pkttype() == senf::LLSocketAddress::Multicast ? " Multicast" :
+            llAddr.pkttype() == senf::LLSocketAddress::OtherHost ? " OtherHost" :
+            llAddr.pkttype() == senf::LLSocketAddress::Outgoing ? " Outgoing" :
+            llAddr.pkttype() == senf::LLSocketAddress::Broadcast ? "Broadcast" : "" )
+       << "]";
+    return os;
+}
+
 ///////////////////////////////cc.e////////////////////////////////////////
 #undef prefix_
 //#include "LLAddressing.mpp"
diff --git a/Socket/Protocols/Raw/LLAddressing.cci b/Socket/Protocols/Raw/LLAddressing.cci
index 411e7b9cf6f3997c02fe848f6d2a703656b449fc..374840bbf3af7d0338c1214352afd7dd9d9ceefa 100644
--- a/Socket/Protocols/Raw/LLAddressing.cci
+++ b/Socket/Protocols/Raw/LLAddressing.cci
@@ -100,13 +100,6 @@ prefix_ senf::MACAddress senf::LLSocketAddress::address()
     return MACAddress::from_data(&addr_.sll_addr[0]);
 }
 
-prefix_ std::ostream & senf::operator<<(std::ostream & os, LLSocketAddress const & llAddr)
-{
-    // TODO: expose more bytes from sockaddr_ll addr_
-    os << "[some LLSocketAddress]";
-    return os;
-}
-
 ///////////////////////////////cci.e///////////////////////////////////////
 #undef prefix_
 
diff --git a/Socket/SocketHandle.cti b/Socket/SocketHandle.cti
index acdf0dc76d0d13b95142e1d7d758b55fe1e90fc9..310dfddccb3cb7bd04274b358bf578d815625718 100644
--- a/Socket/SocketHandle.cti
+++ b/Socket/SocketHandle.cti
@@ -68,7 +68,7 @@ prefix_ senf::SocketHandle<SPolicy>::SocketHandle(FileHandle other, bool isCheck
     : FileHandle(other)
 {
     SENF_ASSERT( isChecked );
-    SENF_ASSERT( dynamic_cast<SocketBody *>(&FileHandle::body()) );
+    SENF_ASSERT( ! valid() || dynamic_cast<SocketBody *>(&FileHandle::body()) );
 }
 
 template <class SPolicy>