diff --git a/sflphone-common/src/audio/alsalayer.cpp b/sflphone-common/src/audio/alsalayer.cpp
index 2d2811b363722e41d4a2d774182eec2ef21681e4..351189f95ba3aeefe7db932e6112909ba94a9320 100644
--- a/sflphone-common/src/audio/alsalayer.cpp
+++ b/sflphone-common/src/audio/alsalayer.cpp
@@ -50,7 +50,7 @@ AlsaLayer::~AlsaLayer (void)
     closeLayer();
 }
 
-    void
+    bool
 AlsaLayer::closeLayer()
 {
     _debugAlsa("Close ALSA streams\n");
@@ -73,6 +73,8 @@ AlsaLayer::closeLayer()
     
     _CaptureHandle = 0;
     _PlaybackHandle = 0;
+
+    return true;
 }
 
     bool 
diff --git a/sflphone-common/src/audio/alsalayer.h b/sflphone-common/src/audio/alsalayer.h
index 1a392f691e0534eeff24ce80b20c2b8bc5c6768a..27259dd0c4f707dbaba833d929dab3c44d496c57 100644
--- a/sflphone-common/src/audio/alsalayer.h
+++ b/sflphone-common/src/audio/alsalayer.h
@@ -48,7 +48,7 @@ class AlsaLayer : public AudioLayer {
      */
     ~AlsaLayer(void);
 
-    void closeLayer( void );
+    bool closeLayer( void );
 
     /**
      * Check if no devices are opened, otherwise close them.
diff --git a/sflphone-common/src/audio/audiolayer.h b/sflphone-common/src/audio/audiolayer.h
index 679738b68c7fc15242eff85fd5e52c6068687f2f..f7d5404ef44218de97f5e3f4ae2233b29bd82a34 100644
--- a/sflphone-common/src/audio/audiolayer.h
+++ b/sflphone-common/src/audio/audiolayer.h
@@ -76,7 +76,7 @@ class AudioLayer {
          */
         virtual ~AudioLayer(void) {} 
 
-        virtual void closeLayer( void ) = 0;
+        virtual bool closeLayer( void ) = 0;
 
         /**
          * Check if no devices are opened, otherwise close them.
diff --git a/sflphone-common/src/audio/pulselayer.cpp b/sflphone-common/src/audio/pulselayer.cpp
index 02c107ea976fd5ac17cc30a6363637a894be5ebb..abcd83a45bd79b6791a4b60f18909124a6f6a2fb 100644
--- a/sflphone-common/src/audio/pulselayer.cpp
+++ b/sflphone-common/src/audio/pulselayer.cpp
@@ -52,7 +52,7 @@ PulseLayer::~PulseLayer (void)
     pa_context_unref( context );
 }
 
-    void
+bool
 PulseLayer::closeLayer( void )
 { 
     _debug("PulseLayer::closeLayer :: Destroy pulselayer\n");
@@ -66,6 +66,10 @@ PulseLayer::closeLayer( void )
 
     //TODO  Remove this ugly hack
     sleep(2);
+
+    
+    return true;
+    
 }
 
     void
@@ -123,7 +127,7 @@ void PulseLayer::context_state_callback( pa_context* c, void* user_data )
     }
 }
 
-void PulseLayer::disconnectPulseAudioServer( void )
+bool PulseLayer::disconnectPulseAudioServer( void )
 {
   _debug(" PulseLayer::disconnectPulseAudioServer( void ) \n");
     if( playback )
@@ -131,6 +135,11 @@ void PulseLayer::disconnectPulseAudioServer( void )
 
     if( record )
         delete record; record=NULL;
+
+    if (!playback && !record)
+      return true;
+    else
+      return false;
 }
 
 
diff --git a/sflphone-common/src/audio/pulselayer.h b/sflphone-common/src/audio/pulselayer.h
index ce2bc2e6af79d49dd5d049f952896c2b03956c44..5e91425c1135bdeee4c528864c2bc00469703570 100644
--- a/sflphone-common/src/audio/pulselayer.h
+++ b/sflphone-common/src/audio/pulselayer.h
@@ -37,7 +37,7 @@ class PulseLayer : public AudioLayer {
     PulseLayer(ManagerImpl* manager);
     ~PulseLayer(void);
 
-    void closeLayer( void );
+    bool closeLayer( void );
 
     /**
      * Check if no devices are opened, otherwise close them.
@@ -168,7 +168,7 @@ class PulseLayer : public AudioLayer {
     /**
      * Close the connection with the local pulseaudio server
      */
-    void disconnectPulseAudioServer( void );
+    bool disconnectPulseAudioServer( void );
 
     /**
      * Get some information about the pulseaudio server
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 07135fd051959d32e5272de54c537127080825f1..d5557c53f141a98f788b1a8559e23d34f783024f 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -1843,7 +1843,7 @@ int ManagerImpl::app_is_running( std::string process )
 /**
  * Initialization: Main Thread
  */
-  void
+bool
 ManagerImpl::initAudioDriver(void)
 {
 
@@ -1871,13 +1871,17 @@ ManagerImpl::initAudioDriver(void)
 
   if (_audiodriver == 0) {
     _debug("Init audio driver error\n");
+    return false;
   } else {
     error = getAudioDriver()->getErrorMessage();
     if (error == -1) {
       _debug("Init audio driver: %i\n", error);
+      return false;
     }
   }
 
+  return true;manager
+
 }
 
 /**
@@ -1974,7 +1978,7 @@ void ManagerImpl::switchAudioManager (void)
 
     // need to stop audio streams if there is currently no call
     if( (type != PULSEAUDIO) && (!hasCurrentCall())) {
-        _debug("There is currently a call!!\n");
+      // _debug("There is currently a call!!\n");
         _audiodriver->stopStream();
 
     }
diff --git a/sflphone-common/src/managerimpl.h b/sflphone-common/src/managerimpl.h
index 86578e3285c0f4090a36823dce39b8429069f19a..758811d5cbfcee361f2dd88c7f144e8287d7bef0 100644
--- a/sflphone-common/src/managerimpl.h
+++ b/sflphone-common/src/managerimpl.h
@@ -880,6 +880,11 @@ class ManagerImpl {
      */
     AccountMap getSipAccountMap( void );
 
+    /*
+     * Initialize audiodriver
+     */
+    bool initAudioDriver(void);
+
   private:
 
     /**
@@ -905,11 +910,7 @@ class ManagerImpl {
      */
     void initAudioCodec(void);
 
-    /*
-     * Initialize audiodriver
-     */
-    void initAudioDriver(void);
-
+    
     /*
      * Initialize zeroconf module and scanning
      */
diff --git a/sflphone-common/test/Makefile.am b/sflphone-common/test/Makefile.am
index 8f3003587d6e748791b0407c6465ad85d2d6343d..5b89c3b709cc04d76ae52041c63ce96d1b5a8b66 100644
--- a/sflphone-common/test/Makefile.am
+++ b/sflphone-common/test/Makefile.am
@@ -1,6 +1,6 @@
 include ../globals.mak
 
-bin_PROGRAMS = numbercleanerTester pluginmanagerTester hookmanagerTester
+bin_PROGRAMS = numbercleanerTester pluginmanagerTester hookmanagerTester audiolayerTester
 
 OBJECT_FILES= \
 	../src/sflphoned-managerimpl.o \
@@ -78,3 +78,21 @@ hookmanagerTester_LDADD = \
 		-luuid \
 		$(OBJECT_FILES)
 
+audiolayerTester_SOURCES = \
+		audiolayerTest.h \
+		audiolayerTest.cpp \
+		TestMain.cpp
+
+audiolayerTester_LDADD = \
+		../src/libsflphone.la  \
+		$(SFLPHONE_LIBS) $(ZEROCONFLIB) $(LIB_DNSSD) \
+		@ALSA_LIBS@ \
+		@PULSEAUDIO_LIBS@ \
+		@CPPUNIT_LIBS@ \
+		@CCEXT2_LIBS@ \
+		@CCGNU2_LIBS@ \
+		@CCRTP_LIBS@ \
+		@SAMPLERATE_LIBS@ \
+		$(PJSIP_LIBS) \
+		-luuid \
+		$(OBJECT_FILES)
\ No newline at end of file
diff --git a/sflphone-common/test/audiorecorderTest.cpp b/sflphone-common/test/audiorecorderTest.cpp
index 30650f9d0ee2c5d36fa45d8d40e02552de8a8481..9c0bf863edb284f29fcd5f7361c6ede3da6b68a8 100644
--- a/sflphone-common/test/audiorecorderTest.cpp
+++ b/sflphone-common/test/audiorecorderTest.cpp
@@ -13,7 +13,7 @@
  *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
+ *  along with this program; if not, write to the Free Software-
  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
diff --git a/sflphone-common/test/audiorecorderTest.h b/sflphone-common/test/audiorecorderTest.h
index 1748bda1db973fd4063dda0872a90bf9c09af5e8..216b657079562007a1eb04955f390e3263ef1c87 100644
--- a/sflphone-common/test/audiorecorderTest.h
+++ b/sflphone-common/test/audiorecorderTest.h
@@ -1,4 +1,4 @@
-x/*
+/*
  *  Copyright (C) 2009 Savoir-Faire Linux inc.
  *  Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
  *