diff --git a/sflphone-client-gnome/src/config/accountconfigdialog.c b/sflphone-client-gnome/src/config/accountconfigdialog.c
index 476597d41f6088e4d03ff0174a9264071b008b15..e6e5df0af8a987e649930b865c58fabe57869e61 100644
--- a/sflphone-client-gnome/src/config/accountconfigdialog.c
+++ b/sflphone-client-gnome/src/config/accountconfigdialog.c
@@ -175,9 +175,6 @@ static GtkWidget * create_basic_tab(account_t **a)
 		curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_USERNAME);
 		curMailbox = g_hash_table_lookup(currentAccount->properties, ACCOUNT_MAILBOX);
 	}
-
-	// DEBUG("-------- Basic parameters from config");
-	// DEBUG("curAccountID %s, curAccountType %s, curAccountEnabled %s, curAlias %s, curHostname %s, curPassword %s, curUsername %s, curMailbox %s\n", curAccountID, curAccountType, curAccountEnabled, curAlias, curHostname, curPassword, curUsername, curMailbox);
 	
 
 	gnome_main_section_new (_("Account Parameters"), &frame);
diff --git a/sflphone-client-gnome/src/config/accountlistconfigdialog.c b/sflphone-client-gnome/src/config/accountlistconfigdialog.c
index 5216d71a20f7acf02d94941b03d5435736c057a5..13ccf28619f703b238b42678778bff4a19d1b4e1 100644
--- a/sflphone-client-gnome/src/config/accountlistconfigdialog.c
+++ b/sflphone-client-gnome/src/config/accountlistconfigdialog.c
@@ -444,11 +444,11 @@ create_account_list(GtkDialog * dialog)
     g_signal_connect_swapped(G_OBJECT(helpButton), "clicked",
              G_CALLBACK(help_contents_cb), NULL);
     gtk_box_pack_start(GTK_BOX(buttonHbox), helpButton, FALSE, FALSE, 0);
-        
+
     GtkWidget * closeButton = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
     g_signal_connect_swapped(G_OBJECT(closeButton), "clicked",  G_CALLBACK(close_dialog_cb), NULL);
     gtk_box_pack_start(GTK_BOX(buttonHbox), closeButton, FALSE, FALSE, 0);
-   
+
     gtk_widget_show_all(table);
     // account_list_config_dialog_fill();
 
@@ -459,9 +459,9 @@ create_account_list(GtkDialog * dialog)
     gtk_widget_size_request(GTK_WIDGET(deleteButton), &requisitionButton);
     gtk_widget_set_size_request(GTK_WIDGET(closeButton), requisitionButton.width, -1);
     gtk_widget_set_size_request(GTK_WIDGET(helpButton), requisitionButton.width, -1);    
-            
+
     gtk_widget_show_all(table);
-    
+
     return table;
 }
 
diff --git a/sflphone-client-gnome/src/config/preferencesdialog.c b/sflphone-client-gnome/src/config/preferencesdialog.c
index d804865fa4dba066698196f1538f8ac3c4d28458..9c386558f3d0e44aa6255b1a603e4b0ccd34b392 100644
--- a/sflphone-client-gnome/src/config/preferencesdialog.c
+++ b/sflphone-client-gnome/src/config/preferencesdialog.c
@@ -219,7 +219,7 @@ GtkWidget* create_direct_ip_calls_tab()
 
     
                 
-	GtkWidget * vbox = gtk_vbox_new(FALSE, 10);
+    GtkWidget * vbox = gtk_vbox_new(FALSE, 10);
     gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
 
     description = g_markup_printf_escaped(_("This profile is used when you want to reach a remote peer simply by typing a sip URI such as <b>sip:remotepeer</b>. The settings you define here will also be used if no account can be matched to an incoming or outgoing call."));
diff --git a/sflphone-common/src/audio/audiolayer.cpp b/sflphone-common/src/audio/audiolayer.cpp
index 0687dfa3b4c8e99c8e813ff6bcad52a32c647e21..ceabb38f1d5337fda2a6a0f8af1925df8711c4f9 100644
--- a/sflphone-common/src/audio/audiolayer.cpp
+++ b/sflphone-common/src/audio/audiolayer.cpp
@@ -40,7 +40,7 @@ void AudioLayer::flushUrgent (void)
 
 int AudioLayer::putUrgent (void* buffer, int toCopy)
 {
-    _debug ("------------------- AudioLayer::putUrgent --------------------\n");
+    // _debug ("------------------- AudioLayer::putUrgent --------------------\n");
     int a;
 
     ost::MutexLock guard (_mutex);
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 76659fa7e9d62138ee5a7b59ecb2670657be7efa..963a9c4579f9242ede7939a35cbec805fecf449c 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -3524,7 +3524,7 @@ std::map< std::string, std::string > ManagerImpl::getAccountDetails (const Accou
     Account * account = _accountMap[accountID];
 
     if (account == NULL) {
-        _debug ("Cannot getAccountDetails on a non-existing accountID. Defaults will be used.\n");
+      _debug ("Cannot getAccountDetails on a non-existing accountID %s. Defaults will be used.\n", accountID.c_str());
     }
 
     a.insert (std::pair<std::string, std::string> (CONFIG_ACCOUNT_ALIAS, getConfigString (accountID, CONFIG_ACCOUNT_ALIAS)));
diff --git a/sflphone-common/src/sip/sipaccount.cpp b/sflphone-common/src/sip/sipaccount.cpp
index ee60a55fa02fd0253eb74fe20c34d28599357cf6..07853ad4017aa602c4cc99cc01b1748f68f2019b 100644
--- a/sflphone-common/src/sip/sipaccount.cpp
+++ b/sflphone-common/src/sip/sipaccount.cpp
@@ -162,6 +162,8 @@ int SIPAccount::initCredential (void)
 
 int SIPAccount::registerVoIPLink()
 {
+    _debug ("Register account %s\n", getAccountID().c_str());
+
     // Init general settings
     loadConfig();
 
diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp
index 16d76a107d30ca0fb401b25ab29c1800bac162cd..9cee5e685e8cfbc2d70c688cca40c3dc72b5a3a2 100644
--- a/sflphone-common/src/sip/sipvoiplink.cpp
+++ b/sflphone-common/src/sip/sipvoiplink.cpp
@@ -479,7 +479,7 @@ int SIPVoIPLink::sendRegister (AccountID id)
             status = createUDPServer (id);
 
             if (status != PJ_SUCCESS) {
-                _debug ("Use the local UDP transport");
+                _debug ("Use the local UDP transport\n");
                 account->setAccountTransport (_localUDPTransport);
             }
         }
@@ -612,7 +612,7 @@ int SIPVoIPLink::sendRegister (AccountID id)
     _mutexSIP.leaveMutex();
 
     account->setRegistrationInfo (regc);
-    _debug ("ok\n");
+
     return true;
 }
 
@@ -2848,7 +2848,10 @@ void regc_cb (struct pjsip_regc_cbparam *param)
 
     const pj_str_t * description = pjsip_get_status_text (param->code);
 
-    if (param->code) {
+    if (param->code && description) {
+
+      std::string descriptionprint(description->ptr, description->slen);
+      _debug("Received client registration callback wiht code: %i, %s\n", param->code, descriptionprint.c_str());
         DBusManager::instance().getCallManager()->registrationStateChanged (account->getAccountID(), std::string (description->ptr, description->slen), param->code);
         std::pair<int, std::string> details (param->code, std::string (description->ptr, description->slen));
         account->setRegistrationStateDetailed (details);
diff --git a/sflphone-common/test/audiolayerTest.cpp b/sflphone-common/test/audiolayerTest.cpp
index 1cdb792598329c7cbf492b68d5bc4cd4435a89c3..4791f073de178be7eb794ecd0062971a4c7bf4b2 100644
--- a/sflphone-common/test/audiolayerTest.cpp
+++ b/sflphone-common/test/audiolayerTest.cpp
@@ -34,8 +34,8 @@ void AudioLayerTest::setUp()
 {
 
     // Instanciate the manager
-    Manager::instance().initConfigFile();
     Manager::instance().init();
+    Manager::instance().initConfigFile();
 
     // _audiodriver = Manager::instance().getAudioDriver();
 
@@ -65,6 +65,12 @@ void AudioLayerTest::testAudioLayerConfig()
 {
     int sampling_rate = Manager::instance().getConfigInt (AUDIO, ALSA_SAMPLE_RATE);
     int frame_size = Manager::instance().getConfigInt (AUDIO, ALSA_FRAME_SIZE);
+    frame_size = 0; // frame size in config not used anymore    
+
+    int layer = Manager::instance().getAudioDriver()->getLayerType();
+
+    if(layer != ALSA)
+        Manager::instance().switchAudioManager();
 
     CPPUNIT_ASSERT ( (int) Manager::instance().getAudioDriver()->getSampleRate() == sampling_rate);
     CPPUNIT_ASSERT ( (int) Manager::instance().getAudioDriver()->getFrameSize() == frame_size);
@@ -104,7 +110,8 @@ void AudioLayerTest::testPulseConnect()
     ManagerImpl* manager;
     manager = &Manager::instance();
 
-    _pulselayer = new PulseLayer (manager);
+    // _pulselayer = new PulseLayer (manager);
+    _pulselayer = (PulseLayer*)Manager::instance().getAudioDriver();
 
     CPPUNIT_ASSERT (_pulselayer->getLayerType() == PULSEAUDIO);
 
@@ -130,32 +137,31 @@ void AudioLayerTest::testPulseConnect()
 
     usleep (100000);
 
-    CPPUNIT_ASSERT (_pulselayer->getPlaybackStream() != NULL);
-    CPPUNIT_ASSERT (_pulselayer->getRecordStream() != NULL);
+    CPPUNIT_ASSERT (_pulselayer->getPlaybackStream() == NULL);
+    CPPUNIT_ASSERT (_pulselayer->getRecordStream() == NULL);
 
-    CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->pulseStream() != NULL);
-    CPPUNIT_ASSERT (_pulselayer->getRecordStream()->pulseStream() != NULL);
+    // CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->pulseStream() != NULL);
+    // CPPUNIT_ASSERT (_pulselayer->getRecordStream()->pulseStream() != NULL);
 
     // Must return Access failure "PA_ERR_ACCESS" == 2
-    CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->getStreamState() == 2);
-    CPPUNIT_ASSERT (_pulselayer->getRecordStream()->getStreamState() == 2);
-
-    CPPUNIT_ASSERT (_pulselayer->createStreams (_pulselayer->context) == true);
+    // CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->getStreamState() == 2);
+    // CPPUNIT_ASSERT (_pulselayer->getRecordStream()->getStreamState() == 2);
+    _debug("-------------------------- \n");
+    _pulselayer->startStream ();
 
     // usleep(1000000);
 
+ 
     CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->pulseStream() != NULL);
     CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->pulseStream() != NULL);
 
     // Must return No error "PA_OK" == 1
     CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->getStreamState() == 1);
     CPPUNIT_ASSERT (_pulselayer->getRecordStream()->getStreamState() == 1);
-
+    
     CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->disconnectStream() == true);
     CPPUNIT_ASSERT (_pulselayer->getRecordStream()->disconnectStream() == true);
-
-    // _debug("%i\n",_pulselayer->getPlaybackStream()->getStreamState());
-
+ 
     CPPUNIT_ASSERT (_pulselayer->getPlaybackStream()->connectStream() == true);
     CPPUNIT_ASSERT (_pulselayer->getRecordStream()->connectStream() == true);
 
@@ -170,6 +176,7 @@ void AudioLayerTest::testPulseConnect()
 
     // usleep(1000000);
     CPPUNIT_ASSERT (_pulselayer->disconnectAudioStream() == true);
+    
 }
 
 
diff --git a/sflphone-common/test/mainbufferTest.cpp b/sflphone-common/test/mainbufferTest.cpp
index 63c9fa2f4d7cffdbdb5a95bfc3f05aa1c8053c50..7169fc1cf80c90dc5ee0030ba50c2a58c5901757 100644
--- a/sflphone-common/test/mainbufferTest.cpp
+++ b/sflphone-common/test/mainbufferTest.cpp
@@ -554,7 +554,7 @@ void MainBufferTest::testBindUnbindBuffer()
     // unbind test_id1 with default_id
     _mainbuffer.unBindCallID (test_id1);
 
-    _debug ("%i\n", _mainbuffer._ringBufferMap.size());
+    _debug ("%i\n", (int)(_mainbuffer._ringBufferMap.size()));
     CPPUNIT_ASSERT (_mainbuffer._ringBufferMap.size() == 0);
     CPPUNIT_ASSERT (_mainbuffer._callIDMap.size() == 0);
 
@@ -1358,10 +1358,10 @@ void MainBufferTest::testConference()
     CPPUNIT_ASSERT (test_ring_buffer->AvailForPut() == init_put_id2);
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (default_id) == 0);
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (test_id1) == 0);
-    // test mainbuffer availforget
+    // test mainbuffer availforget (get data even if some participant missing)
     CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == 0);
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == sizeof (int));
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == sizeof (int));
     //putdata test ring buffers
     CPPUNIT_ASSERT (_mainbuffer.putData (&testint, sizeof (int), 100, test_id1) == sizeof (int));
     test_ring_buffer = _mainbuffer.getRingBuffer (default_id);
@@ -1379,11 +1379,11 @@ void MainBufferTest::testConference()
     CPPUNIT_ASSERT (test_ring_buffer->AvailForPut() == init_put_id2);
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (default_id) == 0);
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (test_id1) == 0);
-    // test mainbuffer availforget
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == 0);
+    // test mainbuffer availforget (get data even if some participant missing)
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == sizeof (int));
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == sizeof (int));
     CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == sizeof (int));
-    //putdata test ring buffers
+    //putdata test ring buffers 
     CPPUNIT_ASSERT (_mainbuffer.putData (&testint, sizeof (int), 100, test_id2) == sizeof (int));
     test_ring_buffer = _mainbuffer.getRingBuffer (default_id);
     CPPUNIT_ASSERT (test_ring_buffer->putLen() == sizeof (int));
@@ -1500,10 +1500,10 @@ void MainBufferTest::testConference()
     CPPUNIT_ASSERT (test_ring_buffer->AvailForPut() == init_put_id2);
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (default_id) == 0);
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (test_id1) == 0);
-    // test mainbuffer availforget
+    // test mainbuffer availforget 
     CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == 0);
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == sizeof(int));
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == sizeof(int));
     //putdata test ring buffers
     CPPUNIT_ASSERT (_mainbuffer.putData (&testint, sizeof (int), 100, test_id1) == sizeof (int));
     test_ring_buffer = _mainbuffer.getRingBuffer (default_id);
@@ -1522,8 +1522,8 @@ void MainBufferTest::testConference()
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (default_id) == 0);
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (test_id1) == 0);
     // test mainbuffer availforget
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == 0);
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == sizeof(int));
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == sizeof(int));
     CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == sizeof (int));
     //putdata test ring buffers
     CPPUNIT_ASSERT (_mainbuffer.putData (&testint, sizeof (int), 100, test_id2) == sizeof (int));
@@ -1641,8 +1641,8 @@ void MainBufferTest::testConference()
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (test_id1) == 0);
     // test mainbuffer availforget
     CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == 0);
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == sizeof(int));
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == sizeof(int));
     //putdata test ring buffers
     CPPUNIT_ASSERT (_mainbuffer.putData (&testint, sizeof (int), 100, test_id1) == sizeof (int));
     test_ring_buffer = _mainbuffer.getRingBuffer (default_id);
@@ -1661,8 +1661,8 @@ void MainBufferTest::testConference()
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (default_id) == 0);
     CPPUNIT_ASSERT (test_ring_buffer->AvailForGet (test_id1) == 0);
     // test mainbuffer availforget
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == 0);
-    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == 0);
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (default_id) == sizeof(int));
+    CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id1) == sizeof(int));
     CPPUNIT_ASSERT (_mainbuffer.availForGet (test_id2) == sizeof (int));
     //putdata test ring buffers
     CPPUNIT_ASSERT (_mainbuffer.putData (&testint, sizeof (int), 100, test_id2) == sizeof (int));
diff --git a/sflphone-common/test/rtpTest.cpp b/sflphone-common/test/rtpTest.cpp
index 4a4d313314d20bdb6642bc7383deae0fd0f267a1..d641b2fc07447ec30eafbead6bb1f93c9b239ec5 100644
--- a/sflphone-common/test/rtpTest.cpp
+++ b/sflphone-common/test/rtpTest.cpp
@@ -81,7 +81,7 @@ bool RtpTest::pjsipInit()
 void RtpTest::testRtpInitClose()
 {
 
-    audiortp = new AudioRtp();
+    audiortp = new AudioSymmetricRtpSession(Manager::instance(), sipcall);
 
     _debug ("------ void RtpTest::testRtpInit() ------\n");
 
diff --git a/sflphone-common/test/rtpTest.h b/sflphone-common/test/rtpTest.h
index 2f28c856270748246797d6e63165a5df174cfe73..9e7c39ec6ae21dcecde69a760ddcb51eb299aca0 100644
--- a/sflphone-common/test/rtpTest.h
+++ b/sflphone-common/test/rtpTest.h
@@ -40,6 +40,7 @@
 // Application import
 #include "manager.h"
 #include "audio/audiortp/AudioRtpSession.h"
+#include "audio/audiortp/AudioSymmetricRtpSession.h"
 #include "call.h"
 #include "sip/sipcall.h"
 #include "sip/sipvoiplink.h"
@@ -47,7 +48,7 @@
 #include "config/config.h"
 #include "user_cfg.h"
 
-
+using namespace sfl;
 
 /*
  * @file audiorecorderTest.cpp  
@@ -57,7 +58,8 @@
 #ifndef _RTP_TEST_
 #define _RTP_TEST_
 
-class AudioRtp;
+class AudioSymmetricRtpSession;
+class AudioRtpSession;
 class AudioRtpRTX;
 class SIPVoIPLink;
 
@@ -103,7 +105,7 @@ class RtpTest : public CppUnit::TestCase {
 
         ManagerImpl* manager;
 
-        AudioRtp *audiortp;
+        AudioSymmetricRtpSession *audiortp;
 
 	AudioRtpRTX *rtpthread;