diff --git a/src/Makefile.am b/src/Makefile.am
index c71caf57c586c2cd19ef172746c4ebd6796ca323..45ebfb45294877a13b9ef5f55982dccdf70f1d93 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,4 @@
 bin_PROGRAMS = sflphoned
-#bin_SCRIPTS = sflphone
 
 if USE_ZEROCONF
 ZEROCONFDIR = zeroconf
diff --git a/src/audio/Makefile.am b/src/audio/Makefile.am
index ea2038f50a32e28a44bce998302ebdbd127d00a4..53245649f66325cc3ec2f346fa34158b39491371 100644
--- a/src/audio/Makefile.am
+++ b/src/audio/Makefile.am
@@ -1,6 +1,19 @@
-#SUBDIRS = gsm 
+sflcodecdir = $(prefix)/lib/sflphone/codecs/
 
 noinst_LTLIBRARIES = libaudio.la
+noinst_PROGRAMS = libcodec_ulaw.so libcodec_alaw.so libcodec_gsm.so
+
+libcodec_ulaw_so_SOURCES = ulaw.cpp
+libcodec_ulaw_so_CFLAGS = -fPIC -g -Wall 
+libcodec_ulaw_so_LDFLAGS = -shared
+
+libcodec_alaw_so_SOURCES = alaw.cpp
+libcodec_alaw_so_CFLAGS = -fPIC -g -Wall 
+libcodec_alaw_so_LDFLAGS = -shared
+
+libcodec_gsm_so_SOURCES = gsmcodec.cpp
+libcodec_gsm_so_CFLAGS = -fPIC -g -Wall 
+libcodec_gsm_so_LDFLAGS = -shared -lgsm
 
 if USE_SPEEX
 SPEEX_SOURCES_CPP=CodecSpeex.cpp
@@ -18,7 +31,6 @@ tonegenerator.cpp   codecDescriptor.cpp \
 audioloop.cpp ringbuffer.cpp $(SPEEX_SOURCES_CPP)
 
 AM_CXXFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/libs $(libccext2_CFLAGS) $(libdbuscpp_CFLAGS) $(libccrtp1_CFLAGS) $(USER_INCLUDES) 
-#libaudio_la_LIBADD = gsm/libgsm.la $(SPEEX_LIB)
 libaudio_la_CPPFLAGS = $(SPEEX_FLAG)
 
 
@@ -27,3 +39,20 @@ noinst_HEADERS = audioloop.h       common.h ringbuffer.h           audiofile.h
  dtmfgenerator.h         tonegenerator.h     \
  codecDescriptor.h    dtmf.h tone.h \
  CodecSpeex.h
+
+install-exec-local:	install-libcodec_ulaw_so install-libcodec_alaw_so install-libcodec_gsm_so
+uninstall-local:  uninstall-libcodec_ulaw_so uninstall-libcodec_alaw_so uninstall-libcodec_gsm_so
+
+install-libcodec_ulaw_so: libcodec_ulaw.so
+	$(INSTALL_PROGRAM)  libcodec_ulaw.so $(sflcodecdir)
+install-libcodec_alaw_so: libcodec_alaw.so
+	$(INSTALL_PROGRAM)  libcodec_alaw.so $(sflcodecdir)
+install-libcodec_gsm_so: libcodec_gsm.so
+	$(INSTALL_PROGRAM)  libcodec_gsm.so $(sflcodecdir)
+
+uninstall-libcodec_ulaw_so:
+	rm -f $(sflcodecdir)/libcodec_ulaw.so
+uninstall-libcodec_alaw_so:
+	rm -f $(sflcodecdir)/libcodec_alaw.so
+uninstall-libcodec_gsm_so:
+	rm -f $(sflcodecdir)/libcodec_gsm.so
diff --git a/src/audio/audiofile.cpp b/src/audio/audiofile.cpp
index d96dc3852e0fbc15011c14e626d9f68251cf4f30..5e726e8d2fb2ddad8d3cb46093f1df7d6e06eb29 100644
--- a/src/audio/audiofile.cpp
+++ b/src/audio/audiofile.cpp
@@ -31,12 +31,11 @@ AudioFile::AudioFile()
  : AudioLoop()
 {
   // could vary later...
-  //_ulaw = new Ulaw(PAYLOAD_CODEC_ULAW);
   _start = false;
 
    using std::cout;
    using std::cerr;
-   void* codec = dlopen("codec_ulaw.so", RTLD_LAZY);
+   void* codec = dlopen("libcodec_ulaw.so", RTLD_LAZY);
    if(!codec){
         cerr<<"cannot load library: "<< dlerror() <<'\n';
    }
diff --git a/src/audio/audiortp.cpp b/src/audio/audiortp.cpp
index dbf7a5aeaa5e9259df786b6f88f9c7c449d03ad5..d71c7268a5b6d62fc3e63e5d0145319bb8c954b6 100644
--- a/src/audio/audiortp.cpp
+++ b/src/audio/audiortp.cpp
@@ -259,16 +259,16 @@ AudioRtpRTX::loadCodec(int payload)
 
 	switch(payload){
 	  case 0:
-            handle_codec = dlopen("codec_ulaw.so", RTLD_LAZY);
+            handle_codec = dlopen("libcodec_ulaw.so", RTLD_LAZY);
 	    break;
 	  case 3:
-	    handle_codec = dlopen("codec_gsm.so", RTLD_LAZY);
+	    handle_codec = dlopen("libcodec_gsm.so", RTLD_LAZY);
 	    break;
 	  case 8:
-	    handle_codec = dlopen("codec_alaw.so", RTLD_LAZY);
+	    handle_codec = dlopen("libcodec_alaw.so", RTLD_LAZY);
 	    break;
 	  case 97:
-            handle_codec = dlopen("codec_ilbc.so", RTLD_LAZY);
+            handle_codec = dlopen("libcodec_ilbc.so", RTLD_LAZY);
 	    break;
 	}
 
diff --git a/src/iaxvoiplink.cpp b/src/iaxvoiplink.cpp
index 517e32ff075bfa373b5f510d6e299baefb6fe351..7eb33facddb7fe7f3bd0812957964af1a23b7f89 100644
--- a/src/iaxvoiplink.cpp
+++ b/src/iaxvoiplink.cpp
@@ -236,16 +236,16 @@ IAXVoIPLink::loadCodec(int payload)
    switch(payload)
    {
      case 0:
-       handle_codec = dlopen("codec_ulaw.so", RTLD_LAZY);
+       handle_codec = dlopen("libcodec_ulaw.so", RTLD_LAZY);
        break;
      case 3:
-       handle_codec = dlopen("codec_gsm.so", RTLD_LAZY);
+       handle_codec = dlopen("libcodec_gsm.so", RTLD_LAZY);
        break;
      case 8:
-       handle_codec = dlopen("codec_alaw.so", RTLD_LAZY);
+       handle_codec = dlopen("libcodec_alaw.so", RTLD_LAZY);
        break;
      case 97:
-       handle_codec = dlopen("codec_ilbc.so", RTLD_LAZY);
+       handle_codec = dlopen("libcodec_ilbc.so", RTLD_LAZY);
        break;
    }
    if(!handle_codec){