Index: branches/proxy/src/lib/util/sigslot/signal.h
===================================================================
--- branches/proxy/src/lib/util/sigslot/signal.h	(revision 9368)
+++ branches/proxy/src/lib/util/sigslot/signal.h	(revision 9369)
@@ -1238,5 +1238,5 @@
     virtual _connection_base0<mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)
     {
-      return new _connection0<dest_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      return new _connection0<dest_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
@@ -1279,5 +1279,5 @@
     virtual _connection_base1<arg1_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)
     {
-      return new _connection1<dest_type, arg1_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      return new _connection1<dest_type, arg1_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
@@ -1321,5 +1321,5 @@
     virtual _connection_base2<arg1_type, arg2_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)
     {
-      return new _connection2<dest_type, arg1_type, arg2_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      return new _connection2<dest_type, arg1_type, arg2_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
@@ -1363,5 +1363,5 @@
     virtual _connection_base3<arg1_type, arg2_type, arg3_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)
     {
-      return new _connection3<dest_type, arg1_type, arg2_type, arg3_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      return new _connection3<dest_type, arg1_type, arg2_type, arg3_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
@@ -1407,5 +1407,5 @@
     virtual _connection_base4<arg1_type, arg2_type, arg3_type, arg4_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)
     {
-      return new _connection4<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      return new _connection4<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
@@ -1457,5 +1457,5 @@
     {
       return new _connection5<dest_type, arg1_type, arg2_type, arg3_type, arg4_type,
-             arg5_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      arg5_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
@@ -1507,5 +1507,5 @@
     {
       return new _connection6<dest_type, arg1_type, arg2_type, arg3_type, arg4_type,
-             arg5_type, arg6_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      arg5_type, arg6_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
@@ -1557,5 +1557,5 @@
     {
       return new _connection7<dest_type, arg1_type, arg2_type, arg3_type, arg4_type,
-             arg5_type, arg6_type, arg7_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      arg5_type, arg6_type, arg7_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
@@ -1609,5 +1609,5 @@
     {
       return new _connection8<dest_type, arg1_type, arg2_type, arg3_type, arg4_type,
-             arg5_type, arg6_type, arg7_type, arg8_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);
+      arg5_type, arg6_type, arg7_type, arg8_type, mt_policy>(dynamic_cast<dest_type*>(pnewdest), m_pmemfun);
     }
 
Index: branches/proxy/src/lib/util/sigslot/slot.h
===================================================================
--- branches/proxy/src/lib/util/sigslot/slot.h	(revision 9368)
+++ branches/proxy/src/lib/util/sigslot/slot.h	(revision 9369)
@@ -240,5 +240,5 @@
 
   template<class mt_policy = SIGSLOT_DEFAULT_MT_POLICY>
-  class has_slots : public mt_policy
+  class has_slots //: public mt_policy
   {
     private:
@@ -253,7 +253,7 @@
 
       has_slots(const has_slots& hs)
-          : mt_policy(hs)
-      {
-        lock_block<mt_policy> lock(this);
+//          : mt_policy(hs)
+      {
+        //lock_block<mt_policy> lock(this);
         const_iterator it = hs.m_senders.begin();
         const_iterator itEnd = hs.m_senders.end();
@@ -269,5 +269,5 @@
       void signal_connect(_signal_base<mt_policy>* sender)
       {
-        lock_block<mt_policy> lock(this);
+        //lock_block<mt_policy> lock(this);
         m_senders.insert(sender);
       }
@@ -275,5 +275,5 @@
       void signal_disconnect(_signal_base<mt_policy>* sender)
       {
-        lock_block<mt_policy> lock(this);
+        //lock_block<mt_policy> lock(this);
         m_senders.erase(sender);
       }
@@ -286,5 +286,5 @@
       void disconnect_all()
       {
-        lock_block<mt_policy> lock(this);
+        //lock_block<mt_policy> lock(this);
         const_iterator it = m_senders.begin();
         const_iterator itEnd = m_senders.end();
