diff --git a/sflphone-common/src/audio/mainbuffer.cpp b/sflphone-common/src/audio/mainbuffer.cpp
index 3f2751b6ba8b03eef708411b09ed0d24bd41a874..46bec0f75183fa91be8d14f30e303e2670408f35 100644
--- a/sflphone-common/src/audio/mainbuffer.cpp
+++ b/sflphone-common/src/audio/mainbuffer.cpp
@@ -39,14 +39,12 @@ void MainBuffer::setInternalSamplingRate (int sr)
     ost::MutexLock guard (_mutex);
 
     if (sr != _internalSamplingRate) {
-        // flushAllBuffers();
+
         _internalSamplingRate = sr;
 
         flushAllBuffers();
 
     }
-
-    // flushAllBuffers();
 }
 
 CallIDSet* MainBuffer::getCallIDSet (CallID call_id)
@@ -63,7 +61,7 @@ CallIDSet* MainBuffer::getCallIDSet (CallID call_id)
 
 bool MainBuffer::createCallIDSet (CallID set_id)
 {
-    _debug ("---- MainBuffer::createCallIDSet %s\n", set_id.c_str());
+
 
     CallIDSet* newCallIDSet = new CallIDSet;
 
@@ -77,21 +75,18 @@ bool MainBuffer::createCallIDSet (CallID set_id)
 bool MainBuffer::removeCallIDSet (CallID set_id)
 {
 
-    _debug ("---- MainBuffer::removeCallIDSet %s\n", set_id.c_str());
-
-
     CallIDSet* callid_set = getCallIDSet (set_id);
 
     if (callid_set != NULL) {
         if (_callIDMap.erase (set_id) != 0) {
-            _debug ("          callid set %s erased!\n", set_id.c_str());
+	    // _debug ("          callid set %s erased!\n", set_id.c_str());
             return true;
         } else {
-            _debug ("          error while removing callid set %s!\n", set_id.c_str());
+            _debug ("removeCallIDSet error while removing callid set %s!\n", set_id.c_str());
             return false;
         }
     } else {
-        _debug ("          callid set %s does not exist!\n", set_id.c_str());
+        _debug ("removeCallIDSet error callid set %s does not exist!\n", set_id.c_str());
         return false;
     }
 
@@ -99,7 +94,6 @@ bool MainBuffer::removeCallIDSet (CallID set_id)
 
 void MainBuffer::addCallIDtoSet (CallID set_id, CallID call_id)
 {
-    _debug ("---- MainBuffer::addCallIDtoSet %s in %s\n", set_id.c_str(), call_id.c_str());
 
     CallIDSet* callid_set = getCallIDSet (set_id);
     callid_set->insert (call_id);
@@ -108,18 +102,17 @@ void MainBuffer::addCallIDtoSet (CallID set_id, CallID call_id)
 
 void MainBuffer::removeCallIDfromSet (CallID set_id, CallID call_id)
 {
-    _debug ("---- MainBuffer::removeCallIDfromSet element %s from %s\n", call_id.c_str(), set_id.c_str());
 
     CallIDSet* callid_set = getCallIDSet (set_id);
 
     if (callid_set != NULL) {
         if (callid_set->erase (call_id) != 0) {
-            _debug ("          callid %s erased from set %s!\n", call_id.c_str(), set_id.c_str());
+	   // _debug ("          callid %s erased from set %s!\n", call_id.c_str(), set_id.c_str());
         } else {
-            _debug ("          error while removing callid %s from set %s!\n", call_id.c_str(), set_id.c_str());
+            _debug ("removeCallIDfromSet error while removing callid %s from set %s!\n", call_id.c_str(), set_id.c_str());
         }
     } else {
-        _debug ("          callid set %s does not exist!\n", set_id.c_str());
+        _debug ("removeCallIDfromSet error callid set %s does not exist!\n", set_id.c_str());
     }
 }
 
@@ -140,8 +133,6 @@ RingBuffer* MainBuffer::getRingBuffer (CallID call_id)
 RingBuffer* MainBuffer::createRingBuffer (CallID call_id)
 {
 
-    _debug ("---- MainBuffer::createRingBuffer callid %s\n", call_id.c_str());
-
     RingBuffer* newRingBuffer = new RingBuffer (SIZEBUF, call_id);
 
     _ringBufferMap.insert (pair<CallID, RingBuffer*> (call_id, newRingBuffer));
@@ -152,21 +143,18 @@ RingBuffer* MainBuffer::createRingBuffer (CallID call_id)
 
 bool MainBuffer::removeRingBuffer (CallID call_id)
 {
-
-    _debug ("---- MainBuffer::removeRingBuffer call_id %s\n", call_id.c_str());
-
     RingBuffer* ring_buffer = getRingBuffer (call_id);
 
     if (ring_buffer != NULL) {
         if (_ringBufferMap.erase (call_id) != 0) {
-            _debug ("          ringbuffer %s removed!\n", call_id.c_str());
+	  // _debug ("removeRingBuffer ringbuffer %s removed!\n", call_id.c_str());
             return true;
         } else {
-            _debug ("          error while deleting ringbuffer %s!\n", call_id.c_str());
+            _debug ("removeRingBuffer error while deleting ringbuffer %s!\n", call_id.c_str());
             return false;
         }
     } else {
-        _debug ("          error ringbuffer %s does not exist!\n", call_id.c_str());
+        _debug ("removeRingBuffer error ringbuffer %s does not exist!\n", call_id.c_str());
         return true;
     }
 }
@@ -177,8 +165,6 @@ void MainBuffer::bindCallID (CallID call_id1, CallID call_id2)
 
     ost::MutexLock guard (_mutex);
 
-    _debug ("---- MainBuffer::bindCallID %s and callid %s\n", call_id1.c_str(), call_id2.c_str());
-
     RingBuffer* ring_buffer;
     CallIDSet* callid_set;
 
@@ -210,8 +196,6 @@ void MainBuffer::unBindCallID (CallID call_id1, CallID call_id2)
 
     ost::MutexLock guard (_mutex);
 
-    _debug ("---- MainBuffer::unBindCallID %s and callid %s\n", call_id1.c_str(), call_id2.c_str());
-
     removeCallIDfromSet (call_id1, call_id2);
     removeCallIDfromSet (call_id2, call_id1);
 
@@ -261,7 +245,6 @@ void MainBuffer::unBindAll (CallID call_id)
 
     CallIDSet::iterator iter_set = temp_set.begin();
 
-    _debug ("MainBuffer::unBindAll\n");
 
     while (iter_set != temp_set.end()) {
         CallID call_id_in_set = *iter_set;
@@ -369,12 +352,10 @@ int MainBuffer::getData (void *buffer, int toCopy, unsigned short volume, CallID
 int MainBuffer::getDataByID (void *buffer, int toCopy, unsigned short volume, CallID call_id, CallID reader_id)
 {
 
-    // _debug("MainBuffer::getDataByID in buffer %s by %s \n", call_id.c_str(), reader_id.c_str());
-
     RingBuffer* ring_buffer = getRingBuffer (call_id);
 
     if (ring_buffer == NULL) {
-        // _debug("Output RingBuffer ID: \"%s\" does not exist!\n", call_id.c_str());
+
         return 0;
     }
 
@@ -402,7 +383,6 @@ int MainBuffer::availForGet (CallID call_id)
 
     if (callid_set->size() == 1) {
         CallIDSet::iterator iter_id = callid_set->begin();
-        // _debug("MainBuffer::availForGet availForGetByID(%s,%s)\n", (*iter_id).c_str(), call_id.c_str());
 
         if ( (call_id != default_id) && (*iter_id == call_id)) {
             _debug ("This problem should not occur since we have %i element\n", (int) callid_set->size());
@@ -434,7 +414,7 @@ int MainBuffer::availForGetByID (CallID call_id, CallID reader_id)
 
     if ( (call_id != default_id) && (reader_id == call_id)) {
         _debug ("**********************************************************************\n");
-        _debug ("Error an RTP session ring buffer is not supposed to have a readpointer on tiself\n");
+        _debug ("Error an RTP session ring buffer is not supposed to have a readpointer on itself\n");
     }
 
     RingBuffer* ringbuffer = getRingBuffer (call_id);
@@ -466,11 +446,11 @@ int MainBuffer::discard (int toDiscard, CallID call_id)
 
 
     if (callid_set->size() == 1) {
+
         CallIDSet::iterator iter_id = callid_set->begin();
-        // _debug("Discard Data in \"%s\" RingBuffer for \"%s\" ReaderPointer\n",(*iter_id).c_str(),call_id.c_str());
         return discardByID (toDiscard, *iter_id, call_id);
     } else {
-        // _debug("CallIDSet with ID: \"%s\" is a conference!\n", call_id.c_str());
+
         CallIDSet::iterator iter_id;
 
         for (iter_id = callid_set->begin(); iter_id != callid_set->end(); iter_id++) {
@@ -501,8 +481,6 @@ void MainBuffer::flush (CallID call_id)
 {
     ost::MutexLock guard (_mutex);
 
-    // _debug("MainBuffer::flush\n");
-
     CallIDSet* callid_set = getCallIDSet (call_id);
 
     if (callid_set == NULL)
@@ -516,7 +494,7 @@ void MainBuffer::flush (CallID call_id)
         CallIDSet::iterator iter_id = callid_set->begin();
         flushByID (*iter_id, call_id);
     } else {
-        // _debug("CallIDSet with ID: \"%s\" is a conference!\n", call_id.c_str());
+
         CallIDSet::iterator iter_id;
 
         for (iter_id = callid_set->begin(); iter_id != callid_set->end(); iter_id++) {
@@ -548,12 +526,10 @@ void MainBuffer::flushByID (CallID call_id, CallID reader_id)
 void MainBuffer::flushAllBuffers()
 {
 
-    // _debug("-------------------------- flushAllBuffers()\n");
 
     RingBufferMap::iterator iter_buffer = _ringBufferMap.begin();
 
     while (iter_buffer != _ringBufferMap.end()) {
-        // _debug("--------------------------    flushing: %s\n",iter_buffer->second->getBufferId().c_str());
 
         iter_buffer->second->flushAll();
 
@@ -566,27 +542,67 @@ void MainBuffer::stateInfo()
 {
     _debug ("MainBuffer state info\n");
 
-    CallIDMap::iterator iter_map = _callIDMap.begin();
+    CallIDMap::iterator iter_call = _callIDMap.begin();
+
+    // print each call and bound call ids
+    while(iter_call != _callIDMap.end()) {
+
+        std::string dbg_str("    Call: ");
+	dbg_str.append(std::string(iter_call->first.c_str()));
+	dbg_str.append(std::string("   is bound to: "));
+ 
+	CallIDSet* call_id_set = (CallIDSet*)iter_call->second;
 
-    while (iter_map != _callIDMap.end()) {
-        CallIDSet* id_set = getCallIDSet (iter_map->first);
+	CallIDSet::iterator iter_call_id = call_id_set->begin();
+
+	while (iter_call_id != call_id_set->end()) {
+
+	    dbg_str.append (std::string (*iter_call_id));
+	    dbg_str.append (std::string (", "));
+
+	    iter_call_id++;
+	}
+
+	_debug ("%s\n", dbg_str.c_str());
+
+	iter_call++;
+    }
+
+    // Print ringbuffers ids and readpointers
+    RingBufferMap::iterator iter_buffer = _ringBufferMap.begin();
+
+    while (iter_buffer != _ringBufferMap.end()) {
+
+        RingBuffer* rbuffer = (RingBuffer*)iter_buffer->second;
+	ReadPointer* rpointer = NULL;
 
         std::string dbg_str ("    Buffer: ");
 
-        dbg_str.append (string (iter_map->first.c_str()));
-        dbg_str.append (string (" bound to "));
+        dbg_str.append (std::string (iter_buffer->first.c_str()));
+        dbg_str.append (std::string ("   as read pointer: "));
+
+	if(rbuffer)
+	    rpointer = rbuffer->getReadPointerList();
+
+	if(rpointer) {
 
-        if (id_set != NULL) {
-            CallIDSet::iterator iter_set = id_set->begin();
+	    ReadPointer::iterator iter_pointer = rpointer->begin();
+	    
+	    while(iter_pointer != rpointer->end()) {
 
-            while (iter_set != id_set->end()) {
-                dbg_str.append (string (iter_set->c_str()));
+	        dbg_str.append (string (iter_pointer->first.c_str()));
                 dbg_str.append (string (", "));
-            }
-        }
 
-        _debug ("%s\n", dbg_str.c_str());
+	        iter_pointer++;
+	    }
+	}
 
-        iter_map++;
+	_debug ("%s\n", dbg_str.c_str());
+
+        iter_buffer++;
     }
+
+
+
+    
 }
diff --git a/sflphone-common/src/audio/ringbuffer.cpp b/sflphone-common/src/audio/ringbuffer.cpp
index 0eb146f397cb03b7d377aa39b2122466ff18cb6c..22bfd5316831d9052ff92640bc84dc1a6a463abd 100644
--- a/sflphone-common/src/audio/ringbuffer.cpp
+++ b/sflphone-common/src/audio/ringbuffer.cpp
@@ -54,7 +54,6 @@ RingBuffer::~RingBuffer()
 void
 RingBuffer::flush (CallID call_id)
 {
-    _debug ("flush: reinit \"%s\" readpointer in \"%s\" ringbuffer\n", call_id.c_str(), buffer_id.c_str());
     storeReadPointer (mEnd, call_id);
 }
 
@@ -62,14 +61,11 @@ RingBuffer::flush (CallID call_id)
 void
 RingBuffer::flushAll ()
 {
-    // _debug("flushall: reinit all readpointer in \"%s\" ringbuffer\n", buffer_id.c_str());
-
-    // _debug("------------------------------ flushAll() in \"%s\" ringbuffer\n", buffer_id.c_str());
 
     ReadPointer::iterator iter_pointer = _readpointer.begin();
 
     while (iter_pointer != _readpointer.end()) {
-        // _debug("------------------------------     reinit readpointer %s\n", iter_pointer->first.c_str());
+
         iter_pointer->second = mEnd;
 
         iter_pointer++;
@@ -89,8 +85,6 @@ RingBuffer::putLen()
 
     int length = (mEnd + mBufferSize - mStart) % mBufferSize;
 
-    // _debug("RingBuffer::putLen length %i\n", length);
-    // _debug("    *RingBuffer::putLen: buffer_id %s, mStart %i, mEnd %i, length %i, buffersie %i\n", buffer_id.c_str(), mStart, mEnd, length, mBufferSize);
     return length;
 }
 
@@ -121,19 +115,9 @@ RingBuffer::getReadPointer (CallID call_id)
     if (getNbReadPointer() == 0)
         return 0;
 
-    // _debug("RingBuffer::getReadPointer() id %s\n", call_id.c_str());
-
     ReadPointer::iterator iter = _readpointer.find (call_id);
 
     if (iter == _readpointer.end()) {
-        // _debug("                RingBuffer::getReadPointer Error read pointer size: %i\n", _readpointer.size());
-        // _debug("                RingBuffer::getReadPointer Error read pointer \"%s\" is null\n", call_id.c_str());
-        ReadPointer::iterator iter2;
-
-        for (iter2 = _readpointer.begin(); iter2 != _readpointer.end(); iter2++) {
-            // x_debug("                RingBuffer::getReadPointer list avail pointer \"%s\"\n", iter2->first.c_str());
-        }
-
         return 0;
     } else {
         return iter->second;
@@ -169,7 +153,6 @@ RingBuffer::storeReadPointer (int pointer_value, CallID call_id)
 
     if (iter != _readpointer.end()) {
         iter->second = pointer_value;
-        // _debug("store read pointer call_id %s, size: %i \n",call_id.c_str(), _readpointer.size());
     } else {
         _debug ("storeReadPointer: Cannot find \"%s\" readPointer in \"%s\" ringbuffer\n", call_id.c_str(), buffer_id.c_str());
     }
@@ -181,10 +164,7 @@ void
 RingBuffer::createReadPointer (CallID call_id)
 {
 
-    _debug ("---- createReadPointer ringbuffer_id %s, call_id %s\n", buffer_id.c_str(), call_id.c_str());
-
     _readpointer.insert (pair<CallID, int> (call_id, mEnd));
-    _debug ("---- createReadPointer ringbuffer_id %s, size %i\n", buffer_id.c_str(), (int) _readpointer.size());
 
 }
 
@@ -193,10 +173,7 @@ void
 RingBuffer::removeReadPointer (CallID call_id)
 {
 
-    _debug ("---- removeReadPointer ringbuffer_id %s, call_id %s\n", buffer_id.c_str(), call_id.c_str());
-
     _readpointer.erase (call_id);
-    _debug ("---- removeReadPointer ringbuffer_id %s, size %i\n", buffer_id.c_str(), (int) _readpointer.size());
 
 }
 
@@ -227,8 +204,6 @@ int
 RingBuffer::AvailForPut()
 {
     // Always keep 4 bytes safe (?)
-    // z_debug("RingBuffer::AvailForPut: putLen %i\n", putLen());
-    // _debug("RingBuffer::AvailForPut %s --------------------\n", buffer_id.c_str());
     return (mBufferSize-4) - putLen();
 }
 
@@ -241,9 +216,8 @@ RingBuffer::Put (void* buffer, int toCopy, unsigned short volume)
     int block;
     int copied;
     int pos;
-    // _debug("RingBuffer::Put buffer_id %s, call_id %s --------------------\n", buffer_id.c_str(), call_id.c_str());
+
     int len = putLen();
-    // _debug("    RingBuffer::Put bufferid %s, putlen %i\n", buffer_id.c_str(), len);
 
     if (toCopy > (mBufferSize-4) - len)
         toCopy = (mBufferSize-4) - len;
@@ -302,7 +276,6 @@ int
 RingBuffer::AvailForGet (CallID call_id)
 {
     // Used space
-    // _debug("RingBuffer::AvailForGet buffer_id %s, call_id %s --------------------\n", buffer_id.c_str(), call_id.c_str());
     return getLen (call_id);
 }
 
@@ -323,11 +296,8 @@ RingBuffer::Get (void *buffer, int toCopy, unsigned short volume, CallID call_id
 
     int copied;
 
-    // _debug("RingBuffer::Get buffer_id %s, call_id %s --------------------\n", buffer_id.c_str(), call_id.c_str());
     int len = getLen (call_id);
 
-    // _debug("    RingBuffer::Get bufferid %s, getlen %i\n", buffer_id.c_str(), len);
-
     if (toCopy > len)
         toCopy = len;
 
@@ -375,7 +345,7 @@ RingBuffer::Get (void *buffer, int toCopy, unsigned short volume, CallID call_id
 int
 RingBuffer::Discard (int toDiscard, CallID call_id)
 {
-    // _debug("RingBuffer::Discard buffer_id %s, call_id %s --------------------\n", buffer_id.c_str(), call_id.c_str());
+
     int len = getLen (call_id);
 
     int mStart = getReadPointer (call_id);
diff --git a/sflphone-common/src/audio/ringbuffer.h b/sflphone-common/src/audio/ringbuffer.h
index ac559e98c1db50c4571d33f8ea97e5c508e03125..96871f825db937f91a9cb1a3c6e1ed44f9d4a8cf 100644
--- a/sflphone-common/src/audio/ringbuffer.h
+++ b/sflphone-common/src/audio/ringbuffer.h
@@ -57,9 +57,10 @@ class RingBuffer {
 
     void flushAll();
 
-
     int getReadPointer(CallID call_id = default_id);
 
+    ReadPointer* getReadPointerList() { return &_readpointer; }
+
     int getSmallestReadPointer();
 
     void storeReadPointer(int pointer_value, CallID call_id = default_id);
diff --git a/sflphone-common/src/conference.cpp b/sflphone-common/src/conference.cpp
index 6266a30323c8d47f695e03eccd57c774634290cd..4149e29caf1b0c7a4e16e1e7e71f3ae89edf4072 100644
--- a/sflphone-common/src/conference.cpp
+++ b/sflphone-common/src/conference.cpp
@@ -71,7 +71,7 @@ void Conference::setState (ConferenceState state)
 void Conference::add (CallID participant_id)
 {
 
-    _debug ("---- Conference:: add participant %s\n", participant_id.c_str());
+    _debug ("Conference:: add participant %s\n", participant_id.c_str());
 
     _participants.insert (participant_id);
 
@@ -82,7 +82,7 @@ void Conference::add (CallID participant_id)
 void Conference::remove (CallID participant_id)
 {
 
-    _debug ("---- Conference::remove participant %s\n", participant_id.c_str());
+    _debug ("Conference::remove participant %s\n", participant_id.c_str());
 
     _participants.erase (participant_id);
 
@@ -100,7 +100,7 @@ void Conference::bindParticipant (CallID participant_id)
 
             if (participant_id != (*iter)) {
 
-                _debug ("---- Conference:: bind callid %s with %s in conference add\n", participant_id.c_str(), (*iter).c_str());
+	      // _debug ("---- Conference:: bind callid %s with %s in conference add\n", participant_id.c_str(), (*iter).c_str());
                 Manager::instance().getAudioDriver()->getMainBuffer()->bindCallID (participant_id, *iter);
             }
 
@@ -109,7 +109,7 @@ void Conference::bindParticipant (CallID participant_id)
 
     }
 
-    _debug ("---- Conference::bind callid %s with default_id in conference add\n", participant_id.c_str());
+    // _debug ("---- Conference::bind callid %s with default_id in conference add\n", participant_id.c_str());
 
     Manager::instance().getAudioDriver()->getMainBuffer()->bindCallID (participant_id);
 
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 464c079ba679ef0cbb61d1a17be5ceecf38a424d..c2ab35751955e09a4ad13ce82c39ad4d056a75ce 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -1246,6 +1246,9 @@ ManagerImpl::joinParticipant (const CallID& call_id1, const CallID& call_id2)
 
     // switchCall(conf->getConfID());
 
+    if(_audiodriver)
+      _audiodriver->getMainBuffer()->stateInfo();
+
 }
 
 
@@ -1346,6 +1349,9 @@ ManagerImpl::removeParticipant (const CallID& call_id)
 
     }
 
+     if(_audiodriver)
+        _audiodriver->getMainBuffer()->stateInfo();
+
 }
 
 
@@ -1459,7 +1465,7 @@ ManagerImpl::addStream (const CallID& call_id)
         if (iter != _conferencemap.end()) {
             Conference* conf = iter->second;
 
-            _debug ("    addStream: bind call %s to conference %s\n", call_id.c_str(), conf->getConfID().c_str());
+            // _debug ("    addStream: bind call %s to conference %s\n", call_id.c_str(), conf->getConfID().c_str());
 
             conf->bindParticipant (call_id);
 
@@ -1481,7 +1487,7 @@ ManagerImpl::addStream (const CallID& call_id)
 
     } else {
 
-        _debug ("    addStream: bind call %s to main\n", call_id.c_str());
+        // _debug ("    addStream: bind call %s to main\n", call_id.c_str());
 
         // bind to main
         getAudioDriver()->getMainBuffer()->bindCallID (call_id);
@@ -1491,6 +1497,9 @@ ManagerImpl::addStream (const CallID& call_id)
         _audiodriver->flushMain();
 
     }
+
+    if(_audiodriver)
+        _audiodriver->getMainBuffer()->stateInfo();
 }
 
 void
@@ -1504,6 +1513,8 @@ ManagerImpl::removeStream (const CallID& call_id)
         removeParticipant (call_id);
     }
 
+    if(_audiodriver)
+        _audiodriver->getMainBuffer()->stateInfo();
 }
 
 //THREAD=Main