diff --git a/configure.ac b/configure.ac
index 10310953d8f7a35039d3d0fbd67f77c4814fbf5e..8b0e10a50fc5394f5d35b813aa88e5b7932e8db0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -148,6 +148,7 @@ sflphone.spec \
 sflphoned-fedora.spec \
 Makefile \
 src/Makefile \
+src/sflphone \
 src/audio/Makefile \
 src/audio/gsm/Makefile \
 src/audio/pacpp/Makefile \
diff --git a/src/Makefile.am b/src/Makefile.am
index 705794de16efad0f6fe5d75bf6202984952ae009..9c497591a49be152bc0cea4039de059949ea5e1c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,5 @@
-bin_PROGRAMS = sflphoned
+libexec_PROGRAMS = sflphoned
+bin_SCRIPTS = sflphone
 
 if USE_ZEROCONF
 ZEROCONFDIR = zeroconf
diff --git a/src/global.h b/src/global.h
index 268be3db2650dd5e81cb88c5573c6369be08d1dd..22b59e440cf963304f1c11ea8aa54ab1be35fee3 100644
--- a/src/global.h
+++ b/src/global.h
@@ -44,10 +44,11 @@ typedef short int16;
 #define SFLPHONED_VERSION "0.5"
 #define SFLPHONED_VERSIONNUM 0x000500
 
-#define PROGNAME				"sflphoned"
-#define PROGDIR         "sflphone"
-#define RINGDIR					"ringtones"
-#define CODECDIR				"codecs"
+#define PROGNAME         "sflphoned"
+#define PROGNAME_GLOBAL  "sflphone"
+#define PROGDIR          "sflphone"
+#define RINGDIR          "ringtones"
+#define CODECDIR         "codecs"
 
 #define MONO					1
 #define CHANNELS				2
diff --git a/src/gui/server/request.h b/src/gui/server/request.h
index 37c54915169ae5d745d3dd9548ebb7525f871ce0..f41675637d89ef1bac114461e0e443ac7b0544fe 100644
--- a/src/gui/server/request.h
+++ b/src/gui/server/request.h
@@ -71,8 +71,8 @@ public:
       iter = _argList.begin();
       if (iter != _argList.end() && iter->length() != 0) {
         _callId = *iter;
-        iter++;
         // last arg is the destination
+        iter++;
         if (iter != _argList.end()) {
           _destination = *iter;
           argsAreValid = true;
diff --git a/src/gui/server/requestconfig.cpp b/src/gui/server/requestconfig.cpp
index 490792b19bd64d8ed4bace940ec90ccd6f2b77be..6b75a34ad6248f779ce9b6b54fb11002b973de1f 100644
--- a/src/gui/server/requestconfig.cpp
+++ b/src/gui/server/requestconfig.cpp
@@ -95,7 +95,7 @@ RequestConfigGet::RequestConfigGet(const std::string &sequenceId, const TokenLis
   if (iter != _argList.end()) {
     _section = *iter;
     _argList.pop_front();
-    iter++;
+    iter = _argList.begin();
     if (iter != _argList.end()) {
       _name = *iter;
       _argList.pop_front();
@@ -128,11 +128,11 @@ RequestConfigSet::RequestConfigSet(const std::string &sequenceId, const TokenLis
   if (iter != _argList.end()) {
     _section = *iter;
     _argList.pop_front();
-    iter++;
+    iter = _argList.begin();
     if (iter != _argList.end()) {
       _name = *iter;
       _argList.pop_front();
-      iter++;
+      iter = _argList.begin();
       if (iter != _argList.end()) {
         _value = *iter;
         _argList.pop_front();
diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index de32f5a56476c2d40f8a2d05e39d7de0a1ee1186..4aaa0ac2ed32da44f4c3825783310cdd1598feea 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -816,6 +816,46 @@ ManagerImpl::peerHungupCall (CALLID id)
   return 1;
 }
 
+/**
+ * Multi Thread
+ */
+void
+ManagerImpl::callBusy(CALLID id) {
+  _debug("%10d: Call is busy\n", id);
+  playATone(Tone::TONE_BUSY);
+  ost::MutexLock m(_mutex);
+  Call* call = getCall(id);
+  if (call != 0) {
+    call->setState(Call::Busy);
+  }
+  deleteCall(id);
+  call->setState(Call::Hungup);
+
+  removeCallFromCurrent(id);
+}
+
+/**
+ * Multi Thread
+ */
+void
+ManagerImpl::callFailure(CALLID id) {
+  _debug("%10d: Call failed\n", id);
+  playATone(Tone::TONE_BUSY);
+  _mutex.enterMutex();
+  Call* call = getCall(id);
+  if (call != 0) {
+    call->setState(Call::Error);
+  }
+  _mutex.leaveMutex();
+  if (_gui) {
+    _gui->callFailure(id);
+  }
+  deleteCall(id);
+  call->setState(Call::Hungup);
+
+  removeCallFromCurrent(id);
+}
+
 /**
  * SipEvent Thread
  * for outgoing call, send by SipEvent
@@ -996,38 +1036,6 @@ ManagerImpl::ringtone()
   }
 }
 
-/**
- * Multi Thread
- */
-void
-ManagerImpl::callBusy(CALLID id) {
-  _debug("%10d: Call is busy\n", id);
-  playATone(Tone::TONE_BUSY);
-  ost::MutexLock m(_mutex);
-  Call* call = getCall(id);
-  if (call != 0) {
-    call->setState(Call::Busy);
-  }
-}
-
-/**
- * Multi Thread
- */
-void
-ManagerImpl::callFailure(CALLID id) {
-  _debug("%10d: Call failed\n", id);
-  playATone(Tone::TONE_BUSY);
-  _mutex.enterMutex();
-  Call* call = getCall(id);
-  if (call != 0) {
-    call->setState(Call::Error);
-  }
-  _mutex.leaveMutex();
-  if (_gui) {
-    _gui->callFailure(id);
-  }
-}
-
 AudioLoop*
 ManagerImpl::getTelephoneTone()
 {
diff --git a/src/sipvoiplink.cpp b/src/sipvoiplink.cpp
index ffb6239403cd093d9e2bd66d1daa199c5587aae8..aa1643ed3c6dfa8781ebb5cd0738518eb6529e8a 100644
--- a/src/sipvoiplink.cpp
+++ b/src/sipvoiplink.cpp
@@ -97,7 +97,7 @@ SipVoIPLink::init(void)
    _debug("VoIP Link listen on port %d\n", DEFAULT_SIP_PORT);
   }
   // Set user agent
-  std::string tmp = std::string(PROGNAME) + "/" + std::string(SFLPHONED_VERSION);
+  std::string tmp = std::string(PROGNAME_GLOBAL) + "/" + std::string(SFLPHONED_VERSION);
   eXosip_set_user_agent(tmp.data());
 
   // If use STUN server, firewall address setup
@@ -806,6 +806,14 @@ SipVoIPLink::getEvent (void)
   case EXOSIP_CALL_RELEASED:
     if (event) {
       _debug("SIP call released: [cid = %d, did = %d]\n", event->cid, event->did);
+      id = findCallId(event);
+      if (id!=0) {
+        // not supposed to be execute on a current call...
+        _debug("send a call failure...");
+        Manager::instance().callFailure(id);
+        deleteSipCall(id);
+      }
+
     }
     //id = findCallId(event);
     //if (id!=0) {
@@ -843,10 +851,12 @@ SipVoIPLink::getEvent (void)
       //Manager::instance().displayError(event->response->reason_phrase);
       Manager::instance().displayErrorText(id, event->response->reason_phrase);
       Manager::instance().callFailure(id);
+      deleteSipCall(id);
     break;
     case BUSY_HERE:
       Manager::instance().displayErrorText(id, event->response->reason_phrase);
       Manager::instance().callBusy(id);
+      deleteSipCall(id);
       break;
     case REQ_TERMINATED:
       break;
diff --git a/utilspp/functor/Makefile.am b/utilspp/functor/Makefile.am
index a34251953fd3b5fccae3ad40c894d316a2f84712..0ca9eff77d01187ddd28ab87c57383c4a5e7921b 100644
--- a/utilspp/functor/Makefile.am
+++ b/utilspp/functor/Makefile.am
@@ -1,9 +1,9 @@
-pkginclude_HEADERS = \
-	Binder.hpp Binder.inl \
-	FunctorHandler.hpp \
-	Functor.hpp \
-	FunctorImpl.hpp \
-	Functor.inl \
-	MemFunHandler.hpp
+#pkginclude_HEADERS = \
+#	Binder.hpp Binder.inl \
+#	FunctorHandler.hpp \
+#	Functor.hpp \
+#	FunctorImpl.hpp \
+#	Functor.inl \
+#	MemFunHandler.hpp
 
-pkgincludedir=$(includedir)/utilspp/functor
+#pkgincludedir=$(includedir)/utilspp/functor
diff --git a/utilspp/singleton/Makefile.am b/utilspp/singleton/Makefile.am
index 7f8091d27318796938506c9e3ba1778bd6d51640..0488bfec1b67429864f4fac8f0f6bb12fa91a521 100644
--- a/utilspp/singleton/Makefile.am
+++ b/utilspp/singleton/Makefile.am
@@ -10,14 +10,14 @@ libsingleton_la_SOURCES = \
 	SingletonHolder.hpp SingletonHolder.inl 
 
 
-pkginclude_HEADERS = \
-	CreationStatic.hpp CreationStatic.inl \
-	CreationUsingNew.hpp CreationUsingNew.inl \
-	LifetimeDefault.hpp LifetimeDefault.inl \
-	LifetimeLibrary.hpp LifetimeLibrary.inl \
-	LifetimeWithLongevity.hpp LifetimeWithLongevity.inl \
-	PrivateMembers.hpp PrivateMembers.inl \
-	SingletonHolder.hpp SingletonHolder.inl 
+#pkginclude_HEADERS = \
+#	CreationStatic.hpp CreationStatic.inl \
+#	CreationUsingNew.hpp CreationUsingNew.inl \
+#	LifetimeDefault.hpp LifetimeDefault.inl \
+#	LifetimeLibrary.hpp LifetimeLibrary.inl \
+#	LifetimeWithLongevity.hpp LifetimeWithLongevity.inl \
+#	PrivateMembers.hpp PrivateMembers.inl \
+#	SingletonHolder.hpp SingletonHolder.inl 
 
-pkgincludedir=$(includedir)/utilspp/singleton
+#pkgincludedir=$(includedir)/utilspp/singleton