diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index abfc99b3ebe482e97cb06a3525953ff739484418..d39f198899dbdb34651e75276cb0927582d7fc8e 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -221,7 +221,7 @@ ManagerImpl::outgoingCall (const std::string& accountid, const CallID& id, const
     Call::CallConfiguration callConfig;
     SIPVoIPLink *siplink;
 
-    _debug ("ManagerImpl::outgoingCall() method \n");
+    _debug ("ManagerImpl::outgoingCall(%s)\n", id.c_str());
 
     if (getConfigString (HOOKS, PHONE_NUMBER_HOOK_ENABLED) ==  "1")
         _cleaner->set_phone_number_prefix (getConfigString (HOOKS, PHONE_NUMBER_HOOK_ADD_PREFIX));
@@ -282,7 +282,8 @@ ManagerImpl::outgoingCall (const std::string& accountid, const CallID& id, const
 bool
 ManagerImpl::answerCall (const CallID& id)
 {
-    bool isActive = false;
+
+    _debug("ManagerImpl::answerCall(%s)", id.c_str());
 
     stopTone (true);
 
@@ -455,8 +456,7 @@ ManagerImpl::onHoldCall (const CallID& id)
 
     call_id = id;
 
-    if(participToConference(id))
-	removeParticipant(id);
+    switchCall (id);
 
     /* Direct IP to IP call */
 
@@ -500,11 +500,13 @@ ManagerImpl::offHoldCall (const CallID& id)
     call_id = id;
     //Place current call on hold if it isn't
 
-    if (hasCurrentCall()) {
+    if (hasCurrentCall() ) {
         _debug ("Put the current call (ID=%s) on hold\n", getCurrentCallId().c_str());
         onHoldCall (getCurrentCallId());
     }
 
+    switchCall(id);
+
     /* Direct IP to IP call */
     if (getConfigFromCall (id) == Call::IPtoIP) {
         rec = SIPVoIPLink::instance (AccountNULL)-> isRecording (id);
@@ -535,7 +537,7 @@ ManagerImpl::offHoldCall (const CallID& id)
 
     }
 
-    switchCall (id);
+    // switchCall (id);
 
     codecName = getCurrentCodecName (id);
     // _debug("ManagerImpl::hangupCall(): broadcast codec name %s \n",codecName.c_str());