diff --git a/src/audio/audiolayer.cpp b/src/audio/audiolayer.cpp
index a674938fd44ce394ed3c38e9b5a36a3e604052b3..f66e73072f02fea48008efb37f2b143ba1879b61 100644
--- a/src/audio/audiolayer.cpp
+++ b/src/audio/audiolayer.cpp
@@ -28,11 +28,11 @@
 #include "../global.h"
 #include "../manager.h"
 
-AudioLayer::AudioLayer(ManagerImpl& manager)
+AudioLayer::AudioLayer()
   : _urgentRingBuffer(SIZEBUF)
   , _mainSndRingBuffer(SIZEBUF)
   , _micRingBuffer(SIZEBUF)
-  , _stream(NULL), _manager(manager)
+  , _stream(NULL)
 {
   _debugInit("   portaudio initialization...");
   portaudio::System::initialize();
@@ -102,7 +102,7 @@ void
 AudioLayer::startStream(void) 
 {
   ost::MutexLock guard(_mutex);
-  if (_manager.isDriverLoaded()) {
+  if (Manager::instance().isDriverLoaded()) {
     if (_stream && !_stream->isActive()) {
       _debug("Thread: start audiolayer stream\n");
       _stream->start();
@@ -114,7 +114,7 @@ void
 AudioLayer::stopStream(void) 
 {
   ost::MutexLock guard(_mutex);
-  if (_manager.isDriverLoaded()) {
+  if (Manager::instance().isDriverLoaded()) {
     if (_stream && !_stream->isStopped()) {
       _debug("Thread: stop audiolayer stream\n");
        _stream->stop();
@@ -195,8 +195,8 @@ AudioLayer::audioCallback (const void *inputBuffer, void *outputBuffer,
   int urgentAvail, // number of int16 right and int16 left
       normalAvail, // number of int16 right and int16 left
       micAvailPut;
-  unsigned short spkrVolume = _manager.getSpkrVolume();
-  unsigned short micVolume  = _manager.getMicVolume();
+  unsigned short spkrVolume = Manager::instance().getSpkrVolume();
+  unsigned short micVolume  = Manager::instance().getMicVolume();
 
   // AvailForGet tell the number of chars inside the buffer
   // framePerBuffer are the number of int16 for one channel (left)
diff --git a/src/audio/audiolayer.h b/src/audio/audiolayer.h
index 9261b7a4e16dd278be49d998e3d0fe4c25631d00..f04d53c9336a0432e8eb22b39f567c034755443d 100644
--- a/src/audio/audiolayer.h
+++ b/src/audio/audiolayer.h
@@ -41,7 +41,7 @@ class RingBuffer;
 
 class AudioLayer {
 public:
-	AudioLayer(ManagerImpl& manager);
+	AudioLayer();
 	~AudioLayer (void);
 
 	void listDevices();
@@ -72,7 +72,6 @@ private:
 	portaudio::MemFunCallbackStream<AudioLayer> *_stream;
 //	portaudio::AutoSystem autoSys;
   ost::Mutex _mutex;
-  ManagerImpl& _manager;
   int NBCHARFORTWOINT16;
 };
 
diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index f9789e02e48ba2e1fc6baed0e0464a650d3187ed..ea70495b04f55cee9a5214198d83af427cb126a4 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -1144,7 +1144,7 @@ ManagerImpl::selectAudioDriver (void)
 #if defined(AUDIO_PORTAUDIO)
   try {
     _debugInit("  AudioLayer Creation");
-    _audiodriverPA = new AudioLayer(*this);
+    _audiodriverPA = new AudioLayer();
     int noDevice = getConfigInt(AUDIO, DRIVER_NAME);
     _debugInit("  AudioLayer Device Count");
     int nbDevice = portaudio::System::instance().deviceCount();
@@ -1199,7 +1199,7 @@ ManagerImpl::initVolume()
  * Main Thread
  */
 bool 
-ManagerImpl::getZeroconf(const std::string& sequenceId)
+ManagerImpl::getZeroconf(const std::string& )
 {
   bool returnValue = false;
 #ifdef USE_ZEROCONF
@@ -1241,7 +1241,7 @@ ManagerImpl::getZeroconf(const std::string& sequenceId)
  * Main Thread
  */
 bool 
-ManagerImpl::attachZeroconfEvents(const std::string& , Pattern::Observer& observer)
+ManagerImpl::attachZeroconfEvents(const std::string& , Pattern::Observer& )
 {
   bool returnValue = false;
   // don't need the _gui like getZeroconf function
@@ -1257,7 +1257,7 @@ ManagerImpl::attachZeroconfEvents(const std::string& , Pattern::Observer& observ
   return returnValue;
 }
 bool
-ManagerImpl::detachZeroconfEvents(Pattern::Observer& observer)
+ManagerImpl::detachZeroconfEvents(Pattern::Observer& )
 {
   bool returnValue = false;
 #ifdef USE_ZEROCONF