diff --git a/libs/portaudio/Makefile.am b/libs/portaudio/Makefile.am
index d6ef1faf280ffb6949845a33cab7055a26dffe66..a147f6b83f1691c06f495e28a45f11b06dd23bcf 100644
--- a/libs/portaudio/Makefile.am
+++ b/libs/portaudio/Makefile.am
@@ -1,5 +1,5 @@
 noinst_LTLIBRARIES = libportaudio.la
-libportaudio_la_CFLAGS = $(PORTAUDIO_CFLAGS)  -Ipa_common/ 
+libportaudio_la_CFLAGS = $(PORTAUDIO_CFLAGS) -Ipa_common/ 
 libportaudio_la_LIBADD = $(PORTAUDIO_LIBS)
 libportaudio_la_CXXFLAGS = $(PORTAUDIO_CXXFLAGS)
 libportaudio_la_CPPFLAGS = $(PORTAUDIO_CPPFLAGS)
diff --git a/src/audio/OpenAL/Makefile.am b/src/audio/OpenAL/Makefile.am
index bdd8d3d9aebbc959b50ca88666b35720c73e1e2e..cdafe1c688a3b796c18f61dff49a75bfa9cbafda 100644
--- a/src/audio/OpenAL/Makefile.am
+++ b/src/audio/OpenAL/Makefile.am
@@ -17,12 +17,12 @@ libsflaudio_la_SOURCES = \
 	SFLAudio.hpp \
 	Source.hpp 
 
-AM_CPPFLAGS = $(PORTAUDIO_CFLAGS) -I../pacpp/include -I$(top_srcdir)/libs/portaudio/pa_common -I$(top_srcdir)/libs/
+AM_CPPFLAGS = $(PORTAUDIO_CFLAGS) -I$(top_srcdir)/libs/portaudio/pa_common -I$(top_srcdir)/libs/
 AM_CXXFLAGS = $(PORTAUDIO_CXXFLAGS) -I$(top_srcdir)/libs/
 AM_LDFLAGS  =  -L$(top_srcdir)/libs/portaudio/ 
 
 LIBADD = $(PORTAUDIO_LIBS) -lportaudio -lopenal
-LDADD = libsflaudio.la $(PORTAUDIO_LIBS) -lopenal ../pacpp/source/portaudiocpp/libportaudiocpp.la -lportaudio
+LDADD = libsflaudio.la $(PORTAUDIO_LIBS) -lopenal -lportaudio
 
 
 example01_SOURCES = example01.cpp
diff --git a/src/audio/OpenAL/OpenALDevice.hpp b/src/audio/OpenAL/OpenALDevice.hpp
index 33693d421f8374f0971e1c5a1f63d97385a2f779..1e9d1321baea95bba1b63520675ae75e8956951c 100644
--- a/src/audio/OpenAL/OpenALDevice.hpp
+++ b/src/audio/OpenAL/OpenALDevice.hpp
@@ -30,6 +30,7 @@ namespace SFLAudio
   {
   public:
     OpenALDevice();
+    ~OpenALDevice();
     virtual bool load();
     virtual void unload();
     virtual Context *createContext();
diff --git a/src/audio/OpenAL/PortAudioLayer.cpp b/src/audio/OpenAL/PortAudioLayer.cpp
index 4fdf2d7db251fb4588211f1d76e0426b04303491..67d23915f007b0f6d3bc942b9f6b5eef9ef06ab6 100644
--- a/src/audio/OpenAL/PortAudioLayer.cpp
+++ b/src/audio/OpenAL/PortAudioLayer.cpp
@@ -19,9 +19,7 @@
  */
 
 #include "PortAudioLayer.hpp"
-#include "portaudiocpp/Device.hxx"
-#include "portaudiocpp/HostApi.hxx"
-#include "portaudiocpp/System.hxx"
+#include "portaudio.h"
 
 #include "NullDevice.hpp"
 
@@ -29,30 +27,54 @@
 SFLAudio::PortAudioLayer::PortAudioLayer()
   : AudioLayer("portaudio")
 {
-  portaudio::System::initialize();
+  Pa_Initialize();
 }
 
 SFLAudio::PortAudioLayer::~PortAudioLayer()
 {
-  portaudio::System::terminate();
+  Pa_Terminate();
 }
 
+
+
 std::list< std::string >
 SFLAudio::PortAudioLayer::getDevicesNames() 
 {
-  std::list< std::string > devices;
-  for(int index = 0; index < portaudio::System::instance().deviceCount(); index++ ) {
-    portaudio::Device &device = portaudio::System::instance().deviceByIndex(index);
+  refreshDevices();
 
-    std::string name(device.hostApi().name());
-    name += ": ";
-    name += device.name();
-    devices.push_back(name);
+  std::list< std::string > devices;
+  for(DevicesType::iterator pos = mDevices.begin();
+      pos != mDevices.end();
+      pos++) {
+    devices.push_back(pos->first);
   }
 
   return devices;
 }
 
+
+void
+SFLAudio::PortAudioLayer::refreshDevices() 
+{
+  mDevices.clear();
+  for(int index = 0; index < Pa_GetDeviceCount(); index++ ) {
+    const PaDeviceInfo *device = NULL;
+    const PaHostApiInfo *host = NULL;
+
+    device = Pa_GetDeviceInfo(index);
+    if(device != NULL) {
+      host = Pa_GetHostApiInfo(device->hostApi);
+    }
+    
+    if(device != NULL && host != NULL) {
+      std::string name(host->name);
+      name += ": ";
+      name += device->name;
+      mDevices.insert(std::make_pair(name, index));
+    }
+  }
+}
+
 SFLAudio::Device *
 SFLAudio::PortAudioLayer::openDevice()
 {
diff --git a/src/audio/OpenAL/PortAudioLayer.hpp b/src/audio/OpenAL/PortAudioLayer.hpp
index 31eac5a03771ba37707ef37875156fdcc6212707..ca5aafedf3de6b0cd9f794545dbc5c764db0b21f 100644
--- a/src/audio/OpenAL/PortAudioLayer.hpp
+++ b/src/audio/OpenAL/PortAudioLayer.hpp
@@ -38,7 +38,11 @@ namespace SFLAudio
     virtual Device *openDevice(const std::string &name);
 
   private:
-    std::map< std::string, std::pair< int, int > > mDevices;
+    virtual void refreshDevices();
+
+  private:
+    typedef std::map< std::string, int > DevicesType;
+    DevicesType mDevices;
   };
 }